【发布时间】:2021-11-25 09:30:29
【问题描述】:
我们正在升级我们的多个项目的解决方案。从一个被 13 个项目引用的类库开始。我需要将我的类库项目.NET Framework 4.5 升级到.NET Standard 2.1。
这里的问题是:
这个类库正被.NET Framework 4.5 的项目引用,并且抛出无法访问.NET Standard 2.1 lib 的错误
项目“abc.csproj”以“netstandard2.1”为目标。它不能被以 '.NETFramework,Version=v4.5' 为目标的项目引用。
如何解决这个问题?不可能同时升级所有这 13 个项目。
编辑:
在 cmets 之后,如果我将 lib 转换为 .netstandard1.1,那么库本身就会开始出现错误:
将 lib 降级为 .netstandard1.1 后,继续
NetStandard 1.4 does not allow decorating class with [DataContract]。我看到了这个帖子并添加了这个包System.Runtime.Serialization.Primitives:
【问题讨论】:
-
好吧,根据this article,
.NET Standard 2.1似乎没有跟随.NET Framework。您可以获得的最新消息是.NET Standard 2.0和.NET Framework 4.6.1。 -
所以如果所有应用程序都在
.NET Framework 4.5,你应该将你的类库升级到版本.NET Standard 1.1。这应该可行,一旦您将所有其他应用程序升级到标准,您可能会再次将所有内容升级到更高版本的 .NET Standard。 -
将其更改为
.NET Standard 1.1也会带来一些问题。正如您提到的另一个错误,可以在必须下载的 NuGet 包中找到此问题的答案。有关详细信息,请参阅stackoverflow.com/questions/43950931/…。 -
我刚刚创建了 2 个项目(一个是
.NET Framework 4.5,另一个是.NET Standard 1.1)。在库中,我在某些属性上有[DataMember],VS 要求我下载 Nuget pckg:System.Runtime.Serialization.Primitives(版本 4.3.0)。这样做之后,我通常能够构建它。请尝试运行构建解决方案并提供输出。 -
现在的问题是您的“最终应用程序”和“库”都在使用这些序列化 -> 但它们使用的是不同版本的 DLL。一个来自 Nuget,另一个来自“系统组装”。您需要做的是删除对系统程序集 (
System.Runtime.Serialization) 的所有引用,并在任何地方使用 Nugets。