无法部署 ML.net,“缺少”FastTreeNative.dll

Ken*_*enD 1 c# windows-server ml.net

我有一些使用 Microsoft ML.net 库(通过 nuget)的 C# 代码(VS2017、.Net 4.71)。它在我自己的 Windows 10 开发机器上运行良好,但是当我将它部署到生产服务器时,出现异常

(内部异常 #0) System.DllNotFoundException:无法加载 DLL 'FastTreeNative':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)

服务器是 Windows Server 2016 x64,安装了 .Net 4.71,代码是针对 x64 构建的。FastTreeNative.dll位于可执行路径中。在一个相关的问题之后,我已经从packages.configPackageReference转移到了 - 一切都无济于事。我能做些什么来追踪为什么没有加载这个 DLL?

Ken*_*enD 5

我曾经dumpbin查看过的依赖项FastTreeNative.dll

Microsoft (R) COFF/PE Dumper Version 14.00.24215.1
Copyright (C) Microsoft Corporation.  All rights reserved.

Dump of file FastTreeNative.dll

File Type: DLL

  Image has the following dependencies:

    VCRUNTIME140.dll
    KERNEL32.dll
    api-ms-win-crt-runtime-l1-1-0.dll
Run Code Online (Sandbox Code Playgroud)

VCRUNTIME140 是 Visual Studio C++ Redistributable。稍后快速下载并安装,问题就解决了!

  • [供将来参考] 我有两个项目时发生了同样的错误:1) 实现 ML 的核心库 .NET Standard 2.0。2) 需要 ML 作为参考的 WCF 应用程序 .NET Framework 4.7。我刚刚在使用 Core 库的所有项目中将“平台目标”(在“属性”>“构建”中)从“任何 CPU”更改为“x64”。错误消失了。 (2认同)