我已经安装了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);
}

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

预定义类型“系统”。ValueTuple´2´未定义或导入

根据这篇博文,这个功能在默认情况下应该是“开启”的。

我做错了什么?


当前回答

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

dotnet add package "System.ValueTuple"

之后别忘了运行dotnet恢复。

其他回答

对于。net 4.6.2或更低版本,请使用。net Core 1。. x和。net标准1。安装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都包含这些类型。

为了防止其他人遇到同样的问题,我在将一个项目更新到4.7后遇到了这个错误。奇怪的是,我不得不移除这个系统。ValueTuple引用来消除此错误。

我必须检查System.ValueTuple.dll文件是否在源代码控制下,并纠正其在.cssproj文件中的引用:

右键单击解决方案中的每个项目 卸载项目 编辑.cssproj文件:change

< Reference Include="System. "ValueTuple”>

< 提示路径>

.... ProjectName \ ProjectName obj \发行包PackageTmp \ bin \ ValueTuple。等系统。

</HintPath >

< /引用>

< Reference Include="System. "ValueTuple”>

< 提示路径>

ValueTuple \ packages系统。4 . 4。0李勃\ netstandard1 ValueTuple 0 \系统。等等

</HintPath >

< /引用>

保存更改并重新加载项目 找到System.ValueTuple.dll并保存到这个文件夹中 将此文件的引用添加到源代码控制中

(可选):7。用这种方法解决另一个.dll文件的相同问题

ValueTuple类型被构建到新的框架中:

.NET Framework 4.7 .NET Core 2.0 Mono 5.0 .Net标准2.0

在您的目标是那些较新的框架版本之前,您需要引用ValueTuple包。

详情见http://blog.monstuff.com/archives/2017/03/valuetuple-availability.html

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

dotnet add package "System.ValueTuple"

之后别忘了运行dotnet恢复。