注册dll - 在注册表中找不到GUID

时间:2010-08-03 09:29:20

标签: c# visual-studio-2008 dll registration

我有一个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。

感谢任何提前提示。 如果我错过了一些信息,请告诉我!

2 个答案:

答案 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选项。