在VS版本中NuGet包CodeAssassin.ConfigTransform
转换web.*.config
或app.*.config
到web.*.config.transformed
或app.*.config.transformed
。
但是,如果您有{arbitrary-name}.config
格式的配置文件,该怎么办?
例如,MyAssembly.dll.config
及其转换规则集MyAssembly.dll.debug.config
& MyAssembly.dll.release.config
CodeAssassin.ConfigTransform
似乎不适用于这些文件模式。
答案 0 :(得分:0)
如果查看target source code,修改它看起来很简单,以允许转换任何.config文件。实际上我认为应该可以转换任何XML文件。
我明天将把该存储库分叉并进行实验。
答案 1 :(得分:0)
免责声明:在此示例中,我直接修改了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),"(?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文件。