Настройка разрешения пользовательской сборки для сборок, зависящих от библиотеки классов - PullRequest
1 голос
/ 07 ноября 2011

ОК, вот настройка:

  • VB6 .exe, который использует некоторые классы .Net.
  • Классы находятся в 5 .dll, но доступны через один видимый COMwrapper .dll
  • Используя манифест приложения, я могу сохранить оболочку видимого COM MyCOMVisibleWrapper.dll (и .tlb) в подпапке с именем MyCOMVisibleWrapper.
  • Я хотел бы также хранить зависимые .Net .dll в этой папке.
  • Однако CLR ищет эти .dll в папке, где находится исполняемый файл VB6, а не в папке, гдеОболочка .dll живет.

Как добавить папку MyCOMVisibleWrapper в путь разрешения?Я попытался включить файл MyCOMVisibleWrapper.dll.config с тегом <probing privatePath=MyComVisibleWrapper/>, но это не работает.Я читал о реализации AssemblyResolve EventHandler, но я не уверен, куда его поместить, поскольку код .Net не имеет главной точки входа.

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011

Необходимо создать файл конфигурации с именем MyVB6App.exe.config, который имеет следующее содержимое:

    <configuration> 
     <runtime>
       <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <probing privatePath="MyCOMVisibleWrapper"/>
       </assemblyBinding>
     </runtime>
   </configuration>

Теперь вы можете поместить весь shebang, кроме MyVB6App.exe.Manifest, в MyComVisibleWrapper.папка.

Смотрите здесь для более подробного обсуждения

0 голосов
/ 09 ноября 2011

Если ваша DLL-оболочка находится в правильном расположении, вы можете обработать сборку там.Или вы можете явно использовать LoadFrom для загрузки этих сборок с нужного вам пути.(Вы должны быть осторожны с LoadFrom, так как некоторые варианты использования нескольких мест для поиска этих сборок могут вызвать ошибки).

...