如何让我的Windows服务解决方案使用VSTS Build生成工件?

问题描述:

我在Visual Studio Team Services(a.k.a. Visual Studio Online?我不太确定它的名字是否正确)没有生成工件,我真的不知道为什么。解决方案文件中的主要项目是使用TopShelf构建的Windows服务。我怀疑Visual Studio构建任务中的MSBuild参数可能是错误的。我从正在工作的MVC项目的构建定义中复制了它们,但是我发现它们可能不适用于Windows服务。如何让我的Windows服务解决方案使用VSTS Build生成工件?

在这里,他们是:

/p:DeployOnBuild=true 
/p:WebPublishMethod=Package 
/p:PackageAsSingleFile=true 
/p:SkipInvalidConfigurations=true  
/p:PackageLocation="$(build.artifactstagingdirectory)\\" 

我有一个复制文件的任务和发布以后生成工件任务的过程中,但显然$(build.artifactstagingdirectory)\\是空的。我收到此警告:

## [警告]目录'd:\ a \ 1 \ a'为空。没有什么会被添加到构建神器

奇怪的是,在我发布符号的过程中的另一个任务,一切似乎顺利结束。

还有一点:我正在使用托管构建代理。不知道这件事是否重要。

这就是我能想到的所有相关信息。我在这里基地?我过去使用过Octopus Deploy,我知道我必须在我的服务上安装Octopack。我需要在这里做类似的事吗?

你不需要任何这些MSbuild参数;其中大部分适用于ASP .NET项目,并且对控制台应用程序无效。

全部替换为/p:OutDir=$(Build.ArtifactStagingDirectory)。这将告诉MSBuild将构建输出放入工件登台目录中。

+0

是的,就是这样。如果我可能会问一个后续问题,你是怎么知道的?在查找MSBuild参数时,我的Google-fu显然缺乏,我希望将来有一个参考。 – FishBasketGordo