我刚在计算机上安装了Visual Studio 2015社区。到目前为止,我一直在使用Visual Studio 2010 Professional。现在,当我尝试在Web服务器的构建中运行我的MVC应用程序时,收到以下错误消息。
程序入口点__CrtGetFileInformationByHandleEx无法位于\ WINDOWS \ SYSTEM32 \ msvcp120_clr0400.dll
如果我尝试在命令提示符下直接执行vbc.exe
(Visual Basic编译器),则会收到相同的错误消息。我的MVC应用程序还显示了带有
编译错误 - 编译器错误消息:编译器失败,错误代码为-1073741511。
如何修复我的VS以便我可以再次运行我的程序?!
我尝试过的步骤
sfc /scannow
成功替换了msvcr120_clr0400.dll文件,但用与以前完全相同的 CTP文件替换了它!
修改:
我的系统中的问题可以从这里下载:
答案 0 :(得分:28)
Microsoft已知道KB3098779和3097997:
的此问题建议卸载这些修补程序,然后重新扫描以获取更新。现在可以使用这些安全补丁的较新版本(不破坏VB编译器)。
答案 1 :(得分:3)
好的,我从您上传到共享服务的文件中看到它,您的.NET安装已损坏。一个标准的DLL Hell问题,你的c:\ windows \ syswow64 \ msvcr120_clr400.dll文件是错误的版本。使用资源管理器并导航到文件时可以看到的内容。右键单击并选择“属性”,查看“详细信息”选项卡。
请注意产品名称中的“CTP”一词,表示“社区技术预览”。 Microsoft术语,表示“beta版”。显然你不应该在你的机器上安装VS2013测试版。您的msvcp120_clr0400.dll是正确的,它是文件版本12.0.52512.0。它取决于msvcr DLL中CTP版本尚未具有的导出函数。
究竟如何发生这种情况总是很难逆向工程。你是我所知道的第三个SO用户本周有这个问题,有点太巧合了。两个基本场景,如果您在机器上安装了VS2013 CTP版本,那么问题是它没有得到应有的更新。否则是CTP版本的一个非常典型的问题,它们非常危险,因为卸载程序始终是Microsoft正确的最后一件事。在您开始使用需要此导出的程序之前,问题才会被发现。
或者它是由恶意安装程序引起的,将旧版本复制到您的计算机上而不检查版本号。更不可能的是,安装程序从来没有充分的理由安装此特定文件,因为它只被.NET Framework使用。因此,我的钱在您的机器上被CTP损坏。
您需要通过修复机器来解决此问题。不是那么容易,你永远无法确定有多少其他坏的DLL正在摆脱如此糟糕的CTP卸载。一个捷径是从一台好机器复制这个特定的DLL。但最好重新安装.NET 4.6。
来自OP的编辑:
此答案正确识别了问题文件,但重新安装(或任何其他常见步骤)并未解决问题。最后,我从另一台计算机上复制了“好”文件,版本号为12.0.20806.33440。
答案 2 :(得分:3)
KB3098779似乎是我们服务器的罪魁祸首。这是安装上述答案中提到的流氓CTP msvcr120_clr0400.dll的补丁。 解决方案:我们撤销了应用KB3098779的补丁集,一切正常。 仅供参考:这是一个.NET框架4+问题,而不是Visual Studio。我们的服务器是标准的2012 IIS服务器:未安装Visual Studio。
答案 3 :(得分:2)
我在Windows 8.1上遇到了同样的问题,但我的机器上没有安装KB3098779和3097997。可能是在安装ASP.Net 5之后发生的。
问题是我在版本12.0.51670.34230中有两个mcvcr文件,而mcvcp文件已经在12.00.52512.0中。从我的同事的电脑中复制这个版本的mcvcr文件(来自System32和SysWOW64)就足够了。
如果您在这些文件上设置了TrustedInstaller权限时遇到问题,可以运行此powershell命令,然后以管理员身份更改权限:
takeown /A /F C:\windows\syswow64\msvcr120_clr0400.dll
答案 4 :(得分:0)
微软已就此发布通知。 https://support.microsoft.com/en-us/kb/3118750
正如其他人在太短的时间内指出太多人是巧合。这不是VS问题,而是与Microsoft的错误更新有关。
来自MS的信息提到了两个安全补丁(KB3098779和KB3097997)。
我只卸载了KB3098779,我的网站启动并运行。它需要重启机器才能完成
KB3097997未重启时已卸载。我可能不需要卸载但是看起来很明智,因为它也受到来自MS的相同通知。