5

我正在使用SlowCheetah进行XML转换项目中的一堆配置文件。多个构建配置可以共享一个配置转换吗?

然而,这种相同的解决方案是一个负载均衡设置,其中的一些配置值的不同服务器之间不同(2,在这种情况下)的一部分。

我有以下建立CONFIGS

  • 调试
  • 发布
  • Release.Test
  • Release.Prod1
  • Release.Prod2

几乎一切都在释放。 Prod1和Release.Prod2是相同的,除了一些值i n其中一个配置文件。有什么办法,我可以有一个像Something.Release.Prod.Config文件要在这两个构建CONFIGS的不是有两个完全相同的文件(Something.Release.Prod1.ConfigSomething.Release.Prod2.Config)的使用?

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

这是如何处理一般?

我想我可以做的文件一些神奇的复制来回的生成步骤的实际转变发生之前,但是这似乎是一个凌乱和过于复杂的解决方案。

+0

的东西,我们正试图在这里弄清楚,以及... T4模板正在酝酿,但我特别不喜欢他们。我比较喜欢的配置改造,但希望它超出调试和发行版本..就像你正在试图找出 –

+1

扩展超出调试和发布是容易的,这只是从生成增加更多的构建CONFIGS =>构建配置菜单。让他们中的一些共享一个文件,但是... –

回答

1

转化通过在TransformsFiles.targets文件中的$(配置)变量处理的配置。

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

在这里,你可以改变$(配置)是任何其他值,如 “环境”。然后,只需设置“环境”变量在你的MSBuild ARGS -

/p:Environment=Prod 

这应该让你保持你的构建设置和独立完成你的转换。