Используйте плагин SlowCheetah .Дополнительные параметры и подробные сведения о том, как использовать SlowCheetah, продолжайте читать.
Как вы уже заметили, не существует стандартного и простого способа использования различных файлов конфигурации для Тип библиотеки (.dll) проект.Причина в том, что нынешнее мышление таково: «Вам не нужно»!Разработчики Framework считают, что вам нужна конфигурация для исполняемого файла: будь то консоль, рабочий стол, веб, мобильное приложение или что-то еще.Если вы начнете предоставлять конфигурацию для dll , у вас может получиться то, что я могу назвать config hell .Вы, возможно, больше не понимаете (легко), почему эта и эта переменные имеют такие странные значения, исходящие, казалось бы, из ниоткуда.
«Держись», - вы можете сказать, «но мне это нужно для моей интеграции / модульного тестирования,и это библиотека! "И это правда, и это то, что вы можете сделать (выберите только один, не смешивайте):
1.SlowCheetah - преобразует текущий файл конфигурации
. Вы можете установить SlowCheetah - плагин Visual Studio, который выполняет все низкоуровневые разбивки (или преобразования) XML.Кратко о том, как это работает:
- Установите SlowCheetah и перезапустите Visual Studio (Visual Studio> Инструменты> Расширения и обновления ...> Онлайн> Галерея Visual Studio> поиск "Медленный гепард")
- Определите свои конфигурации решения (по умолчанию Debug и Release ), вы можете добавить больше (щелкните правой кнопкой мыши по решению в Solution Explorer > Диспетчер конфигурации ... > Конфигурация активного решения > Новый ...
- При необходимости добавьте файл конфигурации
- Щелкните правой кнопкой мыши на файле конфигурации> Добавить преобразование
- Это создаст файлы преобразования - один для вашей конфигурации
- Файлы преобразования работают как инжекторы / мутаторы, они находят необходимый код XML висходный конфигурационный файл и вводить новые строки или изменять нужное значение, что бы вы ни сказали:
2. Скрипт с файлом .proj - копирование-переименование всего нового файла конфигурации
Первоначально взято from здесь .Это пользовательская задача 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 проект и конфигурация Debug , в папке вывода после сборки вы найдете PatternPA.Test.Integration.dll.файл конфигурации , который был скопирован с 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>