我有一个c#-dll并通过regasm注册告诉我成功,但GUID尚未添加到注册表中,因此,该组件不能在任何地方使用。 我根本不知道为什么:(
类属性:
[ProgId( "blup" )]
[ClassInterface( ClassInterfaceType.None ), ComSourceInterfaces( typeof( blap ))]
[Guid( "0CFEF92B-A155-4353-B7A3-58A717193E0C" )]
[ComVisible( true )]
public class blup
...
界面属性:
[Guid( "9FD1B3E5-4873-403a-91AA-2EEC7296B38D" )]
[InterfaceType( ComInterfaceType.InterfaceIsIDispatch )]
[ComVisible ( true )]
public interface blap
...
的AssemblyInfo.cs:
...
[assembly: ComVisible( true )]
[assembly: Guid("37639A04-9DAC-40ee-ADBB-2F07F78FD265")]
...
使程序集可见的选项设置为true。 注册com-interop ist设置为false,因为我不希望它在每个构建中注册。
通过regasm / codebase注册 - >成功。 通过regasm / codebase / tlb注册 - >成功。
但在这两种情况下,我都无法在注册表中找到任何我的GUID。
将/ regfile参数添加到regasm,生成文件但只包含那些行:
[HKEY_CLASSES_ROOT\Record\{D4DAB0A5-AC0A-3498-BD1E-6665735B5649}\1.3.3.7]
"Class"="<classname>+eventType"
"Assembly"="<name>, Version=1.3.3.7, Culture=neutral, PublicKeyToken=bba2258cd5ab986c"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///<filename>"
来自regfile的GUID不会在vs-project中的任何位置使用。 整个事情正在运行 - 或者说不正在运行 - 在Windows 7 64上使用visual studio 2008。
感谢任何提前提示。 如果我错过了一些信息,请告诉我!
答案 0 :(得分:0)
问题可能发生在different view of the registry for 32-bit and 64-bit programs。像你将.dll注册为64位服务器,然后使用32位注册表,反之亦然。
答案 1 :(得分:0)
我遇到了同样的问题并发现了问题。似乎未注册接口,因为类型库未注册。
所以你必须使用:
regasm /codebase /tlb Mylib.dll
注意:抱歉,我以为您无法在注册表中看到界面条目,因此我建议使用/ tlb选项。