regtlibv12怎么了?

问题描述 投票:27回答:1

我在分区上安装了Windows 8,安装了Visual Studio 11/2012 Professional,但在regtlibv12.exe中找不到C:\Windows\Microsoft.NET\Framework\v4.0.30319

下面是我的Windows 7分区的屏幕截图,其中包含.Net 4.0(和regtlibv12):

下面是带有.Net 4.5的Windows 8(并且没有regtlibv12):

regtlibv12不再是.Net框架的一部分吗?我是否还需要安装.Net 4.0?如果我在.4.0之上安装.Net 4.0会怎样?我知道他们都去了硬盘上的同一个位置,4.5有效地覆盖了4.0,而且在Windows 8上默认为4.5。我需要安装4.0,然后重新安装4.5以获得regtlibv12吗?

谢谢

visual-studio-2012 windows-8 .net-4.5 regtlib
1个回答
37
投票

它从来都不是框架的一部分。它完全没有记录。然而,有一个非常一致的谣言,很多程序员已经在他们的v2.0.50727或v4.0.30319目录中找到了它,并发现它可以解决注册问题。很多论坛帖子都提到了它。

它在这些文件夹中显示的确切方式很难进行逆向工程,我看到的唯一模式是,当您自己安装框架时它会存在。当框架预先安装在机器上时,它将不会存在。这有点意义,框架目录中有几个需要注册的.tlb文件。它们包含客户端代码可能依赖的.NET [ComVisible]类型的类型信息。正常方式类型库已注册不适用于那些.tlb文件,因为它们未嵌入常规COM服务器中。另外猜测,在预安装的.NET版本中不需要该工具,因为注册信息已汇总到常规Windows设置中。

如果你已经让自己依赖于该工具,那么除了从另一台机器上复制.exe之外你无法做很多事情。或解决您需要从另一端使用它的原因,因此您不再需要它:

  • 这是忘记在Regasm.exe中使用/ tlb选项的解决方法。当客户端代码尝试使用来自另一个线程的COM接口时,这可能会在运行时产生TYPE_E_CANTLOADLIBRARY错误。类型库提供了标准编组程序编组方法参数所需的类型信息。使用/ tlb选项来修复它。
  • 这是让COM服务器显示在Project + Add Reference,COM选项卡中的解决方法。该选项卡列出已注册的类型库。然而,这不是一个正确的解决方法,除了在构建服务器上,您可以编译您的代码,但由于注册未完成,您无法运行它。正确的方法是使用作者提供的安装程序或在压缩时使用Regsvr32.exe,以便注册类型库和CLSID键。
  • 它是未注册其类型库的COM服务器的变通方法。与上面类似,但注册类型库是可选的,通常只在开发机器上需要,而不是在运行服务器的机器上。大多数可以使用类型库的工具都可以显式添加它们,而不是依赖于TypeLib注册表项。 Visual Studio IDE也是如此,您可以使用“浏览”选项卡直接选择.tlb文件。
© www.soinside.com 2019 - 2024. All rights reserved.