Використовуйте плагін SlowCheetah . Щоб отримати додаткові параметри та детальну інформацію про використання SlowCheetah, читайте.
Як ви вже помітили, не існує за замовчуванням і простого способу використання різних конфігураційних файлів для проекту типу бібліотеки (.dll) . Причина полягає в тому, що сучасне мислення полягає в тому, що "вам не потрібно"! Розробники рамок вважають, що вам потрібна конфігурація виконуваного файлу: будь то консоль, настільний ПК, веб, мобільний додаток чи щось інше. Якщо ви почнете надавати конфігурацію для dll , ви можете закінчити щось, що я можу назвати конфиг пеклом . Ви більше не можете зрозуміти (легко), чому ці та інші змінні мають такі дивні значення, що здаються нізвідки.
"Тримайся", - ви можете сказати, "але мені це потрібно для моєї інтеграції / тестування одиниць, і це бібліотека!". І це правда, і ось що ви можете зробити (виберіть лише один, не змішуйте):
1. SlowCheetah - перетворює поточний файл конфігурації
Ви можете встановити SlowCheetah - плагін Visual Studio, який робить усі тики (або перетворення) XML низького рівня для вас. Спосіб роботи, коротко:
- Встановіть SlowCheetah та перезапустіть Visual Studio (Visual Studio> Інструменти> Розширення та оновлення ...> Інтернет> Visual Studio Gallery> пошук "Повільний гепард")
- Визначте конфігурації рішення ( налагодження та випуск за замовчуванням є), ви можете додати більше (клацніть правою кнопкою миші на рішення в Провіднику рішень > Менеджер конфігурацій ... > Конфігурація активного рішення > Нове ...
- Додати необхідний конфігураційний файл
- Клацніть правою кнопкою миші на конфігураційний файл> Додати перетворення
- Це створить файли трансформації - по одному на вашу конфігурацію
- Файли трансформації працюють як інжектори / мутатори, вони знаходять потрібний XML-код у вихідному конфігураційному файлі та вводять нові рядки або мутують необхідне значення, як би ви не говорили.
2. Fiddle з .proj-файлом - скопіюйте-перейменуйте цілком новий конфігураційний файл
Спочатку взято звідси . Це звичайне завдання MSBuild, яке можна вставити у файл Visual Studio .proj . Скопіюйте та вставте наступний код у файл проекту
<Target Name="AfterBuild">
<Delete Files="$(TargetDir)$(TargetFileName).config" />
<Copy SourceFiles="$(ProjectDir)\Config\App.$(Configuration).config"
DestinationFiles="$(TargetDir)$(TargetFileName).config" />
</Target>
Тепер створіть папку в проекті під назвою Config
та додайте туди нові файли: App.Debug.config , App.Release.config тощо. Тепер, залежно від конфігурації, Visual Studio вибере конфігураційний файл із Config
папки та скопіює його та перейменує у вихідний каталог. Отже, якщо у вас був обраний проект PatternPA.Test.Integration та конфігурація налагодження , у папці виводу після збірки ви знайдете файл PatternPA.Test.Integration.dll.config, який було скопійовано Config\App.Debug.config
та перейменовано згодом.
Ось деякі примітки, які ви можете залишити у конфігураційних файлах
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- This file is copied and renamed by the 'AfterBuild' MSBuild task -->
<!-- Depending on the configuration the content of projectName.dll.config
is fully substituted by the correspondent to build configuration file
from the 'Config' directory. -->
</configuration>
У Visual Studio ви можете мати щось подібне
3. Використовуйте сценарії файлів поза Visual Studio
Кожен інструмент збирання (як NAnt , MSBuild ) надасть можливості трансформувати конфігураційний файл залежно від конфігурації. Це корисно, якщо ви будуєте своє рішення на машині складання, де вам потрібно мати більше контролю над тим, що і як ви готуєте продукт до випуску.
Наприклад, ви можете використовувати завдання dll для веб-публікації для перетворення будь-якого конфігураційного файла
<UsingTask AssemblyFile="..\tools\build\Microsoft.Web.Publishing.Tasks.dll"
TaskName="TransformXml"/>
<PropertyGroup>
<!-- Path to input config file -->
<TransformInputFile>path to app.config</TransformInputFile>
<!-- Path to the transformation file -->
<TransformFile>path to app.$(Configuration).config</TransformFile>
<!-- Path to outptu web config file -->
<TransformOutputFile>path to output project.dll.config</TransformOutputFile>
</PropertyGroup>
<Target Name="transform">
<TransformXml Source="$(TransformInputFile)"
Transform="$(TransformFile)"
Destination="$(TransformOutputFile)" />
</Target>