C#.net Оболочка DLL COM и установка

#c# #dll

#c# #dll

Вопрос:

Я загружаю фрагменты кода, которые в конечном итоге будут использоваться в другой программе на C # в долгосрочной перспективе, но я могу захотеть использовать его в различных других приложениях, и мне нужно легко использовать его сейчас, по мере его постепенного развития. Итак, я написал несколько C#.net Библиотеки DLL в Visual Studio Express 2017. Две из которых ссылаются на стороннюю библиотеку DLL (одна из которых была установлена другим программным обеспечением, на одну из которых я только что указал в Visual Studio), а одна из моих библиотек DLL ссылается на мои другие 2 библиотеки DLL. Я установил флажки для COM-регистрации своих, и теперь я с удовольствием использую их из Excel / VBA.

Но как мне установить ее на другой компьютер с Win10 простыми шагами, чтобы я мог использовать те же электронные таблицы и автоматизацию на этих компьютерах? (желательно с некоторым объяснением того, что на самом деле делают шаги?) Мне не повезло с другими вариантами, которые я погуглил, возможно, они недостаточно «защищены от идиотов» для меня, или мои библиотеки DLL зависят от других библиотек DLL, или я получаю их не из того места.

  • Я предполагаю, что это 64-разрядные библиотеки DLL (они совместимы с «любым процессором»), поэтому я хочу скопировать их в 64-разрядное место (syswow64)? Или они также должны быть в system32?
  • Полагаю, я получаю их из своих папок «release», а не «debug»?
  • У меня также есть .pdb и .tlb, а также .dll. Нужны ли они мне? Может быть, они являются недостающей частью головоломки?
  • В чем разница между regsvr и regasm и что я должен использовать? (Или оба варианта).
  • Также есть простой способ создать программу установки для копирования DLL и регистрации COM? И если да, то это все еще применимо, если это VS Express 2017?

Спасибо за помощь!

Комментарии:

1. Самый простой способ — добавить запись в реестр Windows HKEY_CLASSES_ROOTNamespace.ClassNameCLSID со значением по умолчанию {CLSID} , а затем HKEY_CLASSES_ROOTWOW6432NodeCLSID{CLSID} или HKEY_CLASSES_ROOTCLSID{CLSID} с правильными значениями

2. Я не знаю, имеет ли Express Edition тип ‘Installer Project’ по умолчанию, ваш лучший вариант — создать установщик, который будет обрабатывать надлежащие регистрации от вашего имени. COM — сложная система, и зарегистрировать все вручную и установить все зависимости на место непросто. Если вы хотите знать, какие зависимости есть у сторонних библиотек DLL, вы можете использовать ‘Depends’ из Win SDK, однако, если это собственные библиотеки DLL, написанные, например, на VC , у вас могут быть дополнительные зависимости от конкретных сред выполнения VC, и они должны быть установлены вместе с этими библиотеками DLL для их правильной работы.