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

How do I get my Windows service solution to produce an artifact with VSTS Build?

我在 Visual Studio Team Services 中有一个构建定义(a.k.a。Visual Studio 在线?老实说,我不太确定它的正确名称)没有生成神器,我真的不知道为什么。解决方案文件中的主要项目是使用 TopShelf 构建的 Windows 服务。我怀疑 Visual Studio 构建任务中的 MSBuild 参数可能是错误的。我从正在运行的 MVC 项目的构建定义中复制了它们,但我发现它们可能不适用于 Windows 服务。

他们在这里:

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

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

##[warning]Directory 'd:\a\a' is empty. Nothing will be added to build artifact

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

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

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

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

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