Ответ 1
Когда я столкнулся с аналогичной проблемой, я создал пакет NuGet со следующей структурой.
- Lib
- MYCOMLib.dll
- инструменты
- mycom.dll
- install.ps1
MYCOMLib.dll - это межпроцессорная 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-библиотеку COM и устанавливает для свойства EmbedInteropTypes ссылку на false, что необходимо при использовании.NET 4. См. Тип Interop не может быть встроен для получения дополнительной информации.