2017-09-22 71 views
-4

我正在Windows XP计算机上运行的Visual Studio 2017中构建应用程序,但能够使用C#7.0元组文字将是我的解决方案的理想组件。我可以使用(字符串a,字符串b)Tuple语法与.NET 4.5.2吗?

我想我可能只是增加两个的NuGet包,Microsoft.Net.CompilersSystem.ValueType,使我的可执行文件使用的语法像(string foo, string bar)但我发现了一个语法错误,CS8179 C# Predefined type is not defined or imported。 Visual Studio的ctrl + .功能试图让我去nuget安装System.ValueType,但它已经安装在项目中。另一个选项是use local version 4.4.0,但选择该选项实际上不会执行任何操作。

+0

答案是肯定的,你可以这样做。由于显然你不能在那里一定有其他事情出错。请进一步解释/包含更多细节。我创建了一个新的C#类库项目,将其设置为.NET 4.5.2,向ValueTuple nuget包添加了一个引用,然后尝试类似于您在标题中询问的代码,并且它可以工作。 –

+0

令人着迷,我刚刚尝试过。我无法让它工作。我做了一个全新的项目,安装了指定的nuget-packages,恢复为.NET 4.5.2,并添加了函数签名'public(string,int)GetTuple()'。收到相同的编译器错误。如果你转到Project> Properties> Build> Advanced,你的lang-version选项设置为什么?我正在使用C#最新主要版本(默认) –

+0

好的。我想解决方案是让'ctrl + .'负责为你安装'System.ValueType'是最终将它正确地链接起来。但是,如果我从Nuget软件包管理器手动安装'System.ValueType',那么我们遇到了问题。真奇怪。 –

回答

2

我的问题的解决方案是卸载我手动安装的System.ValueType版本,并让ctrl + .助理负责安装它。

+0

我认为你的意思是'ValueTuple',而不是'ValueType'。很高兴它解决了。 –

相关问题