В статье "Убираем зависимость приложения от Entity Framework" была упомянута необходимость создания файла конфигурации для сборки (assembly). Как правило, для отладки или публикации проекта, требуется изменять значения параметров в зависимости от настройки компиляции и цели публикации.
В случае с build-сервером есть возможность дописать соответствующие команды в build-скрипт. Но что делать при локальной компиляции или публикации с компьютера разработчика? "Из коробки" Visual Studio не поддерживает трансформации для App.config.
Для решения данной проблемы воспользуемся инструментом SlowCheetah, который состоит из:
Установка дополнения не обязательная. Оно никак не влияет на процесс компиляции и трансформации. Его задача – просто автоматизировать настройку проекта. Кроме того оно предоставляет возможность заранее увидеть результат преобразований в режиме предварительного просмотра. Все это доступно через контекстное меню файлов конфигураций и трансформаций в Solution Explorer (пункты Add Tramsform и Preview Transform).
Модификация проекта сборки
В проекте сборки (например для работы с базой данных) создадим файл App.config. Важно помнить, что после трансформации этот файл будет преобразован в [ProjectName].dll.config (например SomeProject.DataAccess.dll.config). Именно это имя необходимо использовать, если в приложение самостоятельно загружает данные из конфигурации.
В зависимости от того, установлено ли расширение, есть два варианта дальнейших действий:
- Создадим все необходимое (библиотеку, файлы трансформации) с помощью расширения SlowCheetah. Для этого нужно выбрать пункт Add Transform в контекстном меню файла App.config.
- В проект сборки самостоятельно добавим файлы трансформаций (App.Debug.config, App.Release.config) и установим пакет SlowCheetah с помощью NuGet:
PM> Install-Package SlowCheetah -ProjectName [AssemblyProjectName]
Изменения в отлаживаемом и/или публикуемом проекте
Так же нужно подключить пакет SlowCheetah и в проект запускаемого (публикуемого) приложения:
PM> Install-Package SlowCheetah -ProjectName [AppProjectName]
Теперь можно задать параметры конфигурации и необходимые для них трансформации. Настройка завершена.