无法使用 regasm 注册接口

Can`t register interface with regasm

正在尝试注册接口,使用 regasm

我尝试使用 AssemblyInfo.cs 切换 ComVisible,但没有成功。 我试着签了字。 Regasm 始终响应

RegAsm:警告 RA0000:未注册任何类型

我的项目是 class 库,.net 4.5。

我的一个 cs 文件 - Interface.cs 看起来像这样:

using System;
using System.Runtime.InteropServices;

namespace ComTestInterface
{


    [ComImport]
    [System.Security.SuppressUnmanagedCodeSecurity]
    [Guid("647ED2ED-78DB-4168-B50E-DD4C506EAF53")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface ImageSourceFilter
    {
        void SetColor();
    }


}

删除 ComImport 属性并添加 ComVisible 属性:

[ComVisible(true)]
[System.Security.SuppressUnmanagedCodeSecurity]
[Guid("647ED2ED-78DB-4168-B50E-DD4C506EAF53")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ImageSourceFilter
{
    void SetColor();
}

问题已解决。 我在 class 所在的同一个项目中注册了接口。使用下一个代码 接口:

    [ComVisible(true)]
    [System.Security.SuppressUnmanagedCodeSecurity]
    [Guid("170BB172-4FD1-4eb5-B6F6-A834B344260F")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IImageSourceFilter
    {
        void SetColor();
    }

Class:

 [ComVisible(true)]
    [Guid("170BB172-4FD1-4eb5-B6F6-A834B344268F")]
    [ClassInterface(ClassInterfaceType.None)]
    public class ImageSourceFilter : BaseSourceFilter,IImageSourceFilter
    {
  public void SetColor()
        {...}
     }

另外值得一提的是,class需要继承这个接口。 项目设置中的 Post-Build 事件已完成注册,参数为:

"$(TargetDir)install.bat" $(TargetName)

并且 install.bat 包含下一个:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe %1.dll /nologo /codebase /tlb: %1.tlb