关于visual studio:NuGet可以分发一个COM dll吗?

Can NuGet distribute a COM dll?

是否可以使用nuget分发COM DLL?

如何设置包?

我在想我可以把dll放在工具目录中,然后运行安装后脚本来注册库,但我不太擅长PowerShell。

是否有任何在线例子说明如何做到这一点(如果可能的话)?


当我遇到类似的问题时,我创建了一个具有以下结构的nuget包。

  • 国际清算银行
    • MyCouLabDLL
  • 工具
    • Mycom DLL
    • 安装程序PS1

mycomlib.dll是由mycom.dll与类型库导入程序(tlbimp.exe)生成的互操作dll。这只需使用以下命令即可完成:

1
Tlbimp mycom.dll

install.ps1包含以下代码:

1
2
3
4
5
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并将引用的EmbeddeInteroptypes属性设置为false,这在使用.NET 4时是必需的。有关详细信息,请参阅无法嵌入互操作类型。