首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >regtlibv12怎么了?

regtlibv12怎么了?
EN

Stack Overflow用户
提问于 2012-10-07 14:16:25
回答 2查看 24.5K关注 0票数 36

我在分区上安装了Windows8,安装了Visual 11/2012 Professional,在C:\Windows\Microsoft.NET\Framework\v4.0.30319中找不到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.5的顶部安装了.Net 4.0,会发生什么?我知道他们在硬盘上的位置相同,4.5实际上覆盖了4.0,4.5在Windows 8上是默认的。我是否需要安装4.0,然后重新安装4.5才能使regtlibv12恢复正常?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-07 16:15:37

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

在这些文件夹中显示的确切方式很难进行反向工程,我看到的唯一模式是,当您自己安装框架时,它就会出现在那里。当机架预装在机器上时就不会出现了。这有点道理,框架目录中有几个.tlb文件需要注册。它们包含客户端代码可能依赖的.NET ComVisible类型的类型信息。注册类型库的正常方式不适用于这些.tlb文件,因为它们不是嵌入在常规COM服务器中的。附加的猜测是,在预装版本的.NET中不需要该工具,因为注册信息被汇总到常规的Windows安装程序中。

如果您已经对该工具产生了依赖,那么除了从另一台计算机复制.exe之外,您不能做更多的事情。或者解决你需要从另一端使用它的原因,这样你就不再需要它了:

  • 对于忘记在Regasm.exe中使用Regasm.exe选项,这是一种解决办法。当客户端代码尝试使用来自另一个线程的COM接口时,可能会在运行时产生TYPE_E_CANTLOADLIBRARY错误。类型库提供标准封送程序需要的类型信息来封送方法的参数。使用/tlb选项来修复这个问题。
  • 这是一个使COM服务器显示在Project + Add Reference,COM选项卡中的解决办法。该选项卡列出已注册的类型库。然而,这不是一个适当的解决办法,除了在构建服务器上,您可以编译您的代码,但您不能运行它,因为注册还没有完成。正确的方法是使用作者提供的安装程序,或者在紧要关头使用Regsvr32.exe,这样类型库和CLSID键都可以注册。
  • 对于不注册其类型库的COM服务器来说,这是一个解决办法。与上面类似,但是注册类型库是可选的,并且通常只需要在您的dev计算机上,而不是在运行服务器的机器上。大多数可以使用类型库的工具都有一种显式添加它们的方法,而不是依赖于TypeLib注册表项。也是如此,您可以使用Browse选项卡直接选择.tlb文件。
票数 42
EN

Stack Overflow用户

发布于 2020-06-04 11:32:10

请参阅Hans对提出的问题的出色回答;这个答案解释了如何获得前面提到的可执行文件。

  1. https://www.7-zip.org/download.html安装7-Zip
  2. https://github.com/activescott/lessmsi/releases下载lessmsi/Less MSIérables

(或者您可以使用巧克力味安装上述两种方法:包名分别是7ziplessmsi。)

  1. 从.NET Framework4.0独立安装程序下载https://www.microsoft.com/en-gb/download/details.aspx?id=17718
  2. 使用7-Zip打开上一步下载的dotNetFx40_Full_x86_x64.exe,将文件netfx_Core_x64.msinetFxCore.mzz解压缩到临时目录。
  3. 使用lessmsi打开netfx_Core_x64.msi,向下滚动文件列表并选择regtlibv12.exe (对于x64系统有组件= regtlibv12_exe_amd64的一个,对于x86有另一个),或者两者都需要的话,然后单击“提取”按钮
  4. 浏览并选择要解压缩文件的目录,单击“确定”。
  5. 瞧,你现在有regtlibv12.exe了!
  • 注:我不是律师,不知道上述行为是否违反了任何法律,也不知道这样做会给你带来麻烦,也不会追究我的责任。至少,不需要重新分发regtlibv12.exe (不管这样做是非法的,如果您认为需要的话--要么没有,要么您的软件有很大的问题)。
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12769590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档