Com 实现IDTExtensibility2并注册外接程序是否不足以使其对Office可见?

Com 实现IDTExtensibility2并注册外接程序是否不足以使其对Office可见?,com,office-interop,office-addins,dllregistration,Com,Office Interop,Office Addins,Dllregistration,因此,我正在尝试为64位MS Office创建一个COM外接程序(没有特别的应用程序,只是尝试让某些东西正常工作)。我不是想为VBE做一个插件,只是为Office应用程序本身做一些事情。我实现了IDTExtensibility2,如下所示(文件顶部): 公共类连接 实现IDTExtensibility2 我已在HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Excel\Addins\COM_Add-In_Test.Connection(Friendly

因此,我正在尝试为64位MS Office创建一个COM外接程序(没有特别的应用程序,只是尝试让某些东西正常工作)。我不是想为VBE做一个插件,只是为Office应用程序本身做一些事情。我实现了IDTExtensibility2,如下所示(文件顶部):


公共类连接
实现IDTExtensibility2
我已在HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Excel\Addins\COM_Add-In_Test.Connection(FriendlyName、Description和LoadBehavior)下添加了注册表项

Visual Studio会自动为COM互操作注册外接程序(选中此框)。 我还尝试在HKCU\Classes\CLSID{94164866-CD9D-497A-9A8B-B476BE39749F}下手动添加注册表项,但没有效果

加载Excel时,该加载项不在COM加载项对话框中,并且不会发生任何事情(我的OnConnection方法是MsgBox(“Hello World!”))

我没有使用任何类型的插件框架(VSTO、ExcelDNA等)。我以前使用过这些,但非常想了解如何手动执行此过程


我在这里遗漏了什么?

所以,在做了一些研究之后,我发现:

  • 没有Visual Studio注册COM互操作类
  • 使用带有/reg参数的RegAsm工具,让它为您生成一个.reg文件
  • 编辑.reg文件并将对HKEY_CLASSES_ROOT的引用替换为对HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES的引用,如果您不希望安装时需要管理员权限。例如:
  • 使用外接程序spy(可在此处找到:)来帮助诊断问题并监视您的进度

  • 64位版本的Office?编辑问题以回应此评论。在与您发布链接的问题链接的问题中,有另一个指向AddInSpy源代码的链接。我克隆了repo并运行了它,它说我的CLSID注册不完整或无效。我将集中精力在那里。您是否遇到过详细说明这些注册表项的具体外观的资源?
    <Guid("94164866-CD9D-497A-9A8B-B476BE39749F"), 
    ProgId("COM_Add-In_Test.Connection"), 
    ComDefaultInterface(GetType(IDTExtensibility2)), 
    ClassInterface(ClassInterfaceType.None), ComVisible(True)>
    Public Class Connection
        Implements IDTExtensibility2
    
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{YOUR_GUID}]
    @="YOUR_PROG_ID"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{YOUR_GUID}\Implemented Categories]
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{YOUR_GUID}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}]
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{YOUR_GUID}\InprocServer32]
    @="mscoree.dll"
    "ThreadingModel"="Both"
    "Class"="YOUR_PROG_ID"
    "Assembly"="YOUR_ASSEMBLY_FULL_NAME"
    "RuntimeVersion"="v4.0.30319"
    "CodeBase"="file:///PATH_TO_YOUR_DLL"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{YOUR_GUID}\InprocServer32\1.0.0.0]
    "Class"="YOUR_PROG_ID"
    "Assembly"="YOUR_ASSEMBLY_FULL_NAME"
    "RuntimeVersion"="v4.0.30319"
    "CodeBase"="file:///PATH_TO_YOUR_DLL"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{YOUR_GUID}\ProgId]
    @="YOUR_PROG_ID"