CodeAssassin.ConfigTransform для файлов конфигурации с произвольными именами

Пакеты 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 не работает для этих шаблонов файлов.


person BaltoStar    schedule 02.10.2012    source источник


Ответы (2)


Если вы посмотрите на целевой исходный код, он выглядит довольно его просто изменить, чтобы можно было преобразовать любой файл .config. На самом деле я думаю, что преобразование любого файла XML должно быть возможным.

Завтра я разветвлю этот репозиторий и поэкспериментирую с ним.

person Tomasz Pluskiewicz    schedule 09.10.2012

Отказ от ответственности: в этом примере я изменил 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>

Соберите, и ваши файлы .transform будут созданы.

.преобразованные файлы

person Lee Harold    schedule 18.01.2013