NuGet 可以分发 COM dll 吗?
Posted
技术标签:
【中文标题】NuGet 可以分发 COM dll 吗?【英文标题】:Can NuGet distribute a COM dll? 【发布时间】:2011-08-27 14:10:40 【问题描述】:是否可以使用 NuGet 分发 COM DLL?
我将如何设置软件包?
我想我可以将 DLL 放在 Tools 目录中,然后运行安装后脚本来注册库,但我不太擅长 PowerShell。
是否有任何在线示例说明如何执行此操作(如果可能)?
【问题讨论】:
【参考方案1】:当我遇到类似问题时,我创建了一个具有以下结构的 NuGet 包。
库 MYCOMLib.dll 工具 mycom.dll install.ps1MYCOMLib.dll 是从 mycom.dll 与 Type Library Importer (tlbimp.exe) 生成的互操作 DLL。 只需使用以下命令即可完成:
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 时是必需的。有关详细信息,请参阅Interop type cannot be embedded。
【讨论】:
我希望我也能接受你的回答。这确实有帮助。 也许问了一个愚蠢的问题,但我需要手动运行 install.ps1 PS 脚本才能使其生效,还是由 NuGet 安装过程自动运行? @WillMarcouiller nuget 将在安装过程中运行它,如果您将 install.ps1 放在 nupkg 的工具文件夹中。以上是关于NuGet 可以分发 COM dll 吗?的主要内容,如果未能解决你的问题,请参考以下文章