多个构建配置是否可以共享一个配置转换



我正在使用SlowCheetah对项目中的一堆配置文件进行XML转换。

然而,这个相同的解决方案是负载平衡设置的一部分,其中不同服务器之间的一些配置值不同(在本例中为两个)。

我有以下构建配置

  • 调试
  • Release
  • 释放测试
  • 释放.Prod1
  • 释放.Prod2

Release.Prod1和Release.Prod2中的几乎所有内容都是相同的,除了其中一个配置文件中的一些值。有没有办法让像Something.Release.Prod.Config这样的文件在这两个构建配置中都使用,而不是有两个相同的文件(Something.Release.Prod1.ConfigSomething.Release.Prod2.Config)?

并详细说明:在这种情况下,我将部署到两个环境,因此一个重复的文件实际上并不是一个巨大的危机。如果你有十台或一百台服务器怎么办?我看不出为什么使用CI服务器(在本例中特别是TeamCity)的设置不能做到这一点,尽管我认为在这种环境中更自定义的设置很常见。

通常是如何处理的?

我想我可以在实际转换发生之前,作为构建步骤,对文件进行一些神奇的来回复制,但这似乎是一个混乱且过于复杂的解决方案。

配置转换由TransformsFiles.target文件中的$(configuration)变量处理。

<TransformXml Source="@(_FilesToTransformNotAppConfig->'%(FullPath)')"
Transform="%(RelativeDir)%(Filename).$(Configuration)%(Extension)"
Destination="@(_FilesToTransformNotAppConfig->'$(OutDir)%(RelativeDir)%(Filename)%(Extension)')"
Condition=" Exists('%(RelativeDir)%(Filename).$(Configuration)%(Extension)') " />

在这里,您可以将$(Configuration)更改为任何其他值,如"Environment"。然后只需在MSBuild参数-中设置"Environment"变量

/p:Environment=Prod

这应该允许您保留构建设置并独立进行转换。

相关内容

最新更新