0

次のようなセットアップを実行するための最良の方法は何かお尋ねしたいと思います: コンパイル済みのテスト スイートがあり、app.config ファイルには、さまざまなデータベースへの 6 ~ 7 個の異なる接続文字列があります。すべての接続に対してテストスイートを実行したいと思います。このプロセスを何らかの方法でパラメータ化したいと考えていました。接続の名前を設定して、パラメータとしてテストランに渡すようなものです。これまでにわかったことは、さまざまな localconfigrun ファイルを使用でき、展開項目を介して必要な値を xml/txt ファイルにフィードできるということですが、より適切で軽量なソリューションはありますか? キーと値のペアまたは単純な文字列を送信して、テスト スイート内で基本クラスを構成するだけです。

私は tfsbuild を使用していますが、他の環境 (純粋な msbuild など) でも mstest を使用できます。

前もって感謝します。

4

1 に答える 1

1

同様の問題がありました。これは私がしたことです:

私の 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 とチーム ビルドの両方でコンパイルできます。

于 2009-05-28T04:39:15.717 に答える