CodeAssassin.ConfigTransform用于任意命名的配置文件 [英] CodeAssassin.ConfigTransform for of arbitrarily named config files
问题描述
在VS构建时,将诸如CodeAssassin.ConfigTransform
从web.*.config
或app.*.config
转换为web.*.config.transformed
或app.*.config.transformed
的NuGet软件包.
NuGet packages such as CodeAssassin.ConfigTransform
tranform web.*.config
or app.*.config
to web.*.config.transformed
or app.*.config.transformed
upon a VS build.
但是,如果您具有格式为{arbitrary-name}.config
的配置文件怎么办?
However, what if you have config files of form {arbitrary-name}.config
?
例如,MyAssembly.dll.config
及其转换规则集MyAssembly.dll.debug.config
& MyAssembly.dll.release.config
For example, MyAssembly.dll.config
and its transform rulesets MyAssembly.dll.debug.config
& MyAssembly.dll.release.config
CodeAssassin.ConfigTransform
似乎不适用于这些文件模式.
CodeAssassin.ConfigTransform
does not appear to work for these file patterns.
推荐答案
免责声明:在本示例中,我直接修改了CodeAssassin.ConfigTransform.targets.但是,您应该创建一个单独的.targets文件,并在.csproj中引用该文件.
Disclaimer: In this example I modified CodeAssassin.ConfigTransform.targets directly. But you should create a separate .targets file and reference that in your .csproj.
添加一个ConnectionString.config(作为示例),然后添加转换.
Add a ConnectionString.config (as an example) and then add the transforms.
将其添加到.targets文件中(您的配置名称只需与正则表达式匹配-在这种情况下为(?i)^ConnectionString\.
):
Add this to the .targets file (your config name just has to match the regex expression - (?i)^ConnectionString\.
in this case):
<Target Name="TransformAllConnectionStringConfigTransformFiles"
Condition="'$(WebProjectOutputDir)'!=''"
BeforeTargets="Compile">
<ItemGroup>
<ConnectionStringConfigTransformFile Include="@(None);@(Content)" Condition="'$([System.Text.RegularExpressions.Regex]::IsMatch(%(Filename),"(?i)^ConnectionString\."))' == true and '%(Extension)'=='.config'" />
</ItemGroup>
<TransformXml Source="ConnectionString.config" Destination="%(ConnectionStringConfigTransformFile.Identity).transformed" Transform="@(ConnectionStringConfigTransformFile)"
Condition="'@(ConnectionStringConfigTransformFile)'!=''" />
<CreateItem Include="%(ConnectionStringConfigTransformFile.Identity).transformed"
AdditionalMetadata="CopyToOutputDirectory=Always">
<Output TaskParameter="Include" ItemName="Content"/>
</CreateItem>
</Target>
生成,并创建.transformed文件.
Build, and your .transformed files are created.
这篇关于CodeAssassin.ConfigTransform用于任意命名的配置文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!