dotnet.exe 无法运行,因为缺少 api-ms-win-crt-runtime-l1-1-0.dll

Posted

技术标签:

【中文标题】dotnet.exe 无法运行,因为缺少 api-ms-win-crt-runtime-l1-1-0.dll【英文标题】:dotnet.exe won't run because api-ms-win-crt-runtime-l1-1-0.dll is missing 【发布时间】:2017-12-12 15:30:47 【问题描述】:

我需要在 Windows Server 2008 R2 SP1 上的 IIS 中托管 ASP.NET Core 2.0 应用程序。我正在关注有关如何Host ASP.NET Core on Windows with IIS 的文档指南。

安装后还是不能运行dotnet.exe。它需要一个名为 api-ms-win-crt-runtime-l1-1-0.dll 的 DLL。

程序无法启动,因为您的计算机中缺少 api-ms-win-crt-runtime-l1-1-0.dll。尝试重新安装程序以解决此问题。

但是,计算机上有 很多 个此文件的实例,位于以下文件夹中:

C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.3 C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\2.0.3 C:\Windows\winsxs\amd64_microsoft-windows-u..rsalcrt-apifwd-win7_31bf3856ad364e35_6.1.7601.18972_none_a9a51144251fb166 C:\Windows\winsxs\amd64_microsoft-windows-u..rsalcrt-apifwd-win7_31bf3856ad364e35_6.1.7601.23175_none_aa31870f3e3ad077 C:\Windows\winsxs\amd64_microsoft-windows-u..rsalcrt-apifwd-win7_31bf3856ad364e35_6.1.7601.23656_none_aa4830af3e29a3af C:\Windows\winsxs\x86_microsoft-windows-u..rsalcrt-apifwd-win7_31bf3856ad364e35_6.1.7601.18972_none_4d8675c06cc24030 C:\Windows\winsxs\x86_microsoft-windows-u..rsalcrt-apifwd-win7_31bf3856ad364e35_6.1.7601.23175_none_4e12eb8b85dd5f41 C:\Windows\winsxs\x86_microsoft-windows-u..rsalcrt-apifwd-win7_31bf3856ad364e35_6.1.7601.23656_none_4e29952b85cc3279

指令说:

在托管系统上安装 .NET Core Windows Server Hosting 包。 [...] 如果系统没有 Internet 连接,请在安装 .NET Core Windows Server Hosting 捆绑包之前获取并安装 Microsoft Visual C++ 2015 Redistributable

我已经多次安装/修复了这两个包,但都遇到了同样的错误。

【问题讨论】:

【参考方案1】:

这可能不是 DLL 缺少,而是缺少 DLL 的依赖项之一。

    确保您正在安装 Visual C++ 2015 Redistributable 的 Update 3 version。

    Visual C++ 2015 Redistributable 的要求之一是KB2999226。确保也安装了它。

    如果已安装,请发布 Visual C++ 2015 Redistributable 安装程序包中的安装日志。

【讨论】:

【参考方案2】:

在 Windows Server 2012 R2 上 我有同样的问题。 Windows 更新 + 安装 Windows 特定更新解决了它。

见:https://github.com/dotnet/core-setup/issues/4388。

我安装了这个更新: https://support.microsoft.com/en-us/help/3118401/update-for-universal-c-runtime-in-windows

【讨论】:

【参考方案3】:

TL;DR:按此顺序安装这些 Windows 更新:

    KB2919442 KB2919355 KB2999226

按照正确的顺序安装以上3个Windows更新后,关于缺少dll的错误应该会停止。


我在尝试将 .NET Core 2.1 应用程序部署到 Windows 2012 R2 机器时遇到了基本相同的问题。根本原因似乎是由于Microsoft Visual C++ Redistributable 的安装损坏。

来自Microsoft's documentation:

Visual C++ Redistributable Packages 安装运行时组件 没有 Visual C++ 的计算机上的 Visual C++ 库 安装。这些库是运行应用程序所必需的 使用相应版本的Visual C++开发。

经过一些故障排除和研究,我通过手动安装这 3 个 Windows 更新按此顺序解决了这个问题:

    KB2919442 KB2919355(需要重启) KB2999226

这些 Windows 更新的安装顺序很重要! KB2999226 取决于 KB2919355,KB2919355 取决于 KB2919442。

安装这些 Windows 更新后,dotnet.exe 和应用程序开始正常运行。

【讨论】:

以上是关于dotnet.exe 无法运行,因为缺少 api-ms-win-crt-runtime-l1-1-0.dll的主要内容,如果未能解决你的问题,请参考以下文章

运行Chromium浏览器无法登录谷歌账号因为缺少google api密钥

WAMPServer 无法启动,因为缺少 api-ms-win-crt-runtime-l1-1-0.dll

错误:C:\Program Files\dotnet\dotnet.exe 失败,返回码:1

在 .NET Core RC2 中构建 .exe 文件

运行Chromium浏览器缺少google api密钥无法登录谷歌账号的解决办法

该程序无法启动,因为在我的计算机上启动 Apache 服务器时缺少 api-ms-win-crt-runtime-l1-1-0.dll [关闭]