Может ли NuGet распространять COM dll? - PullRequest
16 голосов
/ 18 мая 2011

Можно ли использовать NuGet для распространения COM DLL?

Как мне настроить пакет?

Я думаю, что могу поместить DLL в каталог Tools, а затем запустить скрипт после установки, чтобы зарегистрировать библиотеку, но яне очень хорош в PowerShell.

Есть ли в Интернете примеры того, как это сделать (если это возможно)?

1 Ответ

38 голосов
/ 01 июня 2011

Когда я столкнулся с подобной проблемой, я создал пакет NuGet со следующей структурой.

  • Lib
    • MYCOMLib.dll
  • инструменты
    • mycom.dll
    • install.ps1

MYCOMLib.dll - это библиотека взаимодействия, сгенерированная из mycom.dll с импортером библиотек типов (tlbimp.exe). Это просто делается с помощью команды:

Tlbimp mycom.dll

install.ps1 содержит следующий код:

param($installPath, $toolsPath, $package, $project)

regsvr32 Join-Path $toolsPath '\mycom.dll' /s

$project.Object.References | Where-Object { $_.Name -eq "MYCOMLib" } |  ForEach-Object { $_.EmbedInteropTypes = $false }

Этот скрипт выполняет то, что он регистрирует COM-DLL и устанавливает свойство EmbedInteropTypes для ссылки на false, что необходимо при использовании .NET 4. См. Тип взаимодействия не может быть встроен для получения дополнительной информации.

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