我在两个不同的文件夹中有相同的.net解决方案,一个可行,而另一个却不行。
第一个运行在我计算机上的“ \ Desktop \ ICN”中,另一个运行在服务器“ \ nameOfServer ... \ ICN”中。当我第一次运行并使用使用ML.NET的[WebMethod]调用Web服务并且执行所有需要的机器学习计算时,它就可以工作。
对于第二个文件夹(第二个项目),当我尝试使用Visual Studio调试时(该项目在服务器上,我在计算机中进行调试)会给我这个错误。
https://imgur.com/a/SMBmPPW (第一张图片)
我的计算机运行Windows 10(64位)和服务器Windows Server 2012 R2(64位)。
我的项目在调试时位于“任何CPU”上,并且与ML.NET所需的64位项目ASP.NET Web应用程序(.NET Framework),“ RS_WebApp”以及“任何CPU”上的其他2个项目一起使用“。
https://imgur.com/a/SMBmPPW (第二张图片)
我正在使用“ mlContext.Recommendation()。Trainers.MatrixFactorization(选项)”,并且在构建应用程序时,它会在“ \ ICN \ RS_WebApp \ bin”上生成“ MatrixFactorizationNative.dll”。
调试时,我可以正常工作的唯一方法是将此dll放在“ C:\ Windows \ SysWOW64”(在我的计算机中)(ML.NET需要64位)上,但问题是它没有当服务器在调用该方法时,由于它的文件夹“ C:\ Windows \ SysWOW64”中没有该文件(或与Windows服务器中的文件类似),因此无法正常工作,并且我无法将该文件放入服务器中。
我已经尝试通过“复制到输出目录:如果更新则复制”将dll放在项目中,并且不起作用。
https://imgur.com/a/SMBmPPW (第三张图片)
我还手动将dll放在“ \ ICN \ RS_WebApp \ bin \ x64”上,但它不起作用。
我还尝试在项目(具有带有调用ML.NET“ RS_WebApp”的Web方法的Web服务的Web服务)上添加dll,但是会发生此错误。
https://imgur.com/a/SMBmPPW (第四张图片)
我不知道可以将dll放在哪个文件夹上,以正确加载该dll。
我对此的看法如下:
-与调试具有1个项目64位项目和2个项目32位项目的解决方案有关的事情,它“缺少”了64位项目的dll。
-ML.NET(Web API)可能会对计算机中的文件以及在其他计算机上运行的文件造成一些问题。
编辑:
在这里,出现该问题的项目的“ .csproj”。 我已经阅读了超过50个stackoverflow和github讨论,但找不到解决此问题的方法。如果有人可以帮助我,将不胜感激。