Msbuild 需要有关工件路径中web配置转换的帮助吗

Msbuild 需要有关工件路径中web配置转换的帮助吗,msbuild,teamcity,transform,msdeploy,Msbuild,Teamcity,Transform,Msdeploy,我正在尝试按配置设置不同的工件路径。e、 g 在teamcity的常规设置中,我指定以下工件路径: testing\obj\Deploy-Dev\package testing\obj\Deploy-Test\package testing\obj\Deploy-Live\package 但当我使用以下内容发布网站时: /M /P:Configuration=%env.Configuration% /P:DeployOnBuild=True/P:DeployTarget=MSDeployPub

我正在尝试按配置设置不同的工件路径。e、 g

在teamcity的常规设置中,我指定以下工件路径:

testing\obj\Deploy-Dev\package
testing\obj\Deploy-Test\package
testing\obj\Deploy-Live\package
但当我使用以下内容发布网站时:

/M /P:Configuration=%env.Configuration% /P:DeployOnBuild=True/P:DeployTarget=MSDeployPublish /P:MsDeployServiceUrl=%env.TargetServer%/MsDeployAgentService /P:DeployiisAppPath=%env.IISPath% /P:MSDeployPublishMethod=RemoteAgent /P:CreatePackageOnPublish=True /P:Username=%env.username% /P:Password=%env.password%
在这一步中,我只使用1个配置。我假设通过指定这些工件路径。它还将根据指定的配置转换web配置。但它只是在实际包装时转换指定的一个


知道如何在所有包中转换web配置吗。

尝试为teamcity工件路径设置环境变量

正在测试\obj\%env.Configuration%\package


工件路径无论如何都不会影响构建/打包过程。它们只是提供了在构建后保留一些文件\文件夹以供进一步访问的功能


如果要生成3个不同的包,则需要在配置中指定3个相应的生成步骤,并删除“%env.configuration%”。

我不确定是否完全理解您的问题,但我认为您正在问以下问题。“如何创建包含所需的所有web.config转换的web包,以便将同一包发布到多个不同的环境?”

不幸的是,打包工作的方式是使用正在构建的构建配置的web.config转换来转换web.config。然后,转换后的web.config文件将其放入包中。转换文件未打包


我意识到创建一个包并将其发布到不同的位置是很重要的。我们无法将这些特性构建到这个盒子中,但我已经创建了一个NuGet包,它在这种情况下会有所帮助。我有一个5分钟的视频贴在那里,你可以看看。我相当肯定,这将有助于你的设想。仅供参考,软件包web的代码是开源的。我们有一些。如果您最终使用了它,请务必告诉我。

env.configuration变量将允许根据需要设置构建配置,并将包放置在该工件位置。@SoftwareCarpenter,是的,我知道%env.configuration%及其用途。但如果我理解正确,帖子所有者希望使用TeamCity上的单个构建生成3个不同的包,因为他做出了一个假设:“我假设通过指定这些工件路径。它还将根据指定的配置转换web配置。”。如果是这种情况,那么不清楚为什么我们需要%env.configuration%,因为我们实际上需要的只是硬编码3个配置名称。同样,我不确定我是否完全理解这个问题:)我同意你的看法。我的全部评论被打断了。我认为它要么打了三次电话,要么使用Sayed Ibrahim Hashimi解决方案。无论如何,这个问题有点让人困惑。@s.ermakovich,是的,这就是我想做的。我不只是创建一个包,而是希望所有的web配置也都被转换。e、 g用于开发、测试和实时配置。如果我只使用1个配置,那么它只转换特定的web配置。如果您知道其他推动发布配置的方法,请务必指导我。非常抱歉让人困惑。请看和“将参数传递到构建并部署到其他环境”部分,它将允许您通过传递参数并从Team City调用构建来创建3个包。否则,您将需要创建自己的msbuild.proj,它将被调用并调用所需环境的转换。我观看了视频,想知道如何将其集成到TFS的自动生成中?或者您只是在生成定义设置中生成所有配置。什么是最佳实践?它很容易自动化。从视频中的4:25开始看一看。您可以创建一个具有配置的.ps1文件(默认情况下,它会自动查找名为PublishConfiguration.ps1的文件。若要从TFS自动执行发布过程,您将使用powershell.exe调用脚本。若要使用名称不同于PublishConfiguration.ps1的配置文件,您只需在使用powershell.exe时将不同的文件路径作为参数传递。谢谢。这很好。)如果我在这方面还有任何问题,我会在你的博客上发表。