Predefined type 'System.ValueTuple′2′ is not defined or imported
我安装了Visual Studio 15 Preview 3并尝试使用新的元组功能
1 2 3 4 5 6 7 8 9 10
| static void Main(string[] args)
{
var x = DoSomething();
Console.WriteLine(x.x);
}
static (int x, int y) DoSomething()
{
return (1, 2);
} |
当我编译时,我得到了错误:
0
根据博客文章,这个功能在默认情况下应该是"打开"的。
我做错了什么?
- 是否有人知道即使在2017年的RTM目标是4.6.2,是否需要Nuget软件包?看起来你还需要它,我希望在最终版本中你不会。
- 您可以尝试改用System.Tuple
- 对于我来说,这个stackoverflow.com/a/46533630/4383425就是解决方案。
4.6.2 for .NET .NET 1.X或低,核心和。NET 1.x的标准,你需要安装nuget System.ValueTuple:包装
1
| Install-Package"System.ValueTuple" |
一包或使用参考:在VS 2017
1
| <PackageReference Include="System.ValueTuple" Version="4.4.0" /> |
NET框架的核心和4.7,.NET .NET 2.0 2.0标准,包括论文的类型。
- 谢谢。这是否意味着它将与4.6.2一起工作?调试器仍然显示的是x.item1 x.item2。你知道这会不会改变吗?
- 我相信它将包含在4.6.2或4.6.3中。不知道调试器,但由于Roslyn负责表达式计算器,所以我会说是的。
- 似乎在他们的列表中:github.com/dotnet/roslyn/issues/10945-与调试器的交互
- 安装包"system.valuetuple"-includeprerelease
- 好吧,它似乎不在4.6.2中。
- 适用于4.6.2,但仍然需要这个包。
- 对于.NET 4.7,包是本地包含的。
- 安装完软件包后还是抱怨!
- 在今天(2017年7月13日)使用之前仍然需要安装此软件包。谢谢!
- 请注意(花了一些时间):如果您在同一个项目中使用包microsoft.net.compilers,则应将其更新为(至少)2.0版,否则将出现生成/语法错误。来源/信用证:stackoverflow.com/a/41565541/430885。
- 添加了包,所有内容都将生成,但现在单元测试因System.IO.FileLoadException失败:无法加载文件或程序集"System.ValueTuple"
它的.NET Framework 4.7部分。
只要你不图上面的框架或高或.NET Core 2.0/ .NET Standard 2.0),你就需要参考ValueTuple。这样做的System.ValueTupleNuGet Package添加。
- 我刚试过.NET 4.7,但没用?找不到System.ValueTuple`2。
- 我已经安装了.NET Framework 4.7和Visual Studio的目标包。我还在下拉列表中选择了4.7版,但它仍然无法编译。
- 好的,我刚发现问题:dll system.valuetuple是硬编码在我的项目文件(csproj)中的。从项目文件中删除此项修复了问题。
- 很好的解决方案,但您可以添加更多细节。在我的例子中,system.valuetuple.dll仍然挂在我的bin文件夹中。一旦我删除了那个,我就可以走了。我的语言版本在default上,一切正常。
一个新的框架valuetuple内置类型:
- NET框架。
- NET 2.0的核心
- 单5.0
- NET 2.0的标准。
直到你得到一个新的目标的框架的版本,你需要参考的valuetuple包。
更多的细节在blog.monstuff.com http:/ / / / / valuetuple-availability.html 2017年档案
在Visual Studio代码使用内置在终端和运行:
1
| dotnet add package"System.ValueTuple" |
不要忘记做dotnet restore后来。
- 我没能让它在VS代码中工作。
- 注意:不要对.NET 4.7执行此操作
其他人有同样的问题的案例,一个错误的回答后,这个更新项目到4.7。oddly不够,我不得不把这system.valuetuple参考误差去了。
确保你的.NET开发者。4.6.2包装与安装在System.ValueTuple然后拉从nuget包。
- 不适合我。
- 即使有.NET 4.6.2,它似乎仍然需要System.ValueTuple包。
- @Sundquist先生,4.7以下有吗?
我不得不检查system.valuetuple.dll源控制和正确的文件是在其.cssproj参考文件:
解决方案中的每个项目rightclick
卸载项目
编辑文件:变更.cssproj
参考include<="system.valuetuple">
hintpath><
项目名称项目名称…………………OBJ packagetmp包释放是 system.valuetuple.dll
hintpath></
<参考>
到
参考include<="system.valuetuple">
hintpath><
…………………system.valuetuple.4.4.0 包装 system.valuetuple.dll netstandard1.0 lib
hintpath></
<参考>
的变化和重新保存的项目
查找和保存到这个文件夹system.valuetuple.dll IT
添加这个文件到源控制参考
(可选):7。解决问题与另一个同样这样。DLL文件
- 硬编码一个固定的文件路径(或任何字符串)从来不是一个好的解决方案。