我正在尝试开发一个用于 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();
}
}
}