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

时间:2017-09-27 23:18:03

标签: windows-services azure-devops azure-pipelines topshelf

我在Visual Studio Team Services中有一个构建定义(也就是Visual Studio Online?我真的不确定它的正确名称),它不会产生工件,我真的不确定原因。解决方案文件中的主项目是使用TopShelf构建的Windows服务。我怀疑Visual Studio Build任务中的MSBuild参数可能是错误的。我从一个正在运行的MVC项目的构建定义中复制它们,但我发现它们可能不适用于Windows服务。

他们是:

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

我在此过程中有一个Copy Files任务和一个Publish Build Artifacts任务,但显然$(build.artifactstagingdirectory)\\是空的。我收到了这个警告:

  

## [警告]目录'd:\ a \ 1 \ a'为空。什么都不会被添加到构建工件

奇怪的是,在我发布符号的过程中的另一项任务中,一切似乎都顺利完成。

还有一点:我正在使用托管构建代理。不确定这是否重要。

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

1 个答案:

答案 0 :(得分:2)

您不需要任何MSbuild参数;其中大多数适用于ASP .NET项目,并且不会对控制台应用程序执行任何操作。

/p:OutDir=$(Build.ArtifactStagingDirectory)替换所有内容。这将告诉MSBuild将构建输出放在工件临时目录中。