无法使用 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
正在尝试注册接口,使用 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