我正在将现有解决方案从.NET 4.6.2升级到.NET 4.7。该解决方案依赖于几个以.NET 4.6.2为目标的nuget包,因此依赖于nuget System.ValueTuple包。
但是在升级之后,我得到了大量的构建错误:
Error CS8179 Predefined type 'System.ValueTuple`2' is not defined or imported
我不能像注释中所建议的那样删除System.ValueTuple
包,因为其他包依赖于它。(如果我强制的话,他们似乎就会爆炸。)
有什么建议吗?
更新8/8/17
我已经知道我可以删除System.ValueTuple
包,并且可以通过这种方式获得编译的解决方案。但是,解决方案中有十几个NuGet包,它们的目标似乎是.NET 4.6.2,因此需要将System.ValueTuple
作为依赖项。我可以安装这些包,然后强制删除System.ValueTuple
包,但是如果其中任何一个包都有更新,并且我安装了更新--那么System.ValueTuple
包将再次安装,系统将停止构建,直到我再次删除包。
换句话说,我可以把一切都做好--但这看起来很尴尬,很疯狂。当然有更好的方法来解决这个问题吗?
发布于 2017-08-09 18:58:45
是的,升级到System.ValueTuple 4.4.0。
原因如下:
NuGet包
System.ValueTuple
提供了C#元组语法所需的ValueTuple
类型。在.NET Framework4.7中,我们直接将类型添加到mscorlib
中。如果同时使用NuGet包以及.NET Framework4.7,您将多次看到相同的类型。这会导致类似于Stack溢出报告的问题。 我们更新了NuGet包,将.NET Framework4.7上的元组类型输入到mscorlib
。这统一了类型,从而允许您使用依赖于NuGet的其他库和System.ValueTuple
包,同时仍然以.NET Framework4.7为目标。
见发布说明。
发布于 2018-04-30 10:41:58
在Visual中,NuGet包System.ValueTuple提供ValueTuple类型。因此,将System.ValueTuple更新到最新版本v4.4.0。意味着将System.ValueTuple升级到比当前或上一个版本更高的版本。
https://stackoverflow.com/questions/45339914
复制相似问题