«Не проверяемый код не прошел проверку политики» для сборки с закрытым исходным кодом - PullRequest
2 голосов
/ 10 апреля 2010

Я пытаюсь динамически загрузить некоторые (приобретенные) сборки из потоков ресурсов в программе на C # во время процедуры установки MSI, но я получаю «Проверка политики при проверке непроверяемого кода».

Я прочитал несколько советов в Интернете о компиляции встроенной сборки с помощью / clr: safe, но у меня нет такой возможности. Есть ли способ обойти эту проверку политики?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 10 апреля 2010

Единственный способ загрузить непроверяемый код - это процесс полного доверия (или, возможно, домен приложения) с отключенной проверкой.

РЕДАКТИРОВАТЬ: Я не придумываю это, один из разработчиков языка C # сказал: «Непроверяемый код требует полного доверия, и его, как правило, следует избегать»

1 голос
/ 04 июня 2014

Уже слишком поздно, но это может кому-то помочь.

Я использовал Sqlite DLL в своем проекте, и когда я развернул код в среде песочницы, я получил исключение (см. Ниже)

[FileLoadException: Unverifiable code failed policy check. (Exception from HRESULT: 0x80131402)]

[FileLoadException: Could not load file or assembly 'System.Data.SQLite, Version=1.0.79.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or one of its dependencies. Unverifiable code failed policy check. (Exception from HRESULT: 0x80131402)]

Я добавил уровень доверия в system.web в файле web.config и все работает нормально.

<trust level="Full|High|Medium|Low|Minimal" originUrl="url"/> 
1 голос
/ 22 апреля 2011

Возможно, это больше не актуально, но я недавно столкнулся с той же проблемой. Если вы берете поток и вставляете его во временный файл, вы можете использовать Assembly.LoadFrom для загрузки сборки.

...