CodeAssassin.ConfigTransform用于任意命名的配置文件 [英] CodeAssassin.ConfigTransform for of arbitrarily named config files

查看:121
本文介绍了CodeAssassin.ConfigTransform用于任意命名的配置文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在VS构建时,将诸如CodeAssassin.ConfigTransformweb.*.configapp.*.config转换为web.*.config.transformedapp.*.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),&quot;(?i)^ConnectionString\.&quot;))' == 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆