TFS构建 - 部署/打包目标未运行

3
我们已经设置了一个TFS构建定义,其中我们传递以下额外的MSBuild参数:
/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;_PackageTempDir="\\server\build";AutoParameterizationWebConfigConnectionStrings=false

这已经在其他地方详细描述了,作为一种将发布文件复制到特定位置而不是生成部署包的方法。

然而,在我们的构建服务器上,这种方法不起作用。但是,如果我在我的开发机器上运行与TFS调用的完全相同的msbuild命令行,则它完美地工作并将输出文件复制到该位置。

我已经检查了日志文件,没有错误,它似乎完全跳过了发布/部署步骤。

Done building target "_BuiltWebOutputGroupOutput" in project "xyz.csproj".
Target "PrepareForRun" in file "c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets" from project "C:\Builds\2\xyz\xyz build\Sources\xyz.Web\xyz.Web.csproj" (target "CoreBuild" depends on it):

然而,在我的本地机器上,运行_BuiltWebOutputGroupOutput目标后,包目标会正确运行和部署文件。

我已经尝试使用不同的路径甚至在项目文件中设置属性,但似乎没有任何区别。我的本地解决方案和项目文件与TFS构建使用的存储库相同。是否有一些配置相关的问题,在我们的构建服务器或构建代理上,导致打包目标无法运行?


你尝试在构建机器上运行相同的MSBuild命令了吗?您的开发环境和构建机器的MSBuild版本是否匹配? - Duat Le
MSBuild版本在两台机器上都是相同的-4.0.30319.1。.NET Framework版本也是相同的。我已经在构建服务器上手动运行了各种选项的msbuild,并获得了相同的结果,但PackageTempDir被忽略了。 - Rowan
在构建机上,MSBuild 以“Network Service”帐户运行,这可能会产生影响。我还要验证TFS Build是否正在构建与命令行上构建的相同配置和平台。最后,您是否检查了来自TFS构建的MSBuild日志文件? - Jim Lamb
以网络服务运行并没有什么不同。我使用相同的配置和平台运行 - 基本上是从构建日志中复制了MSBuild命令并在本地运行,内容被成功部署,但在构建服务器上却没有发生。MSBuild日志文件没有透露太多信息 - 没有任何错误,它只是没有调用在本地进行部署时调用的目标。这不是一个很大的问题,因为我已经在构建工作流程中放置了一个复制命令来解决它,但它有点让人沮丧,因为它不起作用。 - Rowan
1个回答

2
我今天遇到了类似的问题,并找到了解决办法,可能对你也有帮助。请参考这里

1
重新审视了这个问题,针对另一个项目,你提供的解决方案解决了我的问题——我在构建服务器上缺少 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web 文件夹,该文件夹包含发布所需的目标。 - Rowan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接