我在分区上安装了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 < / strong>回来?
由于
答案 0 :(得分: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文件。
答案 1 :(得分:2)
(或者您可以使用巧克力https://chocolatey.org来安装上述两个软件包名称:软件包名称分别为7zip
和lessmsi
。)
dotNetFx40_Full_x86_x64.exe
,将文件netfx_Core_x64.msi
和netFxCore.mzz
提取到一个临时目录netfx_Core_x64.msi
,向下滚动文件列表,然后选择regtlibv12.exe
(对于x64系统,其组件为Component = regtlibv12_exe_amd64
,对于x86,则为另一个;对于x86,则为两个)您都需要),然后点击“提取”按钮regtlibv12.exe
!regtlibv12.exe
(无论这样做是否非法,如果您认为有必要-您要么不需要,要么您的软件很大问题)。