gpt4 book ai didi

.net - 无法使用 REGASM/u 删除 COM [PrimaryInteropAssemblyName] typelib 值

转载 作者:行者123 更新时间:2023-12-04 06:19:56 28 4
gpt4 key购买 nike

我希望有人能指出我正确的方向。我分几个步骤列出了问题,希望能澄清问题。

  • 我使用 将 C++ DLL 注册到 COM regsvr32 .
  • 然后我使用 tlbimp /主要 C++ DLL 上的属性以生成可供 C# 使用的程序集文件。
  • 然后我将新生成的程序集注册到 GAC 中。
  • 我在生成的程序集上调用 regasm,以便 C++ 类型库包含对 GACed 程序集的引用。

  • 问题是当我使用 regasm/u ,它说它“已成功取消注册”。但是,当我使用 OLEVIEW 检查 COM 中的类型库时,它 还是 显示了对 GACed 程序集的 PrimaryInterop 引用。

    我也尝试过使用 regasm/u/tlb,但我收到警告说:
    RegAsm : warning RA0000 : Type library not un-registered since the assembly was
    imported from COM

    enter image description here

    感谢您的帮助,因为这让我发疯了;)

    最佳答案

    第4步错了,COM服务器已经在第1步注册了。只有在创建自己的COM服务器([ComVisible]属性)时才使用Regasm.exe,而不是仅使用一个时。在第 2 步中使用/primary 也是不确定的,当您公开您在自己的公共(public)接口(interface)中导入的 COM 类型时,您只需要一个 PIA。最好避免。通过重复步骤 1 修复您可能造成的损坏。

    由 tlbimp.exe 生成的互操作程序集只是一个小助手程序集,它只包含从类型库自动生成的声明。帮助 CLR 为 COM 接口(interface)方法生成 thunk,而无需解析类型库。如果您有 VS2010 版本,请务必使用嵌入互操作类型功能。

    关于.net - 无法使用 REGASM/u 删除 COM [PrimaryInteropAssemblyName] typelib 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6712313/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com