【问题标题】:.NET Core 2.2 Assembly FileLoadException.NET Core 2.2 程序集 FileLoadException
【发布时间】:2018-10-21 11:17:09
【问题描述】:

我想将.NET Framework 4.0 中的项目迁移到.NET Core 2.2。 但是我的程序执行出错了。

我的项目想要加载带有 Assembly 类的 .dll,它适用于 .NET Framework 4.0 但不适用于 .NET Core 2.2

它正在抛出 FileLoadException 和消息 Could not load file or assembly 'LibName, Version=3.0.4.5, Culture=neutral, PublicKeyToken=null'

项目中是否缺少包?

try
{
    var pathDll = Path.Combine(path, "LibName.dll");
    Assembly.LoadFrom(pathDll);
}
catch (FileLoadException ex)
{
    throw ex;
}

我的 NuGet 包安装在解决方案中:

【问题讨论】:

    标签: c# .net asp.net-core .net-core .net-assembly


    【解决方案1】:

    我也在 .NET Core 2.1 中以这种方式调用程序集,它可以工作。你检查路径是否正确?如果路径是相对的,请尝试使用绝对路径 - 从 Visual Studio 启动时,.NET Core 中可执行文件的路径有点不同。

    顺便说一句,如果要保留堆栈跟踪,请考虑在 catch 块中使用“throw”而不是“throw ex”。

    【讨论】:

    • 与绝对路径相同的结果。 dll 可能是 32 位,必须被 .NET Core 项目允许?
    • 是的,这是可能的。我复制了它。可以将 LibName.dll 重新编译为 64 位吗?
    • DLL 是使用AnyCpu 选项编译的。我将它重新编译为 64 位,现在它工作正常。 AnyCpu 的默认值为 32 位?我将不得不通知自己.. 谢谢
    • AnyCPU 应默认为 64 位,除非选中“首选 32 位”。
    猜你喜欢
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多