Добавление конфигурации в библиотечный проект 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 и получаю ту же ошибку, что и раньше.
1 ответ
Действительно ли файл загружен из сети, или вам нужно обойти другую раздражающую церемонию безопасности: http://www.hanselman.com/blog/RemovingSecurityFromDownloadedPowerShellScriptsWithAlternativeDataStreams.aspx