0

我正在尝试开发一个用于 Excel 应用程序的基于 .NET 的 COM 组件。使用 Visual Studio 2012 Express,我创建了一个类库项目,选择了“程序集 COM 可见”和“注册 COM 互操作”选项,构建了项目,引用了 Excel 工作簿中导出的类型库,并成功测试了它。

问题是:如何在其他机器上部署 DLL?我尝试使用 csc 编译库,使用 RegAsm /tlb 注册它——无论是否使用 /codebase 选项——并将输出添加到全局程序集缓存。但结果是 VBA 编辑器的“引用”对话框中没有条目。我可以浏览到类型库并设置对它的引用,但尝试创建对象会导致错误(“无法创建 ActiveX 对象”)。

那么 Visual Studio 在做什么而我却没有呢?欢迎任何见解。

我的代码:

using System;
using System.Reflection;
using System.Runtime.InteropServices;

[assembly : AssemblyTitle("Com Test 3")]
[assembly : AssemblyVersion("1.0.0.0")]
[assembly : Guid("F2715EE7-099F-464A-994A-390D34FAE6BA")]
[assembly : ComVisible(true)]

namespace ComTest3
{
    [ComVisible(true)]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    [Guid("C416AB08-4DE4-4E73-BDC4-B49B4CEE4901")]
    public interface ITestClass3
    {
        string TestMethod3();
    }

    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    [Guid("6383217C-1871-4AAA-BFA1-0CC077250DB3")]
    public class ComTestClass3 : ITestClass3
    {
        public string TestMethod3()
        {
            return "TestMethod3 called on " + DateTime.Now.ToString();
        }
    }
}
4

0 回答 0