none
Как заставить dll для runtime v2.0.50727 работать через COM с runtime v4.0? RRS feed

  • Вопрос

  • Есть dll, которая скомпилирована для .NET runtime v2.0.50727.
    Для одного из классов в реестре регистрируется COM параметры.
    Таким образом мы можем использовать данную сборку через COM вызовы в каком-либо другом приложении, написанное на COM.

    Как эту сборку заставить работать через COM с runtime v4.0?

    P.S. Как заставить работать через EXE знаем от сюда.

Ответы

  • Получается так.

    При регистрации COM в InprocServer32 для RuntimeVersion нужно установить версию рантайма для .NET 4.0:

    Как определить какие версии рантайма сейчас установлены можно посмотреть здесь.

    • Помечено в качестве ответа Leonid Maliutin 3 июня 2016 г. 7:48
    2 июня 2016 г. 15:00

Все ответы

  • Здравствуйте. А кто Вам не дает установить .NET 2.0-3.5? Они с 4.0 вместе довольно мирно живут.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    2 июня 2016 г. 10:59
  • Да, вот тут точу программки потихоньку.

    Делаю инсталлятор. И столкнулся с тем, что Windows 10 не переустанавливает .NET 3.5, но зато там там предустановлен .NET 4.6.

    Программы, скомпилированные под .NET 3.5 спокойно работают с .NET 4.6 с одной стороны. С другой стороны устанавливать, т.е. тянуть .NET 3.5, из интернета тяжёлая процедура для пользователя.

    Вот я и думаю, что для более комфортной установки использовать настройку на runtime 4.0.


    2 июня 2016 г. 13:22
  • Ну, во-первых, тянуть ничего не надо, .net 3.5 есть в составе win 10 (и в win 8/8.1 тоже), он просто не ставится по умолчанию. Установка производится через Панель управления "вручную".

    А, во-вторых, любой уважающий себя инсталлятор должен содержать все зависимости "в комплекте" :)


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    2 июня 2016 г. 13:32
  • Ну, во-первых, тянуть ничего не надо, .net 3.5 есть в составе win 10 (и в win 8/8.1 тоже), он просто не ставится по умолчанию. Установка производится через Панель управления "вручную".

    Да? Тесты и пользователи говорят, что когда включаешь галочку для .NET 3.5 в компонентах Windows, то начинается загрузка из интернета:

    2 июня 2016 г. 13:50
  • Я в курсе. Скачивается минимального размера пакет, содержащий последние обновления. Уверяю Вас, что это не сотни мегабайт, из которых состоит установочный пакет .net 3.5

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    2 июня 2016 г. 13:55
  • Да вот только MSI пакеты не могут скачивать другие пакеты.
    2 июня 2016 г. 14:05
  • Не понимаю, какое это имеет отношение к рассматриваемой теме. Вопрос состоял в том, как запустить dll, ориентированную на .net 2.0. Ответ - установить .net 2.0-3.5! Вы же не будете "жалеть" каждого пользователя, которому нужно установить DirectX для того, чтобы поиграть в любимую "стрелялку". У программы есть системные требования, их нужно выполнить. Вот и все.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    2 июня 2016 г. 14:15
  • Получается так.

    При регистрации COM в InprocServer32 для RuntimeVersion нужно установить версию рантайма для .NET 4.0:

    Как определить какие версии рантайма сейчас установлены можно посмотреть здесь.

    • Помечено в качестве ответа Leonid Maliutin 3 июня 2016 г. 7:48
    2 июня 2016 г. 15:00
  • Поясните, это вопрос, утверждение, или ответ на вопрос Вашей темы?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    2 июня 2016 г. 16:34
  • Это решение, которое работает у меня.


  • Это решение, которое работает у меня.



    Судя по картинкам, .net 2.0 у Вас установлен. Вы пробовали данный метод (подмену регистрационной информации компонента) в отсутствие .net 2.0-3.5?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

  • Судя по картинкам, .net 2.0 у Вас установлен. Вы пробовали данный метод (подмену регистрационной информации компонента) в отсутствие .net 2.0-3.5?
    Да. Проверил в виртуальных машинах. Точнее, на чистом Windows 10.
  • Ну, что же, прекрасно. Спасибо за информацию. Возьму себе "на вооружение" :)

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!