CodeAssassin.ConfigTransform为任意命名的配置文件(CodeAssassi

2019-10-17 07:17发布

的NuGet软件包,如CodeAssassin.ConfigTransform变换分析web.*.configapp.*.configweb.*.config.transformedapp.*.config.transformed在一个VS建立。

但是,如果你有形式的配置文件{arbitrary-name}.config

例如, MyAssembly.dll.config及其变换规则集MyAssembly.dll.debug.configMyAssembly.dll.release.config

CodeAssassin.ConfigTransform不会出现这些文件模式工作。

Answer 1:

如果你看一下目标的源代码 ,它看起来很简单的修改,以允许任何config文件进行改造。 其实我认为,将任何XML文件应该是可能的。

我将叉该仓库的明天,并与此实验。



Answer 2:

免责声明:在这个例子中,我直接修改CodeAssassin.ConfigTransform.targets。 但是,你应该在你的.csproj创建一个单独的文件.targets和参考这一点。

添加ConnectionString.config(作为一个例子),然后添加变换。

这增加了.targets文件(你的配置名称只是必须匹配正则表达式的表达- (?i)^ConnectionString\.在这种情况下):

<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文件。



文章来源: CodeAssassin.ConfigTransform for of arbitrarily named config files