【发布时间】: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