的NuGet软件包,如CodeAssassin.ConfigTransform
变换分析web.*.config
或app.*.config
到web.*.config.transformed
或app.*.config.transformed
在一个VS建立。
但是,如果你有形式的配置文件{arbitrary-name}.config
?
例如, MyAssembly.dll.config
及其变换规则集MyAssembly.dll.debug.config
& MyAssembly.dll.release.config
CodeAssassin.ConfigTransform
不会出现这些文件模式工作。
如果你看一下目标的源代码 ,它看起来很简单的修改,以允许任何config文件进行改造。 其实我认为,将任何XML文件应该是可能的。
我将叉该仓库的明天,并与此实验。
免责声明:在这个例子中,我直接修改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文件。