为什么NuGet抱怨System.ValueTuple(4.3.1)?

时间:2018-06-07 08:43:44

标签: visual-studio f# .net-core nuget valuetuple

我刚刚为dotnet core 2创建了控制台F#应用程序。 VS在System.ValueType (4.3.1)包裹上显示感叹号。

Complaining NuGet

我知道reference is implicit

<PackageReference Include="System.ValueTuple" Version="4.*" Condition=" '$(DisableImplicitSystemValueTupleReference)' != 'true' and '$(_FrameworkNeedsValueTupleReference)' == 'true' ">
</PackageReference>

但是NuGet似乎对这种情况并不好。这可能与此bug有某种关系,但是包管理器甚至不会在引用的包中显示System.ValueTuple。虽然我在发布应用程序时看到库是自包含的。

我应该忽略这一点,还是确实表明某些问题?

2 个答案:

答案 0 :(得分:2)

目标框架版本与软件包版本之间可能存在冲突。

根据nuget.orgSystem.ValueTuple 4.3.1无法使用dotnet core 2.0。因此,为了使用System.ValueType,您需要更新其4.4.0或更高版本。

答案 1 :(得分:2)

  

我应该忽略这一点,还是确实表明某些问题?

如果要添加显式nuget包,然后使用浮动版本sudo apt install aptitude && sudo aptitude install golang gcc-7 g++-7 更改它,您可以尝试删除Version="4.*"文件夹中的文件project.assets.json,然后恢复nuget包

这是因为此包信息的依赖关系存储在obj文件夹中的文件project.assets.json中。当您将版本从4.x.x更改为4. 时,nuget无法知道这些依赖项是否仍然与版本4兼容。。因此,Visual Studio可能会给出黄色三角形,但没有任何错误。

您可以查看类似问题here