【发布时间】:2021-04-01 01:23:45
【问题描述】:
我们的所有产品(WPF 应用程序)仍在使用 v4.6.1,这有点落伍了。我目前正在“玩” .NET 5,并将我们的一个类库(许多这些产品使用)转换为 v5。我现在正试图从我们的一个较小的产品中引用这个程序集,但它没有构建,有很多错误,例如:
依赖“System.Runtime,版本=5.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”。 1> 无法解析此引用。找不到程序集“System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”
我的印象是 .NET 5 向后兼容,还是仅适用于 .NET Standard? (TBH 我一直在努力理解整个 .NET Standard/Core 的事情)。
我们还不想冒险将产品转换为 .NET 5 - 这是一个长期战略。在我们开始时准备好转换上述类库会很好,那么.NET 框架解决方案有什么方法可以引用 .NET 5 程序集吗?我猜这是不可能的,唯一的选择是多目标?如果是这样,我该怎么做,它会回到 v4.6.1 吗?还是我们坚持将所有内容同时转换为 .NET 5 的“大爆炸”方法?
不确定它是否相关,但在类库的 \bin\debug\ 文件夹中,我可以看到各种子文件夹,例如 net5.0、net5.0-windows、net472、netstandard2.1 - 只有 net5.0-windows 包含构建的 DLL .如果这是最低限度,我们也许可以使用 4.7.2,但我不知道如何首先进行多目标。在“目标框架”下拉列表中,我只看到 .NET 5.0、.NET Core 3.0、.NET Core 3.1。
编辑 1
我按照下面卡米洛的建议替换为:
<TargetFrameworks>net5.0-windows;net461</TargetFrameworks>
现在,代码将无法构建。看一个例子,它似乎在抱怨它可以找到 .Net5 但不是 4.6.1 的类型“ItemsControl”:
我假设我需要以某种方式为 v4.6.1 添加 System.Windows.Controls,尽管这充其量是不直观的 - 因为没有在 .Net 框架应用程序中找到的 Add Reference -> Assemblies 窗口.我假设现在必须通过 NuGet 完成,如果需要,我需要哪个包?
【问题讨论】:
标签: .net wpf .net-standard .net-5