2015-07-29 7 views
23

Obecnie mój silnik widok brzytwy rzuca i błąd mówi "Proszę użyć wersji językowej 6 lub wyższej". To może być po prostu resharper, który dał mi wskazówkę. Ale jak zrobić maszynę do golenia używając C# 6.0. Reszta mojego rozwiązania w plikach cs i mogę używać wszystkich nowych funkcji wersji 7.Jak zrobić maszynę do gry z brzytwą, aby używać C# 6.0

+0

możliwym duplikatu [C# 6.0 cechuje nie działa z Visual Studio 2015] (http://stackoverflow.com/questions/27968963/c-sharp-6-0-features-not-working-wi-visual-studio-2015) – cadrell0

+0

nie - to rozwiązanie nie rozwiązało tego problemu. – MoXplod

Odpowiedz

5

Jeśli używasz tego z projektu 4.5.1, aktualizacja do 4.5.2 może go naprawić.

przeciwnym razie zaleca się, aby zainstalować ten pakiet Nuget dostarczyć nowe funkcjonalności: Microsoft.CodeDom.Providers.DotNetCompilerPlatform

więc robi coś takiego:

<p>@Model.Person?.Name</p> 

może działać. Jeśli nie, spróbuj być jawne tak:

<p>@(Model.Person?.Name)</p> 
15

wierzę, jest to spowodowane błędem w szablonach dla web.config kiedy projekt zostanie uaktualniony do nowszej wersji .NET Framework.

udało mi się rozwiązać ten problem, przechodząc do web.config znalezienie węzeł system.codedom oraz zmianę treści wyglądać następująco:

<compilers> 
    <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" /> 
    <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" /> 
</compilers> 
+4

Microsoft.Net.Compilers i Microsoft.CodeDom.Providers.DotNetCompilerPlatform musi być zainstalowany w celu pracy – Anytoe

+1

(Re-) Zainstalowanie powyższych dwóch pakietów doda tę sekcję do pliku .config. –

+1

Tak, dziękuję @Alen, i stwierdziłem, że wystarczy zainstalować pkg Nuget dla Microsoft.CodeDom.Providers.DotNetCompilerPlatform, ponieważ Microsoft.Net.Compilers jest zależnością. –

0

Najlepsze instrukcje krok po kroku udało mi się znaleźć dla umożliwienia Funkcje C# 6 w szablonach RazorEngine są dostępne tutaj: https://github.com/Antaris/RazorEngine/issues/363#issuecomment-273106183

To, o czym nie wspomniano, polega na upewnieniu się, że podczas dodawania sekcji kompilatorów do pliku app.config numer wersji jest zgodny z wersją z instalowanego pakietu. W komentarzu, że to wersja 1.0.3, ale pakiet zainstalowałem 1.0.4 zamiast miał, więc musiał wyglądać następująco:

<system.codedom> 
<compilers> 
    <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> 
</compilers> 

0

Inne odpowiedzi są dość dobre, ale znalazłem dobry i krótki artykuł, który ostatecznie wyjaśnić kroki w tym numerze: https://cpratt.co/using-csharp-6-or-7-with-mvc-5/

W skrócie:

  1. W konsoli Menedżer pakietów zainstalować Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

  2. checka/zmienia ty Web.config z następującymi liniami na koniec:

<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:7 /nowarn:1659;1699;1701" /> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:15 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" /> </compilers> </system.codedom>