На днях было придумано вот что: держать в проекте не один базовый конфигурационный файл, а 2: для отладки и продакшена соответственно, как показано на открывающем пост рисунке. Это обусловлено тем, что все наши конфигурации можно разделить на 2 группы: отладочные и боевые, и в пределах одной группы многие параметры полностью совпадают, поэтому их можно вынести в базовый файл, тем самым еще больше упростив файлы трансформации (App.Debug.config и т.д.).
При этом я предлагаю следовать таким соглашениям:
- App.Dev.config - полноценный конфигурационный файл для отладки приложения, применения XML-трансформаций к нему не предусмотрено;
- Соответственно, в App.Debug.config - пусто (что отмечено на рисунке);
- Если для тестирования нужна другая БД, в App.Test.config переопределяем нужный параметр, и т.п.
А реализовать это достаточно просто. Для App.config нам необходимо вручную создать и добавить файлы трансформации (здесь и далее редактируем файл проекта *.csproj):
<None Include="App.Debug.config">
<DependentUpon>App.config</DependentUpon>
</None>
Затем добавить уже знакомое нам указание трасформировать конфиг перед сборкой, выбрав необходимые конфигурации в атрибуте Condition:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\WebApplications\Microsoft.WebApplication.targets" />
<Target Name="BeforeBuild">
<TransformXml
Condition="'$(Configuration)' == 'Debug'
OR '$(Configuration)' == 'Test'"
Source="App.Dev.config"
Transform="App.$(Configuration).config"
Destination="App.config" />
</Target>
И вновь, рассказывать дольше, чем делать!Полноценный пример на Github, завел там новый аккаунт по имени-фамилии, ура!
Комментариев нет:
Отправить комментарий