Добавление конфигурации в проект библиотеки C #

У меня есть проект консоли и проект библиотеки классов в решении. Проект библиотеки - это мой уровень доступа к данным (DAL), также я использую NHibernate и NET Persistenc API в моем DAL.

Поскольку Iesi.Collections.dll требуется для NHibernate, поэтому при загрузке этой сборки (которая присутствует в папке 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>

И я должен получить доступ к ключевому значению serviceUrl как в моем тестовом проекте, так и в DAL, используя следующую строку кода:

 string strVal = System.Configuration.ConfigurationSettings.AppSettings["serviceUrl"];

Но все же я не могу загрузить Iesi.Collections.dll и получаю ту же ошибку, что и раньше.


person Arry    schedule 04.11.2012    source источник


Ответы (1)


Действительно ли файл загружен из сети, или вам нужно обойти другую раздражающую церемонию безопасности: http://www.hanselman.com/blog/RemovingSecurityFromDownloadedPowerShellScriptsWithAlternativeDataStreams.aspx

person Oskar Berggren    schedule 04.11.2012
comment
Это сработало. Я просто зашел в свойства Iesi.Collections.dll из исследованного файла и разблокировал его. Спасибо..! - person Arry; 04.11.2012