181

この例外ハンドラを終了しようとしています:

if (ConfigurationManager.ConnectionStrings["ConnectionString"]==null)
{
    string pathOfActiveConfigFile = ...?
    throw new ConfigurationErrorsException(
       "You either forgot to set the connection string, or " +
       "you're using a unit test framework that looks for  "+
       "the config file in strange places, update this file : " 
       + pathOfActiveConfigFile);
}

この問題は、nUnit を使用しているときにのみ発生するようです。

4

8 に答える 8

375

これを試して

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
于 2009-04-27T14:18:03.907 に答える
9

NUnitを使用したときにnullが返されるだけの場合は、アプリケーションのapp.configのConnectionString値をテストライブラリのapp.configにコピーする必要があります。

テストローダーによって実行されると、テストアセンブリは実行時に読み込まれ、アプリケーションの構成ファイルではなく、独自のapp.config(コンパイル時にtestAssembly.dll.configに名前が変更されます)を参照します。

実行しているアセンブリの場所を取得するには、

System.Reflection.Assembly.GetExecutingAssembly().Location
于 2009-04-27T14:13:19.690 に答える
3

設定ファイルの場所によっては、System.Reflection.Assembly.GetExecutingAssembly().Location必要なことを実行できる場合があります。

于 2009-04-27T14:14:04.320 に答える
3

以前の回答の 1 つを Web アプリ (実際にはローカルで実行されている Azure Web ロール) で試しましたが、うまくいきませんでした。ただし、この同様のアプローチは機能しました。

var map = new ExeConfigurationFileMap { ExeConfigFilename = "MyComponent.dll.config" };
var path = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None).FilePath;

構成ファイルは、C:\Program Files\IIS Express\MyComponent.dll.config にあることが判明しました。興味深い場所です。

于 2014-06-17T21:03:23.767 に答える