0

我在解决方案中有一个控制台项目和一个类库项目。库项目是我的数据访问层 (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>

现在我已经设置了 NUnit 测试框架来测试我的 DAL,为此我创建了一个新的类库项目。现在的问题是我在加载 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,并得到与以前相同的错误。

4

1 回答 1

0

文件真的是从网络加载的,还是您需要规避另一个烦人的安全仪式:http ://www.hanselman.com/blog/RemovingSecurityFromDownloadedPowerShellScriptsWithAlternativeDataStreams.aspx

于 2012-11-04T11:51:26.040 回答