Сборка не может быть загружена через COM-взаимодействие, если Framework 3.5 не присутствует? - PullRequest
3 голосов
/ 26 марта 2019

У меня есть приложение VB6, в котором используется C # COM DLL, скомпилированная с .Net Framework 3.5.Однако на сервере 2016 года .Net 3.5 не установлен.Однако 4.6.7 есть и будет выполнять код DLL.

Однако, когда vb6 вызывает CreateObject, происходит сбой.(хотя объект COM зарегистрирован правильно.)

Установщик приложения вызывает утилиту RegASM в правильной папке .Net framework для регистрации библиотеки типов для DLL.Я могу убедиться, что все правильные записи реестра сделаны.

Приложение VB6 завершается с ошибкой 429. Невозможно создать объект.Если я ничего не делаю, кроме установки .Net 3.5, это работает.Итак, я уверен, что регистрация в порядке. Я просто не знаю, как заставить DLL использовать платформу 4.xx.

Я пытался создать VB6App.exe.config и поместить в нее теги supportedRuntime.Не повезло - предположим, что это работает только для .Net exes.

.NET COM DLL предназначена как для новой, так и для старой ОС.

Я бы предпочел не устанавливать .Net 3.5, если мне не нужно.Есть ли способ сделать эту работу?

<configuration>
  <startup>
    <!--Will run on .Net 2.0,3.5-->
    <supportedRuntime version="v2.0.50727"/>
    <!--Will run on .Net 4.0 and later-->
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>
...