Тест CompileAssemblyFromSource подписывает сборку

У меня есть служба Windows, написанная на C#. Он динамически генерирует код C# и компилирует их в сборки как abc.dll, xyz.dll и т. Д. Эти сборки позже загружаются для выполнения. При компиляции я передаю /keyfile: mykeyfile.snk"в качестве одного из параметров компилятора классу System.CodeDom.Compiler.CompilerParameters. Теперь проблема: некоторые из этих сборок не загружаются из-за сбоя проверки строгого имени.

Я получил сгенерированные сборки из тестовой системы, и когда я проверяю их с помощью sn, exe, я вижу, что примерно 1 из 6 сборок имеет задержку или подписан тестом. Запуск sn.exe -v xyz.dll дает мне xyz.dll - сборка с подписью с задержкой или с тестовой подписью. Очевидно, что он не сможет загрузить.

Почему некоторые сборки не подписаны должным образом?

1 ответ

Решение

Я смог решить ее, поделившись ею с пользой для всех. Причиной проблемы является то, что компиляция представляет собой двухэтапный процесс. Компилятор сначала создает dll, а затем пытается его подписать. См. http://msdn.microsoft.com/en-us/library/yh7ks237(v=vs.90).aspx

DLL все еще будет там, и никто не заметит, что его тест подписан, пока не попытается загрузить его. У меня был 1 файл подписи, xyz.snk, который был заблокирован в другом потоке.

Другие вопросы по тегам