2017-03-10 21 views
8

Próbuję użyć nowych funkcji krotek w C# 7 w aplikacji ASP.NET MVC 5, używając wersji .NET 4.6.1. i Visual Studio 2017 RC. Aby to zrobić, odwołałem się do tego artykułu tutaj: What's new in C# 7, który powiedział, aby zainstalować System.ValueTuple przez NuGet. Kiedy to zrobił, składnia krotka rozpoczął pracę dla mnie, jak w tym przykładzie kodu:Pakiet NuGet dla krotek w C# 7 powoduje błąd w moich widokach

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

public (string, string) TupleExample() 
{ 
    return ("Tuple Item One", "Tuple Item Two"); 
} 

Jednak kiedy uruchomić aplikację, moje poglądy natychmiast wyrzucić ten błąd:

CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

próbowałem wszystkie z następujących powodów:

  1. dodanie odniesienia do System.Runtime wersji 4.0 jako błąd mówi
  2. Tried co zostało zawarte w niniejszej C# 7.0 ValueTuple Question/Answer iw tym Question/Answer po zainstalowaniu kompilatorów 2.0.
  3. Ręczne dodawanie odwołania do System.Runtime w widoku (wydaje mi się, że byłem po prostu trochę zdesperowany do tego momentu).

Po odinstalowaniu pakietu System.ValueTuple NuGet i skomentowaniu nowego kodu Tuple, wszystko renderuje się poprawnie w widokach jak wcześniej.

Odpowiedz

10

Miałem ten sam problem. Dodałem pakiet Nuget Microsoft.CodeDom.Providers.DotNetCompilerPlatform (v1.0.3) do mojego projektu i działa on ponownie!

+1

To zadziałało. Dzięki!! – joshmcode

+0

To działało, ale musiałem również zaktualizować pakiet Microsoft.Net.Compilers do najnowszej wersji, w przeciwnym razie spowodowało błędy składniowe podczas kompilowania – MattJeanes

+0

Musiałem również zaktualizować język od 6 do 7 w web.config, tj.

Powiązane problemy