現在、2 つのプロジェクトがあります。1 つは標準の ASMX Web サービスで、もう 1 つはテスト プロジェクトです。Web サービス プロジェクトにはWeb.config
、接続文字列を含むファイルがあります。接続文字列を qa または production に変更する方法を認識しています。私の問題は、テスト プロジェクトの接続文字列を変更する方法がわからないことです。私が望むのは、テストに SQLite を使用することです。
これは、tests .csproj ファイルに追加したターゲット ファイルの外観です。
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ConnectionString>Data Source=:memory:</ConnectionString>
</PropertyGroup>
<Target Name="BeforeBuild"
DependsOnTargets="Clean" />
<Target Name="AfterBuild"
DependsOnTargets="UpdateConfigFileForEnvironment" />
<Target Name="UpdateConfigFileForEnvironment">
<PropertyGroup>
<AppConfigFileName>$(OutDir)Web.config</AppConfigFileName>
</PropertyGroup>
<FileUpdate
Files="$(AppConfigFileName)"
Encoding="ASCII"
Regex="ConnectionStringBuild"
ReplacementText="$(ConnectionString)" />
</Target>
</Project>
そしてWeb.config
、これが Web サービス プロジェクトのファイルです。内容は関係ないので割愛します。
<appSettings>
<add key="ConnectionString" value="ConnectionStringBuild" />
</appSettings>
VS2008 で ReSharper を介して単体テストを実行すると、AppSettings
エントリConnectionString
が何も返されないという問題が発生します。また、msbuild
テスト プロジェクトのコマンド ラインで実行すると、接続文字列が正常に更新されます。
テストの実行時に接続文字列を変更するにはどうすればよいですか?