【问题标题】:Why does NuGet complain about System.ValueTuple (4.3.1)?为什么 NuGet 抱怨 System.ValueTuple (4.3.1)?
【发布时间】:2018-11-17 02:31:24
【问题描述】:

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

我知道这个reference is implicit

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

但 NuGet 似乎无法适应这种情况。这可能与这个bug 有某种关系,但是包管理器甚至没有在引用的包中显示System.ValueTuple。虽然我在将应用程序发布为自包含时看到了该库。

我应该忽略这一点还是确实表明存在问题?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 不过很奇怪,因为他们用的是浮动版Version="4.*"
    • 是的,如果我明确引用包,VS 没问题。
    【解决方案2】:

    我应该忽略这一点还是确实表明存在问题?

    如果你是添加显式nuget包,然后用浮动版本Version="4.*"更改它,你可以尝试删除obj文件夹中的文件project.assets.json,然后恢复nuget包。

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

    您可以查看类似问题here

    【讨论】:

      猜你喜欢
      • 2015-06-09
      • 2020-08-12
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多