同様の問題がありました。これは私がしたことです:
私の 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 とチーム ビルドの両方でコンパイルできます。