注册一个C#COM组件? 我开发了一个C++托管组件,我使用的是托管C++。在我的开发机器上,一切正常。但是,当我分发文件时,我收到一个错误,组件尚未注册。当我在dll上尝试regsvr32时,它会给我一个错误(无法注册C#dll)。如何正确注册此COM dll?

注册一个C#COM组件? 我开发了一个C++托管组件,我使用的是托管C++。在我的开发机器上,一切正常。但是,当我分发文件时,我收到一个错误,组件尚未注册。当我在dll上尝试regsvr32时,它会给我一个错误(无法注册C#dll)。如何正确注册此COM dll?,c++,com,unmanaged,regsvr32,C++,Com,Unmanaged,Regsvr32,您与/codebase一起使用(它需要是ComVisible[但正确地指出,您已经通过了它,因为它在本地工作])您与/codebase一起使用(它需要是ComVisible)[但正如正确指出的,您已经克服了这一点,因为它在本地工作]如果您的程序集未安装在GAC(全局程序集缓存)中,请使用使用RegAsm with siwtch/codebase 如果您的程序集未安装在GAC(全局程序集缓存)中,请将RegAsm与siwtch一起使用/codebase 我发现您通常需要执行以下操作: regasm

您与
/codebase
一起使用(它需要是ComVisible[但正确地指出,您已经通过了它,因为它在本地工作])

您与
/codebase
一起使用(它需要是ComVisible)[但正如正确指出的,您已经克服了这一点,因为它在本地工作]

如果您的程序集未安装在GAC(全局程序集缓存)中,请使用

使用RegAsm with siwtch
/codebase


如果您的程序集未安装在GAC(全局程序集缓存)中,请将RegAsm与siwtch一起使用
/codebase


我发现您通常需要执行以下操作:

regasm /codebase
因为COM需要知道程序集的确切位置才能加载它

正如其他人所建议的,您需要将C#项目设置为COM可见(项目设置、应用程序、程序集信息按钮)


在每个类之前,可以使用[ComVisible(true)]/[ComVisible(false)]属性对哪些类可见或不可见进行更精细的控制。我发现您通常需要执行以下操作:

regasm /codebase
因为COM需要知道程序集的确切位置才能加载它

正如其他人所建议的,您需要将C#项目设置为COM可见(项目设置、应用程序、程序集信息按钮)


在每个类之前,使用[ComVisible(true)]/[ComVisible(false)]属性可以更好地控制哪些类可见或不可见

如果它在开发机器上工作,它必须已经是ComVisible;如果它在开发机器上工作,+1对于regasm,它必须已经是ComVisible