Вопрос

У меня есть одна сборка, которая уже создана, скажем Static.dll, и динамическая сборка, которую я создаю во время выполнения, скажем Dynamic. Dynamic создает некоторый IL-код для создания нового типа из Static.dll.Когда Dynamic создается (он успешно сохраняется), исполняемый файл при запуске выдает ошибку, поскольку ему не удается загрузить сборку Static.dll тип.Я полагаю, что это происходит с тех пор, как Dynamic вывод exe не может найти эту библиотеку dll (или, по крайней мере, это мое предположение).

Как можно выполнить добавление в этом Static.dll ссылка, чтобы, когда кто-то запускал результирующий исполняемый файл, выводимый из Dynamic что он может найти указанные типы?

Я знаю о Assembly.Load(), но само по себе это ничего не меняет.Или, по крайней мере, я не уверен, что это мне дает, поскольку мне не нужно использовать тип во время выполнения, а скорее при запуске Dynamic выполнимый.

Наконец, я контролирую Static.dll, поэтому, если есть что-то, что я могу сделать с проектом, чтобы исправить это, это можно было бы сделать, однако оно должно оставаться отдельным (я не хочу выделять эту библиотеку при каждом создании динамической сборки).По сути, я думать Я хочу, чтобы моя динамическая сборка имела .assembly extern mscorlib в его манифесте сохраните Static является местом расположения mscorlib.

Спасибо

Это было полезно?

Решение

Как можно выполнить добавление в этом Static.dll ссылка, чтобы, когда кто-то запускал результирующий исполняемый файл, выводимый из Dynamic что он может найти указанные типы?

Ссылка будет добавлена автоматически.Обратите внимание, что при выполнении вашей динамической сборки применяются обычные правила проверки сборки, поэтому для того, чтобы найти сборку.Вы должны (один из):

  • корабль static.dll рядом dynamic.dll
  • внесите static.dll в GAC (но, пожалуйста:не делай этого!)
  • запуск dynamic.dll в пользовательском домене приложения с пользовательским пробники-путь конфигурации, что позволяет static.dll быть найден
  • обрабатывать домен приложения.AssemblyResolve для обеспечения static.dll
  • используйте что-то вроде ILMerge для слияния static.dll и dynamic.dll
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top