【问题标题】:MSDeploy after TFS Build not firingTFS 构建后 MSDeploy 未触发
【发布时间】:2013-06-13 20:43:35
【问题描述】:

我正在尝试在 TFS 构建成功后开始部署。我正在向 MSBuild Arguments 提供以下参数

/P:AllowUntrustedCertificate=True /p:DeployOnBuild=True
/p:DeployTarget=MsDeployPublish /p:CreatePackageOnPublish=True
/p:MSDeployPublishMethod=WMSVC
/p:MSDeployServiceUrl=https://server.test.com
/p:DeployIisAppPath="网站" /p:UserName=用户名 /p:密码=密码

构建运行顺利,但是部署从未真正发生。在我的 Drop 文件夹中,添加了一个名为 _PublishedWebsites 的临时文件夹,但该文件夹的内容不会推送到 Web 服务器。

我的构建服务器上安装了 WebDeploy 3.0,以及 VS 2012 和 TFS 2012。我可以使用 WebDeploy 通过 VS 2012 在我的本地实例上毫无问题地发送部署。我不确定我错过了什么,但它必须是触发部署的小东西。

【问题讨论】:

  • 您是否运行了日志记录设置为 11(详细诊断)的构建,这应该会告诉您发生了什么:)
  • @DaveShaw 你是怎么做到的?
  • 当你“排队一个新的构建”时,点击“参数”选项卡并将“记录详细程度”设置为“诊断”。
  • @DaveShaw 懒我一问就发现了。我应该寻找什么?通过这些步骤,它执行“复制”任务到 _PublishedSites 目录,但它从不调用发布任务
  • 您将需要 MSBuild 日志,应该有一个链接可以在 Build Log / Drop 文件夹的某处打开它。

标签: c# visual-studio-2012 webdeploy


【解决方案1】:

我遇到了这个问题,我的 Bin 可以很好地构建和部署,但在 Drop 树中不会创建任何网站。尝试了几天的很多东西,最后得出了一个对项目文件的更改作为解决方案。

要部署的我的网站最初是 VS2008 中的 WebSite 项目,后来在 VS2012 中转换为 WebApplication 项目。在 csproj 文件(和/或 vbproj 文件)中,我找到了以下部分:

<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

我将其替换为以下内容,我从一个新创建的 MVC 应用程序中收集到:

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
  <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
  </Target>

这会定义变量并设置构建目标,以便自动构建拾取它们。不知道为什么 WebApplication 转换过程会错过这些。如果您的项目不是 VB,请确保将“VisualBasic”替换为“CSharp”。此外,您可能需要使用 v10.0 而不是 v11.0,具体取决于构建服务器的配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-28
    • 2018-11-20
    • 2018-02-07
    • 2012-08-18
    • 1970-01-01
    • 2010-09-16
    • 2018-10-18
    • 2020-02-26
    相关资源
    最近更新 更多