【问题标题】:How to parametrize DeployIisAppPath Msbuild argument in Tfs Build如何在 Tfs Build 中参数化 DeployIisAppPath Msbuild 参数
【发布时间】:2014-08-10 21:13:10
【问题描述】:

我正在使用 Tfs 2012 构建/部署我们的 Asp.Net Web 应用程序。我们有一个构建定义,它构建了 5 个解决方案(.sln 文件)。这就是我们的 MsBuild 参数的样子:

/p:DeployOnBuild=True /p:AllowUntrustedCertificate=True /p:DeployIisAppPath="Test"         /p:DeployTarget=MsDeployPublish /p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=WMSVC /p:MSDeployServiceUrl="https://{server}:8172/msdeploy.axd" /p:UserName="{user}" /p:Password="{password}"

我需要使用此构建定义通过 Web Deploy 部署所有 5 个站点。当然,除了 DeployIisAppPath 之外,它们共享所有参数。它适用于 1 个解决方案,但对于 1 个以上的解决方案,我需要为每个解决方案输入不同的 DeployIisAppPath,以便每个解决方案都部署到 IIS 中的正确站点。

我已经检查了这些问题和其他文档,但还没有运气:

Running a build against multiple projects with different build arguments

Continuous deployment with multiple website projects in solution

How to pass TFS variable to a MSBuild task of the project

TFS2010 Build Definition to Deploy to multiple servers?

我尝试将参数作为属性传递给每个 sln 的 {siteName}.Web.csproj 作为属性。

我们将不胜感激。

【问题讨论】:

  • 以防万一有人像我一样遇到这个问题,并且在 VS2010 而不是 2012 中工作。我的解决方案是停止覆盖 msbuild 参数,只需在“打包/发布 web”选项卡中配置它Web 项目属性。在“Web 部署包设置”下,有一个名为“要在目标服务器上使用的 IIS 网站/应用程序名称”的设置。我想知道在 2012 年删除这些设置的理由是什么。

标签: msbuild tfsbuild webdeploy


【解决方案1】:

其中一种可能的方法是提供您自己的一组参数。比方说,我们称它们为DeployIisAppPath_OneDeployIisAppPath_Two 等。无论您使用什么名称,只要它们是独一无二的。

然后,对需要部署的每个项目文件进行小幅编辑。在第一个 <PropertyGroup> 部分中,添加以下行。例如。在第一个项目中,添加

<DeployIisAppPath Condition="'$(DeployIisAppPath_One)' != ''">$(DeployIisAppPath_One)</DeployIisAppPath>

在第二个项目中,同样:

<DeployIisAppPath Condition="'$(DeployIisAppPath_Two)' != ''">$(DeployIisAppPath_Two)</DeployIisAppPath>

对您要部署的所有项目重复此操作。现在,您的新命令行将如下所示:

msbuild ... /p:DeployIisAppPath_One="MySite/one" /p:DeployIisAppPath_Two="MySite/two" ...

【讨论】:

  • 嗨,这就像一个魅力:-)。感谢您抽出宝贵时间回复。
【解决方案2】:

您应该将发布配置文件添加到解决方案中的每个 Web 项目。之后,您可以设置以下构建参数:

/p:DeployOnBuild=True
/p:PublishProfile=Development
/p:Password=password-of-your-deploy-user-as-earlier-entered-with-publish-profile

重要的是 /p:PublishProfile,它必须是之前创建的发布配置文件的名称。现在,在构建时,MSBuild 将查找发布配置文件(在本例中为“开发”)并使用它来发布网站。

完整指南:http://www.johandorper.com/log/publish-multiple-webprojects-on-build

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2014-04-09
    • 2012-12-24
    • 2017-11-30
    • 1970-01-01
    • 2023-02-21
    • 2018-04-19
    • 2019-08-30
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多