我有一个针对.net Framework 4.52的MVC 5项目,我通过Nuget安装了System.ValueTuple。我在Windows 7上使用Visual Studio2017。在开发过程中,Visual Studio不会抱怨Tuple返回类型,但是在构建时会出现一系列错误:
error CS1519: Invalid token '(' in class, struct, or interface member declaration
error CS1519: Invalid token ',' in class, struct, or interface member declaration
error CS1519: Invalid token ')' in class, struct, or interface member declaration
error CS1520: Method must have a return type
error CS1026: ) expected
and more..
这是破坏方法:
public (bool, string) GetSettings()
{
if (settingsFile.IsNullOrEmpty())
throw new Exception("Settings file is null or empty!");
try
{
var definition = new { active = false, excludeList = "" };
var obj = JsonConvert.DeserializeAnonymousType(settingsFile, definition);
return (obj.active, obj.excludeList);
}
catch
{
//TODO: log exception.
return (false, string.Empty);
}
}
除了认为它与我的框架版本不兼容之外,我不知道如何解决此问题。几个广泛的在线搜索都没有发现有关此的信息。
答案 0 :(得分:0)
William Xitaras对问题的评论中提到的MSDN博客链接已经有了快速答案。
在blog上阅读本段:
请注意,如果在项目中看不到ValueTuple,则必须将System.ValueTuple 4.3.0 NuGet程序包下载到项目中。如果您使用的是.NET Framework 4.7或更高版本,或者.NET Standard Library 2.0或更高版本,则无需执行任何操作。
因此,在.NET Framework v4.7之前,您不能直接将System.ValueTuple nuget用于.NET Framework,因为您必须首先满足一些要求。 为了确保它可以正常工作,您必须:
要设置要使用的C#编译器版本,请转到项目属性,选择“构建”选项卡,单击“高级”按钮。可用的C#编译器列表将在我的VS 2017中显示为此屏幕截图:
如果将目标更改为.NET Framework 4.7或更高版本,则不应使用System.ValueTuple nuget,因为它在.NET Framework 4.7的运行时中可用。