如何为web.config xdt转换添加PostBuild命令,以便在构建成功排队时,它将根据web.platform.config xdt命令转换web.config。
如果构建分支是例如OnlineManagement_Dev然后当我对这个分支进行排队时,转换应该基于web.debug.config进行。 如果构建分支是例如OnlineManagement_UAT然后当我排队这个分支时,转换应该基于web.UAT.config进行。 如果构建分支是例如OnlineManagement_PROD然后当我排队这个分支时,转换应该基于web.PROD.config进行。
我尝试查看下面的解决方案,但看起来像'TransformXml'任务有一个文件锁错误。是否有任何更新MSBuild提供了比这更简单和更好的解决方案?
http://www.diaryofaninja.com/blog/2011/09/14/using-custom-webconfig-transformations-in-msbuild
答案 0 :(得分:2)
1)FileLock" bug"在包含解决方法之前解释错误的部分中的代码示例中解决了这个问题。
2)您是否有环境变量和/或包含分支类型的MsBuild属性?如果是这样,只需使用它来确定来源。
e.g。
<TransformXml Source="web.UAT.config"
Transform="TransformFile.config"
Destination="Web.config"
StackTrace="true" />
使用包含此值的环境变量或MSBuild属性的名称更新Source。
<TransformXml Source="web.$(EnvironmentType).config"
Transform="TransformFile.config"
Destination="Web.config"
StackTrace="true" />
请注意,如果要从命令提示符构建并且已在环境变量中使用此命令,请将ENVIRONMENT_VARIABLE_NAME包装为此$(ENVIRONMENT_VARIABLE_NAME),并且MsBuild将识别它。