【问题标题】:Can NuGet distribute a COM dll?NuGet 可以分发 COM dll 吗?
【发布时间】:2011-08-27 14:10:40
【问题描述】:

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

我将如何设置软件包?

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

是否有任何在线示例说明如何执行此操作(如果可能)?

【问题讨论】:

    标签: visual-studio com nuget


    【解决方案1】:

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

      • MYCOMLib.dll
    • 工具
      • mycom.dll
      • install.ps1

    MYCOMLib.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 的工具文件夹中。
    猜你喜欢
    • 2011-03-29
    • 2014-05-13
    • 2010-10-14
    • 2011-02-28
    • 1970-01-01
    • 2013-01-09
    • 2023-03-21
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多