繁体   English   中英

将 class 库项目升级到 .net 标准 2.1,其中 .net 框架 4.X 项目已引用该标准

[英]Upgrading class library project to .net standard 2.1 where this has been referenced by .net framework 4.X projects

我们正在升级我们的多个项目的解决方案。 从一个被 13 个项目引用的 class 库开始。 我需要将我的 class 库项目.NET Framework 4.5升级到.NET Standard 2.1 这里的问题是:

这个 class 库被.NET Framework 4.5的项目引用,它的抛出错误是它无法访问.NET Standard 2.1

项目“abc.csproj”以“netstandard2.1”为目标。 它不能被以 '.NETFramework,Version=v4.5' 为目标的项目引用。

如何解决这个问题? 不可能同时升级所有这 13 个项目。


编辑:根据评论,如果我将 lib 转换为.netstandard1.1 ,那么库本身就会出现错误: 在此处输入图像描述

将 lib 降级到.netstandard1.1后,在NetStandard 1.4 之后不允许使用 [DataContract] 装饰 class 我看到这篇文章并添加了这个 package System.Runtime.Serialization.Primitives 在此处输入图像描述

我什至添加了对旧 dll 的引用,但是仍然出现错误: 在此处输入图像描述

在我们遍历评论时添加答案。 起初,OP 想将库的框架更改为.NET Standard 2.1 ,同时在.NET Framework 4.5下拥有其他应用程序。

不幸的是,这是不可能的。 官方文档中所述, .NET Standard 2.1不遵循.NET Framework 您可以获得的最新版本是.NET Standard 2.0.NET Framework 4.6.1 此问题的解决方案是将公共库项目降级到.NET Standard 1.1 ,其他应用程序项目应该能够链接到此。

下一次迭代(在降级到.NET Standard 1.1之后)带来了与“未知类”和 VS/编译器要求添加参考相关的问题。 已经存在问题,答案是下载与数据序列化器相关的 NuGet package。

如果最终应用程序中的代码也使用受影响程序集中的类/属性,则必须进行清理。 这样所有代码都引用了唯一的单一版本的源代码。 不可能从 Nuget 获取一个Attribute并检查“相同属性/相同名称”但来自不同来源(系统程序集 - > System.Runtime.Serialization )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM