C#7中的元组NuGet包导致我的视​​图出错

jos*_*ode 10 asp.net c#-7.0

我试图使用.NET版本4.6.1在ASP.NET MVC 5应用程序中使用C#7中的新元组功能.和Visual Studio 2017 RC.为此,我在这里引用了这篇文章:C#7中有什么新东西,它说要通过NuGet安装System.ValueTuple.当我这样做时,元组语法开始为我工作,就像在这个示例代码中:

public void TupleCaller()
{
   (var valOne, var valTwo) = TupleExample();
}

public (string, string) TupleExample()
{
    return ("Tuple Item One", "Tuple Item Two");
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行应用程序时,我的视图会立即抛出此错误:

CS0012:类型'System.Object'在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.

我尝试了以下所有方法:

  1. 如错误所示,添加对System.Runtime V4.0的引用
  2. 尝试通过安装2.0编译器来解决此C#7.0 ValueTuple问题/答案以及本问题/答案中提供的内容.
  3. 在视图中手动添加对System.Runtime的引用(我想我到那时只是有点绝望).

一旦卸载System.ValueTuple NuGet包并注释掉新的Tuple代码,所有内容都会像以前一样在视图中正确呈现.

小智 15

我遇到了同样的问题.我将Microsoft.CodeDom.Providers.DotNetCompilerPlatformNuget包(v1.0.3)添加到我的项目中,它再次起作用!

  • 这工作但我还需要将Microsoft.Net.Compilers包升级到最新版本,否则在编译时会导致语法错误 (3认同)
  • 我还不得不在web.config中将langversion从6提升到7,即<compiler language =“ c#; cs; csharp” extension =“。cs” type =“ Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider,Microsoft.CodeDom。 Providers.DotNetCompilerPlatform,版本= 1.0.3.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35“ warningLevel =” 4“ editorOptions =” / langversion:7 / nowarn:1659; 1699; 1701“ /> (2认同)