TFS msbuild 参数/p :DeployOnBuild=true doesn't seem to do anything

标签 tfs msbuild msdeploy

我目前正在使用 TFS 和常规构建过程事件来构建解决方案。但是,我希望能够自动化部署,以便我可以一步构建并远程部署到服务器。

在 MSBuild 参数上,我试图指定部署开关。我的项目是 Windows 服务,但我知道无论项目类型如何(不是 Web 项目),仍然可以部署任何二进制文件。

当前构建参数:

/p:DeployOnBuild=True /p:UserName=user /p:Password=password

当构建在 TFS 中运行时它会成功,但是我希望看到一些部署到服务器的尝试和一些有用的错误消息,但没有任何显示。

最佳答案

为了将来引用,我已经找到了为 Web 服务/项目以外的任何内容启用部署所需的内容。原因 DeployOnBuild 参数对 web 项目以外的任何事情都不做任何事情,因为项目文件需要包含 webapplication.targets 还有一个 属性(property)集团包含 的路径VSToolsPath .

此处的链接很好地介绍了 Web 部署的工作原理以及如何将其集成到我的项目中以部署服务:

http://www.asp.net/web-forms/tutorials/deployment/web-deployment-in-the-enterprise/building-and-packaging-web-application-projects

  • 要将参数传递到 MSBuild,您需要在项目属性文件夹下的 PublishProfiles 文件夹内有一个 .pubxml 文件(称为发布配置文件)。
  • 我在 .csproj 文件中需要以下内容:
    <PropertyGroup>
        <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
        <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
      </PropertyGroup>
    
      <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
      <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
      <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
    
  • 如果您需要 MSDeploy 的同步前/同步后命令,很遗憾,这在 MSBuild 中不可用。要实现此功能,您需要在项目根文件夹中有一个 X.Wpp.Targets(其中 X 是您的项目名称)。
    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <Target Name="UninstallService" BeforeTargets="MSDeployPublish">    
          <!-- Do exec tasks here -->
      </Target>
    
      <Target Name="InstallService" AfterTargets="MSDeployPublish">    
          <!-- Do exec tasks here -->            
      </Target>
    </Project>
    
  • 关于TFS msbuild 参数/p :DeployOnBuild=true doesn't seem to do anything,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18618467/

    相关文章:

    msdeploy - 使用 ASP.NET 4.5 发布配置文件时如何参数化部署?

    git - 从 Visual Studio 外部访问 TFS git 存储库总是提示输入用户名和密码

    tfs - 获取一组在特定日期后被修改的文件

    tfs - 如何搜索仍在 Refinement 中的 TFS 项目?

    msbuild - 为什么这个 Albacore msbuild 任务在 TeamCity 中失败?

    msbuild - 使用 MSBuild,如何通过迭代 ItemGroup 中的文件来构造动态字符串?

    MsDeploy.exe ERROR_FILE_IN_USE 错误 - 八达通部署

    msdeploy - 如果注册表项不存在,如何阻止 MSDeploy regKey 提供程序失败

    git - TFS GIT Pull 请求报告?

    .net - MSBuild:通过 Zip/Copy 任务添加/复制空文件夹