【问题标题】:Can a .NET Core 5.0 assembly use a .NET Framework 4.8-targeted assembly?.NET Core 5.0 程序集可以使用面向 .NET Framework 4.8 的程序集吗?
【发布时间】:2021-02-24 16:39:19
【问题描述】:

我的 C# 程序集目前都以 .NET Core 3.1 为目标。他们都使用面向 .NET Framework 4.8 的 C++/CLI 程序集(称为“MySdk”)。这很好用。

今天我尝试将 C# 程序集更新到 .NET 5.0。突然之间,他们甚至都没有看到已经构建并坐在那里的 .NET FW 4.8 “MySdk” 程序集。构建过程给了我这样的输出:

> 2>------ Build started: Project: MyApp.Core, Configuration: Debug x64
> ------ 2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2123,5):
> warning MSB3245: Could not resolve this reference. Could not locate
> the assembly "MySdk". Check to make sure the assembly exists on disk.
> If this reference is required by your code, you may get compilation
> errors.

显而易见的解决方案是将 C++/CLI 程序集更新为 .NET 5。我想尽快这样做,但我不知道是否可行。

但是让我们假设现在这不是一个选项。 .NET 5 程序集使用 .NET FW 4.8 程序集是否有效?这应该工作吗?我还能做些什么来让我的 .NET 5 程序集看到并使用这个东西?

【问题讨论】:

  • 没有。 .NET 5 是 .NET 核心 5
  • 那为什么相同程序集的 .NET Core 3.1 版本与 .NET Framework 4.8 程序集配合得很好?
  • 您是否 100% 确定您的 C++/CLI 项目针对的是 Framework 而不是 Core?因为据我所知,无论版本如何,Core 都应该能够引用 Framework C++/CLI。
  • 我是。 “项目>>设置>>高级>>.NET目标框架版本”是4.8。而且我在 System::Windows::Media 中使用了一些不在 .NET Core 或 .NET 5 兼容包中的类型
  • 是的 .Net 5.0 可以使用 4.8 程序集。如果程序集使用了一堆与 Core 不兼容的其他引用,您可能必须小心。我在混合使用 Newtonsoft 的 .Net 4.8 时遇到问题,dll 混合在一起。

标签: c++ .net-core c++-cli .net-5 .net-framework-4.8


【解决方案1】:

我的困惑的原因原来是如此愚蠢,以至于我很尴尬地发布它。但我会以防万一其他人犯同样的错误。

当您将 .NET Core 3.1 应用更新到 .NET 5.0 时,默认构建输出子文件夹会从“netcoreapp3.1”更改为“net5.0-windows”。但是我复制单独构建的 C++/CLI 程序集的构建脚本正在将其复制到 .NET Core 3.1 的旧子文件夹(“netcoreapp3.1”)。

换句话说,它与兼容性无关。程序集被复制到错误的位置

所以我的问题的答案是“是”。

【讨论】:

  • 间接地,您已经回答了我自己对 .NET 5 是否可以引用 4.8 dll 的好奇。谢谢。这是我的 bing 搜索“.net 3.1 可以使用 .net 4.8 dll 吗?”的倒数第二个结果
猜你喜欢
  • 2023-03-18
  • 2017-10-08
  • 2020-01-10
  • 2019-07-17
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多