首页 文章

未定义或导入预定义类型'System.ValueTuple'2'

提问于
浏览
288

我安装了Visual Studio 15 Preview 3并尝试使用新的元组功能

static void Main(string[] args)
{
    var x = DoSomething();
    Console.WriteLine(x.x);
}

static (int x, int y) DoSomething()
{
    return (1, 2);
}

当我编译时,我收到错误:

未定义或导入预定义类型'System.ValueTuple'2'

根据the blog post,默认情况下此功能应为"on" .

我做错了什么?

9 回答

  • 11

    ValueTuple类型内置于较新的框架中:

    • .NET Framework 4.7

    • .NET Core 2.0

    • 单声道5.0

    • .Net Standard 2.0

    在您定位其中一个较新的框架版本之前,您需要引用ValueTuple包 .

    更多详情,请致电http://blog.monstuff.com/archives/2017/03/valuetuple-availability.html

  • 409

    对于Visual Studio Code,使用内置终端并运行:

    dotnet add package "System.ValueTuple"
    

    不要忘记之后运行 dotnet restore .

  • -1

    确保安装了VS的.NET 4.6.2 Developer Pack,然后从NuGet中拉入 System.ValueTuple 包 .

  • 3

    对于.NET 4.6.2或更低版本,.NET Core 1.x和.NET Standard 1.x,您需要安装NuGet包 System.ValueTuple

    Install-Package "System.ValueTuple"
    

    或者在VS 2017中使用包参考:

    <PackageReference Include="System.ValueTuple" Version="4.4.0" />
    

    .NET Framework 4.7,.NET Core 2.0和.NET Standard 2.0包括这些类型 .

  • 2

    这是.NET Framework 4.7的一部分 .

    只要您不针对上述框架或更高版本(或 .NET Core 2.0 / .NET Standard 2.0 ),您就需要引用 ValueTuple . 通过添加 System.ValueTuple NuGet Package 来做到这一点

  • -1

    如果其他人遇到同样的问题,我在将项目更新到4.7后遇到了这个错误 . 奇怪的是,我不得不删除System.ValueTuple引用以消除此错误 .

  • 0

    我必须检查System.ValueTuple.dll文件是否在源代码管理下并更正其在.cssproj文件中的引用:

    • 右键单击解决方案中的每个项目

    • 卸载项目

    • 编辑.cssproj文件:更改

    <Reference Include =“System.ValueTuple”>

    <HintPath>

    .... \项目名\项目名\ OBJ \发布\包\ PackageTmp \ BIN \ System.ValueTuple.dll

    </ HintPath>

    </ Reference>

    <Reference Include =“System.ValueTuple”>

    <HintPath>

    .. \包\ System.ValueTuple.4.4.0 \ LIB \ netstandard1.0 \ System.ValueTuple.dll

    </ HintPath>

    </ Reference>

    • 保存更改并重新加载项目

    • 找到System.ValueTuple.dll并将其保存到此文件夹中

    • 将此文件的引用添加到源代码管理中

    (可选):7 . 以这种方式解决与另一个.dll文件相同的问题

  • 2

    如果将项目从.Net 4.6.x升级到.Net 7.x,则需要删除对System.ValueTuple的引用,否则会出现错误 .

  • 32

    如果您从某人那里获得项目代码,也许您可以看到此错误消息 . 我在卸载System.ValueTuple v4.4.0后安装System.ValueTuple v4.3.0解决了这个问题

相关问题