【发布时间】:2026-02-16 21:00:02
【问题描述】:
我正在使用 MsBuild 和 TransformXml 任务来设置一些 web.config 文件。这一切都很好,但现在我想在 xml 转换中扩展一个 MSBuild 属性。
为了更清楚,我使用 itemgroup 批处理 TransformXml 任务,为配置不同的多个网站进行多次转换:
<PropertyGroup>
<WebsiteTargetDirectory>$(MSBuildProjectDirectory)\BUILD\</WebsiteTargetDirectory>
</PropertyGroup>
<ItemGroup>
<WebsitesToBeCopied Include="CH;DE;EN">
<InProject>false</InProject>
</WebsitesToBeCopied>
</ItemGroup>
<target name="CreateWebConfigs">
<TransformXml
Source="$(MSBuildProjectDirectory)\Web.Template.config"
Transform="$(MSBuildProjectDirectory)\Web.%(WebsitesToBeCopied.Identity).config"
Destination="$(WebsiteTargetDirectory)\%WebsitesToBeCopied.Identity)\Web.config"
/>
</target>
这工作得很好,但如果有可能在转换中获得一些 MSBuild 属性,我可以省去几行和转换。例如,我需要将“DE”、“EN”或“CH”附加到属性值,最好在模板中简单地使用占位符,而不是为每个 web.config 编写转换。
有没有办法实现这一点,如果有,那将如何工作?
【问题讨论】:
-
我自己找到了一个解决方法。在 TransformXml 完成之后,我可以在第二步中使用 MSBuildExtensionPack 中的 Detokenize 任务将变量放入文件中。
-
你现在应该可以回答了。两天后你就可以选择它作为正确答案了。
标签: msbuild properties xslt