我正在使用 SlowCheetah 进行 XML 转换项目中的一堆配置文件。
但是,这个相同的解决方案是负载平衡设置的一部分,其中不同服务器(在本例中为两个)之间的某些配置值有所不同。
我有以下构建配置
- Debug
- Release
- 发布.测试
- 发布.Prod1
- 发布.Prod2
除了其中一个配置文件中的某些值之外,Release.Prod1 和 Release.Prod2 中的几乎所有内容都是相同的。有什么办法可以让我拥有像这样的文件Something.Release.Prod.Config
用于这两个构建配置,而不是有两个相同的文件(Something.Release.Prod1.Config
and Something.Release.Prod2.Config
)?
...并详细说明:在这种情况下,我正在部署到two环境,因此一个重复的文件并不是真正的巨大危机。如果您有十台或一百台服务器怎么办?我认为没有理由使用 CI 服务器(在本例中具体为 TeamCity)进行设置不能执行此操作,尽管我认为在此类环境中更常见的自定义设置很常见。
通常如何处理这种情况?
我想我可以在实际转换发生之前对文件进行一些神奇的来回复制作为构建步骤,但这似乎是一个混乱且过于复杂的解决方案。
配置转换由 TransformsFiles.targets 文件中的 $(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 args 中设置“环境”变量 -
/p:Environment=Prod
这应该允许您保留构建设置并独立进行转换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)