【问题标题】:TFS build deploy is failingTFS 构建部署失败
【发布时间】:2018-01-22 20:29:59
【问题描述】:

我的解决方案有 5 个项目,tfs build 运行良好。我遇到的问题是当我设置在成功构建时从 tfs 部署时。它在错误的项目而不是我的启动项目中寻找发布配置文件。请帮忙。

ScreenShot

更新:- 所以我最终能够在构建过程中找到导致问题的原因并在 tfs 中发布。我的解决方案中添加的每个项目都是 Web 应用程序。每个项目在 .csproj 文件中都有这些设置<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" /> <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> </Target>。一旦我在其他应用程序中注释掉了这些,使用我的发布配置文件的 tfs 构建/发布就不会寻找我在发布配置文件中提到的配置文件。感谢您的帮助帕特里克。

【问题讨论】:

  • 你能解释清楚一点吗?您正在使用网络应用程序吗? TFS 版本正在使用您的构建工件进行部署。根据您的描述,您的构建工件似乎有问题。
  • 另外,如果你在本地使用Visual Studio进行发布,结果是什么?
  • @PatrickLu-MSFT 对不起,如果我没有清楚地解释自己。是的,我正在使用 MVC6 中的 Web 应用程序,并且我的 VS 发布到服务器工作正常。这些是我的构建参数 /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation=$(build.stagingDirectory) /p:Configuration=$(BuildConfiguration) /p:CreatePackageOnPublish=true /p:DeployOnBuild=true /p:PublishProfile=$(PublishProfile).
  • 这是我得到的错误 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets (4359, 5) PublishProfile 的值设置为“DEVAPP1DEBUG.pubxml”,预计会在“D:\Agents\xyz1-5_work\19\s\proj.Domain\Properties\PublishProfiles\DEVAPP1DEBUG.pubxml”找到文件,但找不到.相反,它应该只在项目中寻找。

标签: visual-studio tfs


【解决方案1】:

建议您先手动远程远程到您的构建代理,并仔细检查构建代理的路径是否有相应的DEVAPP1DEBUG.‌​pubxml 文件。

根据您的描述,您的构建工件可能有问题,以进行部署。建议您尝试这种方式,查看构建定义的 TFS 选项,当您必须为定义选择模板时,您可以看到构建和部署两个选项,尝试使用部署选项:

默认情况下,MSBuild Arguments 中的参数是:/p:OutDir="$(build.binariesdirectory)\\"

在该文件夹中,您应该拥有部署所需的一切。

【讨论】:

  • @PatrickLu_MSFT 我尝试关注此*.com/questions/16891530/…,因为它与我遇到的问题相同,但仍然出现错误。这是屏幕截图i.stack.imgur.com/L01hg.png
  • @SandillioSandy 这可能与您的发布配置文件名称有关。仔细检查一下看看这个线程中的评论:johandorper.com/log/publish-multiple-webprojects-on-build 抱歉,无法重现您的问题,如果您直接使用 msbuild 命令在构建代理中手动构建和发布您的解决方案,而不是通过 TFS 构建,结果会怎样定义。如果问题与 TFS 构建方面有关,这将缩小范围。
  • @SandillioSandy "我的解决方案有很多 Web 项目。我可以构建解决方案并部署单个 Web 项目吗?" "您可以设置不同名称的发布配置文件。例如,制作一个发布配置文件“SingleDeploymentProjectA”,其中 ProjectA 是您要部署的单个项目的名称。然后您可以有一个 TFS 构建定义来构建它们,它使用您的标准化“开发”发布配置文件名称,然后一个用于发布的单个部署配置文件是“SingleDeploymentProjectA””