Загрузите сборку, которой нет в GAC или каталоге bin веб-приложения, используя имя сборки, а не путь - PullRequest
2 голосов
/ 14 июля 2011

У меня есть DLL, которая находится в каталоге XYZ. Есть ли способ загрузить эту DLL без указания пути?
Я знаю, что могу загрузить его, просто указав путь к dll, , но затем натолкнулся на довольно раздражающую проблему , которая заставляет меня скопировать эту dll в каталог bin моего приложения и загрузить ее, используя ее имя.
Я предпочел бы, однако, чтобы не было этой DLL в каталоге bin. Так есть ли способ загрузить сборку, используя ее имя, которое на самом деле не находится в каталоге GAC или bin?
Что я могу сделать, чтобы мое веб-приложение сканировало дополнительные каталоги для сборки?

Ответы [ 4 ]

4 голосов
/ 14 июля 2011

Возможно, вы захотите посмотреть исследование сборки

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="bin;bin2\subbin;bin3"/>
      </assemblyBinding>
   </runtime>
</configuration>

, а также проверить здесь: Как среда выполнения находит сборки: http://msdn.microsoft.com/en-us/library/15hyw9x3(v=VS.100).aspx

2 голосов
/ 14 июля 2011

Вы можете использовать элемент probing в вашем файле web.config.
Однако я сомневаюсь, что это решит вашу проблему в другом вопросе.

2 голосов
/ 14 июля 2011

Вы можете указать в app.config, где искать сборки.

<configuration>
    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="bin;bin2\subbin;bin3"/>
      </assemblyBinding>
   </runtime>
</configuration>
  • С помощью элемента Probing.
1 голос
/ 14 июля 2011

В качестве альтернативного подхода к ответам на основе конфигурации вы можете зарегистрироваться для события AppDomain.AssemblyResolve .

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

Это может быть более гибким, чем использование конфигурации, за счет некоторой дополнительной сложности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...