【问题标题】:Utilizing a .NET Core 2.2 NuGet library on .NET Core 3.0, but throwing an exception from being unable to find an assembly在 .NET Core 3.0 上使用 .NET Core 2.2 NuGet 库,但由于无法找到程序集而引发异常
【发布时间】:2019-05-15 21:39:17
【问题描述】:

现在我通过 NuGet 使用 OpenTK。它适用于我的 .NET Core 2.2 项目。但是,我无法将 WinForms 组件移植到 .NET Core 2.2。但它确实适用于 .NET Core 3.0。

因此,我想升级到 .NET Core 3.0 并获得升级带来的所有升级。到目前为止,一切都升级得非常好除了 NuGet 上的 OpenTK 库不想使用 .NET Core 3.0。

目前以下配置有效:

  • 项目 A (.NET Core 3.0) - 依赖于 C

  • 项目 B (.NET Core 2.2) - 依赖于 C

  • Project C (.NET Core 2.2) - 类库

这行得通,但是我有点担心 project A 在 .NET Core 3.0 上,以防我做一些糟糕的混搭,并导致以后意外爆炸上。如果这没问题,请告诉我。

但是,如果我将 project C 更改为 .NET Core 3.0,则会得到:

项目 C 与 netcoreapp2.2 (.NETCoreApp,Version=v2.2) 不兼容。 C项目支持:netcoreapp3.0 (.NETCoreApp,Version=v3.0)

我认为这不起作用,因为类库(项目 C)在较新的版本上,这意味着项目 B(在 2.2 上)将无法提取 3.0 的东西。

这里的问题是我现在无法将项目 B 移动到 .NET Core 3.0,因为当我尝试运行一个库时会抛出此异常:

System.TypeInitializationException: 'OpenTK.DisplayDevice' 的类型初始化程序引发了异常。'

内部异常

FileLoadException:无法加载文件或程序集“Microsoft.Win32.SystemEvents,版本=4.0.1.0,文化=中性,PublicKeyToken=cc7b13ffcd2ddd51”。找到的程序集的清单定义与程序集引用不匹配。 (0x80131040)

这是一个微不足道的修复吗?我想将项目 B 移动到 .NET Core 3.0,但上面的这个问题阻碍了我。

如果有帮助,OpenTK.dll 将正确放置在输出目录中。在输出目录中也有一个Microsoft.Win32.SystemEvents.dll。是否有可能其中一个与 OpenTK 捆绑在一起并且已经过时了?还是我这里说错了?

【问题讨论】:

  • 据我所知,opentk 3.0 不支持 .net core 或 .net 标准,4.0 还处于非常早期的阶段。你在使用一些 fork 包吗?如果您只是在 .net 核心项目中引用 .net 框架程序集,则会引发很多异常,特别是对于像 opentk 这样的库,其中包含很多运行时指定的东西,会导致很多问题。
  • @Alsein 我正在使用 NuGet 上提供的最新版本。到目前为止,我在创建窗口和使用 OpenGL 做事时都没有问题。并不是说我以后不会遇到问题,我只是希望我不会。

标签: c# .net .net-core opentk


【解决方案1】:

由于 .NET Core 3.0 也是预览版,使用 NuGet 包管理器的以下命令修复它:

Install-Package Microsoft.Win32.SystemEvents -Version 4.6.0-preview.19073.11

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多