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

Windows services 如何让我的Windows服务解决方案使用VSTS构建生成工件?,windows-services,azure-devops,azure-pipelines,topshelf,Windows Services,Azure Devops,Azure Pipelines,Topshelf,我在VisualStudioTeamServices中有一个构建定义(也称为VisualStudioOnline?老实说,我不确定它的正确名称),它没有生成工件,我也不确定为什么。解决方案文件中的主要项目是使用TopShelf构建的Windows服务。我怀疑Visual Studio生成任务中的MSBuild参数可能是错误的。我从一个正在运行的MVC项目的构建定义中复制了它们,但我突然想到它们可能不适用于Windows服务 这是: /p:DeployOnBuild=true /p:WebPub

我在VisualStudioTeamServices中有一个构建定义(也称为VisualStudioOnline?老实说,我不确定它的正确名称),它没有生成工件,我也不确定为什么。解决方案文件中的主要项目是使用TopShelf构建的Windows服务。我怀疑Visual Studio生成任务中的MSBuild参数可能是错误的。我从一个正在运行的MVC项目的构建定义中复制了它们,但我突然想到它们可能不适用于Windows服务

这是:

/p:DeployOnBuild=true 
/p:WebPublishMethod=Package 
/p:PackageAsSingleFile=true 
/p:SkipInvalidConfigurations=true     
/p:PackageLocation="$(build.artifactstagingdirectory)\\"
我有一个复制文件任务和一个发布构建工件任务,但显然
$(Build.artifactstagindirectory)\\
是空的。我得到这个警告:

##[警告]目录“d:\a\1\a”为空。不会向构建工件添加任何内容

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

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


这就是我所能提供的所有相关信息。我是不是离基地太远了?我过去使用过Octopus Deploy,我知道我必须在我的服务上安装Octopack。我需要在这里执行类似的操作吗?

您不需要任何MSbuild参数;其中大多数应用于ASP.NET项目,对控制台应用程序没有任何作用


将它们全部替换为
/p:OutDir=$(Build.ArtifactStagingDirectory)
。这将告诉MSBuild将生成输出放在工件暂存目录中

是的,就是这样。如果我可以再问一个问题,你是怎么知道的?在查找MSBuild参数时,我的GoogleFu显然是不足的,我希望将来有一个参考。