2014-02-06 3 views
0

У меня есть сильная именованная сборка AssemblyA. Я хочу ссылаться на AssemmblyB, который не сильно назван. Каков наилучший способ сделать это?Динамическая загрузка неподписанной сборки из подписанной сборки

Я видел несколько примеров загрузки AssemblyB в отдельный AppDomain, но я столкнулся с некоторыми проблемами. Ниже то, что я попытался (этот код внутри AssemblyA):

var domain = AppDomain.CreateDomain("NewDomainName"); 
var pathToDll = @"\\myDLLs\AssemblyB.dll"; 
var tmp = domain.CreateInstanceFromAndUnwrap(pathToDll, TYPE_NAME); 

Теперь, я не уверен, что использовать для TYPE_NAME. Я хочу, чтобы иметь возможность использовать несколько разных типов из AssemblyB, поэтому я уверен, что здесь я ошибаюсь.

Другое дело, что я даже не могу ссылаться на AssemblyB от AssemblyA, потому что, как только я это сделаю, AssemblyA не сможет построить из-за сильного имени/отсутствия сильного несоответствия имени.

Должен ли я как-то ссылаться на AssemblyB из нового, неподписанного проекта?

В основном цель состоит в том, чтобы иметь доступ к AssemblyB, поскольку я просто ссылался на него напрямую.

Спасибо.

+0

1) Убедитесь, что вызывающее приложение разрешает запуск неподписанных сборок. Возможно, вы можете сделать это во время выполнения, а затем только динамически загружать AssemblyB, когда приложение работает нормально. См. Assembly.Load(): http://msdn.microsoft.com/en-us/library/system.reflection.assembly.load%28v=vs.110%29.aspx –

ответ

0
  1. Любое имя пользователя TYPE_NAME, к которому вы хотите подключиться, должно быть удалено. Проверка AppDomain.CreateInstanceAndUnwrap

  2. Ожидается, что не будут предоставлены ссылочные неподписанные сборки из подписанных сборок. В противном случае он превзошел бы цель иметь подписанную в первую очередь сборку А.

Смежные вопросы