注册COM互操作性

我在C#中创build以下类库:

[InterfaceType(ComInterfaceType.InterfaceIsDual)] //[Guid(<Generate GUID here>)] public interface _None1 { int retval { get; } } [ClassInterface(ClassInterfaceType.None)] //[Guid(<Generate GUID here>)] [ProgId("Lotr.Test")] public class None : _None1 { public int retval { get { return 1; } } } 

然后使用“Register for COM Interop”和“Make Assembly COM-visible”选项进行编译。 当我尝试在我的机器上使用Excel 2007 VBA访问它时,工作正常。 但是,如果我将.dll和.tlb文件带到另一台机器上,然后使用regasm进行注册,那么注册会发生的很好,我可以通过tlb在Excel VBA中引用它,intellisense像钟表一样工作,但是执行,VBA运行时提供以下错误:
“运行时错误:-2147024894(80070002)”
“自动化错误:系统找不到指定的文件。”

您可能需要使用/codebase regasm键:

 regasm your_assembly_name.dll /codebase 

我在COM程序集中有一些不同的东西:

 [InterfaceType(ComInterfaceType.InterfaceIsDual)] //[Guid(<Generate GUID here>)] public interface _None1 { [DispId(1)] int retval { get; } } [ClassInterface(ClassInterfaceType.None)] //[Guid(<Generate GUID here>)] [ProgId("Lotr.Test")] public class None : _None1 { [STAThread] public int retval { get { return 1; } } } 

我不知道如果在COM接口,你可以使用getter和setter操作…也许有人知道和帮助我们:)