ソリューションにコンソール プロジェクトとクラス ライブラリ プロジェクトがあります。ライブラリ プロジェクトは、私のデータ アクセス レイヤー (DAL) です。また、DAL で NHibernate と NET Persistenc API を使用しています。
NHibernate には Iesi.Collections.dll が必要なため、このアセンブリ (コンソール プロジェクトの bin フォルダーに存在する) をロードしているときに、次のエラーが発生しました。
An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.
しかし、次の構成を app.config ファイルに追加すると、Iesi.Collections.dll が正常に読み込まれました。
<runtime>
<loadFromRemoteSources enabled="true" />
</runtime>
これで、DAL をテストするために NUnit テスト フレームワークをセットアップしました。このために、新しいクラス ライブラリ プロジェクトを作成しました。問題は、Iesi.Collections.dll の読み込み中に上記のエラーが再び発生することです。ここで、loadFromRemoteSources 構成をテスト プロジェクトに追加して、ネットワーク経由でアセンブリを読み込めるようにする必要があります。しかし、私のテストプロジェクトはライブラリプロジェクトであるため、構成ファイルの構成セクションの下にある行をたどるにはどうすればよいですか (クラスライブラリプロジェクトには構成ファイルがないため)。
<runtime>
<loadFromRemoteSources enabled="true" />
</runtime>
更新: 次の app.config をテスト プロジェクト (クラス ライブラリ プロジェクト) に明示的に追加しました。
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<appSettings>
<add key="serviceUrl" value="test value" />
</appSettings>
<runtime>
<loadFromRemoteSources enabled="true" />
</runtime>
</configuration>
そして、次のコード行を使用して、テスト プロジェクトと DAL の両方でキー "serviceUrl" 値にアクセスします。
string strVal = System.Configuration.ConfigurationSettings.AppSettings["serviceUrl"];
しかし、それでも Iesi.Collections.dll をロードできず、以前と同じエラーが発生します。