【问题标题】:Cannot load V8 interface assembly. Load failure information for v8-ia32.dll无法加载 V8 接口程序集。 v8-ia32.dll 的加载失败信息
【发布时间】:2018-12-14 05:55:23
【问题描述】:

无法加载 V8 接口程序集。 v8-ia32.dll 的加载失败信息: C:\Users\szymarad\AppData\Local\Temp\Temporary ASP.NET Files\vs\506fb4ab\b0850f51\assembly\dl3\28a19a82\00b1e3d3_a5add301\v8-ia32.dll:找不到指定的模块 C:\Users\szymarad\source\repos\KTM\Geta-KTM3.0\src\KTM.Web\v8-ia32.dll:找不到指定的模块 C:\Users\szymarad\source\repos\KTM\Geta-KTM3.0\src\KTM.Web\bin\v8-ia32.dll:找不到指定的模块

也安装了 适用于 Visual Studio 2017 的 Microsoft Visual C++ Redistributable

我已清除临时 asp.net 文件夹 清洁溶液 重新启动我的电脑

试图安装 microsoft.clearscript 但我得到了 无法加载文件或程序集“ClearScriptV8-32.DLL”或其依赖项之一。

建议?

【问题讨论】:

  • 它是 32 位版本的 V8 运行时,对于 asp.net 部署来说相当不寻常,因为它需要强制应用程序池进入 32 位模式。您打算使用 v8-ia64.dll 的一些可能性。照原样,您应该仔细检查您是否安装了正确的 redist 风格。导航到 c:\windows\syswow64 并验证它是否具有 msvcp140.dll 和 vcruntime140.dll
  • 您找到解决方案了吗?
  • 有同样的问题

标签: c#


【解决方案1】:

ASP .NET 在 bin 文件夹中查找 v8-ia32.dll 程序集的原因是,默认情况下,当您运行 ASP .NET Web 项目并且 IIS Express 在后台运行时,它以 32 位运行(x86) 模式,因此它将以相同的模式加载 32 位 (x86) 的程序集或模块。如果您已经为 Visual Studio 2017 安装了 MS Visual C++ Redistributable,那很好,但它不会解决问题。

解决方案是在您的 ASP .NET 项目中安装 Nuget 包 JavaScriptEngineSwitcher.V8.Native.win-x86,它会在构建 ASP .NET 项目后提供三个程序集。

\bin\x86\目录下:

  • ClearScriptV8-32.dll
  • v8-base-ia32.dll
  • v8-ia32.dll

如果你安装了一个不同的包,它只是 Microsoft.ClearScript 并且你确实有一个 JavaScriptEngineSwitcher 包,这可能会导致麻烦,但只需尝试安装包 JavaScriptEngineSwitcher.V8.Native.win-x86 到解决问题。

您还可以参考 Taritsyn 的文档以获得良好的文档。见https://github.com/reactjs/React.NET/issues/409,他给出了详细的说明和指导。

在他帖子的 V8 部分下,他说:

"一般来说,ClearScript.V8 包与 JavaScriptEngineSwitcher.V8 导致错误。”

然后他还建议如果你不确定 JavaScriptEngineSwitcher.V8.Native.win 用什么,你可以安装 32 位和 64 位的包。

".NET 应用程序、ASP.NET Web 应用程序和 64 位网站 Windows 不仅可以在 64 位进程中运行,还可以在 32 位进程中运行 过程。为了正确运行 JavaScriptEngineSwitcher.V8 32位进程需要安装 JavaScriptEngineSwitcher.V8.Native.win-x86 包。如果你不知道 在哪个进程中运行您的应用程序或网站,然后安装 两个包。”

希望这有助于解决问题。

【讨论】:

  • 这对我有用(获取 Nuget 包 JavaScriptEngineSwitcher.V8.Native.win-x86 和 Visual C++ Redistributable for Visual Studio 2019)。
  • @RepellantCoder 你的解决方案也适合我 :)
【解决方案2】:

我有一个类似的错误,并通过重建整个解决方案来解决它:

  1. 构建 -> 清洁解决方案
  2. 删除解决方案根目录下的 NuGet packages 文件夹(例如使用 Windows 资源管理器)
  3. 构建 -> 重建
  4. 构建 -> 构建
  5. Ctrl + F5

有些步骤可能不需要,但主要的是它开始工作了 :)

【讨论】:

  • 我不得不手动删除我的 objbin 文件夹。
【解决方案3】:

在 VS 项目属性或项目文件中将 IIS Express 的位数切换为 x64:

<Use64BitIISExpress>true</Use64BitIISExpress>

【讨论】:

    【解决方案4】:

    我的问题是网站在服务器上给出了这个错误。解决我的问题的步骤是在服务器上下载并安装visual-c-redistributable

    【讨论】:

      【解决方案5】:

      对我来说帮助了这个: 工具 -> 选项 -> 项目和解决方案 -> Web 项目 -> “为网站和项目使用 64 位版本的 IIS Express”。

      【讨论】:

        猜你喜欢
        • 2022-09-25
        • 1970-01-01
        • 1970-01-01
        • 2017-05-15
        • 2017-02-03
        • 1970-01-01
        • 1970-01-01
        • 2016-01-16
        • 1970-01-01
        相关资源
        最近更新 更多