1

NuGet 包,例如CodeAssassin.ConfigTransform转换web.*.configapp.*.configweb.*.config.transformedapp.*.config.transformed在 VS 构建时。

但是,如果您有 form 的配置文件{arbitrary-name}.config怎么办?

例如,MyAssembly.dll.config它的变换规则集MyAssembly.dll.debug.config&MyAssembly.dll.release.config

CodeAssassin.ConfigTransform似乎不适用于这些文件模式。

4

2 回答 2

0

免责声明:在此示例中,我直接修改了 CodeAssassin.ConfigTransform.targets。但是您应该创建一个单独的 .targets 文件并在您的 .csproj 中引用它。

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

.transformed 文件

于 2013-01-18T16:21:48.713 回答
0

如果您查看目标源代码,修改它以允许转换任何 .config 文件看起来非常简单。实际上我认为应该可以转换任何 XML 文件。

明天我将分叉该存储库并对此进行试验。

于 2012-10-09T14:31:32.020 回答