У меня была похожая проблема. Вот что я сделал:
Мой app.config выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="ConenctToInputDB" value="InputDev" />
<add key="ConnectToOutputDB" value ="OutputDev"/>
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<connectionStrings>
<add name="LocalConnection" connectionString="YOUR CONNECTION STRING HERE" />
<add name="InputDev" connectionString="YOUR CONNECTION STRING HERE" />
<add name="InputCert" connectionString="YOUR CONNECTION STRING HERE"/>
<add name="OutputDev" connectionString="YOUR CONNECTION STRING HERE/>
<add name="OutputCert" connectionString="YOUR CONNECTION STRING HERE" />
<add name="InputProd" connectionString="YOUR CONNECTION STRING HERE/>
<add name="OutputProd" connectionString="YOUR CONNECTION STRING HERE" />
</connectionStrings>
В этом сценарии у меня есть 2 дБ, к которым я подключаюсь, и у меня есть 3 разных строки подключения для каждой (Разработка, Сертификация и Производство)
Добавьте это в конец файла вашего проекта (щелкните проект правой кнопкой мыши и выгрузите его). Обязательно добавьте его перед тегом </project>
. (Для этого вам нужно будет установить Задачи Сообщества MSBuild. Их можно бесплатно загрузить по адресу: http://msbuildtasks.tigris.org/ (Убедитесь, что вы получаете ночные сборки))
<PropertyGroup>
<!--Import the MSBuild community tasks so we can update xml-->
<MSBuildCommunityTasksPath>C:\PathToMSBuildCommunityTasks\MSBuildTasks</MSBuildCommunityTasksPath>
<SubstitutionsFile Condition="'$(Configuration)' == 'Debug'">DevAppSettings.xml</SubstitutionsFile>
<SubstitutionsFile Condition="'$(Configuration)' == 'Cert'">CertAppSettings.xml</SubstitutionsFile>
<SubstitutionsFile Condition="'$(Configuration)' == 'Prod'">ProdAppSettings.xml</SubstitutionsFile>
</PropertyGroup>
<Import Project="C:\PathToMSBuildCommunityTasks\lib\MSBuildTasks\MSBuild.Community.Tasks.Targets" />
<Target Name="AfterBuild">
<!--Update the app config to have the correct environment paths-->
<Message Text="Updating $(MSBuildProjectName) config to $(Configuration)" Importance="high"></Message>
<XmlMassUpdate ContentFile="$(OutDir)\$(MSBuildProjectName).dll.config" SubstitutionsFile="..\..\$(SubstitutionsFile)" />
</Target>
Это заменит раздел <appSettings>
файла app.config в зависимости от текущей конфигурации. Вам нужно будет сделать новые новые конфигурации (я назвал их Cert и Prod).
Последний шаг - создать файл для каждой конфигурации (я назвал их DevAppConfig.xml, CertAppConfig.xml, ProdAppConfig.xml)
В каждом файле должен выглядеть так (это для конфигурации сертификации):
<?xml version="1.0" encoding="utf-8"?>
<!--This file is used by the build files to merge in solution wide app settings
Some projects contain files that have an AppSetting section (usually in App.config). Those projects have
and AfterBuild event in the project file that substitues this xml tree over the the normal xml tree.-->
<configuration xmlns:xmu="urn:msbuildcommunitytasks-xmlmassupdate">
<appSettings>
<add xmu:key="key" key="ConenctToInputDB" value="Cert"/>
<add xmu:key="key" key="ConnectToOutputDB" value="ESPCert"/>
</appSettings>
</configuration>
все это после установки приведет к автоматическому изменению файла, выводимого app.config, в зависимости от компилируемой вами конфигурации. Этот код работает как для компиляции в IDE, так и в Team Build.