Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 注册dll-在注册表中找不到GUID_C#_Visual Studio 2008_Dll_Registration - Fatal编程技术网

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

C# 注册dll-在注册表中找不到GUID,c#,visual-studio-2008,dll,registration,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 )] p

我有一个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
...
接口属性:

[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")]
...
使程序集com可见的选项设置为true。 注册com互操作ist设置为false,因为我不希望它在每个构建中都注册

通过regasm/codebase->success注册。 通过regasm/codebase/tlb->success注册

但在这两种情况下,我在注册表中都找不到任何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>"
[HKEY_CLASSES_ROOT\Record\{D4DAB0A5-AC0A-3498-BD1E-6665735B5649}\1.3.3.7]
“类”=“+eventType”
程序集“=”,版本=1.3.3.7,区域性=中性,PublicKeyToken=bba2258cd5ab986c
“RuntimeVersion”=“v2.0.50727”
“代码库”=“文件://”
在vs项目中的任何位置都没有使用regfile中的GUID。 在Windows764上的VisualStudio2008正在运行,或者说没有运行

谢谢你提前给我任何提示。
如果我没有提供一些信息,请告诉我!

问题可能在中。类似于您将.dll注册为64位服务器,然后使用32位regedit进行查看,反之亦然。

我也遇到了同样的问题,并发现了问题。似乎接口没有注册,因为类型库没有注册红色

因此,您必须使用:

regasm /codebase /tlb Mylib.dll

注意:很抱歉,我以为您无法在注册表中看到接口项,因此建议使用/tlb选项。

谢谢您的回答,但不幸的是,这并不是解决方案。我正在手动搜索注册表中的任何GUID(run/regedit/strg+F/GUID)但是找不到它们中的任何一个。即使在使用/windows/microsoft.net/framework64/…注册dll之后,也没有添加任何GUID。targetPlatform是anyCPU。从framework64文件夹运行regAsm的行为与从framework文件夹运行regAsm的行为相同。即使使用regfile:生成的输出也完全相同。您如何操作精确搜索注册表?如注释中所述:(run/regedit/strg+F/GUID)这应该行得通。可能是虚拟化开始起作用了吗?如果你说的是注册表虚拟化,我想我不能阻止它。但是命令提示符和regedit都是以管理员的身份运行的,所以我在这里没有看到潜在的问题。至少不清楚:/我也有同样的问题,已经4年没有答案了。你有没有明白了吗?奇怪的是,它说在两台不同的机器上成功了。但只有一台机器的注册表中添加了条目。好的,我解决了我的问题。我要安装的计算机还没有安装ExtensibilitySM.msi。安装程序是在调用Regasm后安装的,而不是以前。