Funkcje C # 6.0 nie działają z Visual Studio 2015

Testuję Visual Studio 2015 z C # 6.0, ale funkcje językowe nie działają. W aplikacji webowej MVC kompilowany jest następujący kod:

if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName))
{
    // More logic here...
}

Jednak, gdy uruchamiam aplikację przez Debug i IIS Express, dostaję następujący błąd:

CS1525: Invalid expression term".'

Jak włączyć te funkcje?

Author: jbtule, 2015-01-15

7 answers

To działa w MVC 5 (tested 5.2.3), wystarczy dodać pakiet Dom NuGet

Dostawcy CodeDOM dla kompilatora. NET...

Zastąpienie dostawców CodeDOM, którzy używają nowego kompilatora.NET Compiler Platform ("Roslyn") jako API usług. Zapewnia to wsparcie dla nowych funkcji językowych w systemach korzystających z CodeDOM (np. ASP.NET runtime compilation), jak również poprawę wydajności kompilacji tych systemy.

PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/

 197
Author: jbtule,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-21 19:43:54

Cóż, mam MVC5 i niedawno zainstalowany VS 2015.

Zainstalowałem Pakiet dostawców CodeDOM, ale to nie pomogło... Ale po tym zdałem sobie sprawę, że pakiet obsługuje tylko framework 4.5, podczas gdy ja mam target framework ustawiony na 4.6 podczas testów-działa jednak z 4.5...

Zwróć więc uwagę również na ramy docelowe. Jeśli masz 4.5-wystarczy zainstalować pakiet Microsoft.CodeDom.Dostawcy.DotNetCompilerPlatform. Ale jeśli masz 4.5.1-4.6 jako cel, będziesz musiał zmienić w www.sekcja config

  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">
          <providerOption name="CompilerVersion" value="v4.0"/>
      </compiler>
      <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>
  </system.codedom>

Dla C # wystarczy zmienić type na:

type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
 17
Author: Sergey Kljopov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-23 14:40:55

Miałem ten sam problem w Visual Studio 2015. Inna odpowiedź tutaj nawiązywała do rozwiązania, którego użyłem, ale błędnie określili poprawkę i nigdy nie dali wyjaśnienia.

W menu Visual Studio wybierz Project i powinieneś zobaczyć podpunkt Enable C#6 / VB 14 Jeśli masz ten problem. Wybierz podpunkt tego menu. Pobierze poprawne pakiety z Nuget i zainstaluje je. Następnie uruchom ponownie Visual Studio i załaduj ponownie rozwiązanie.

Nie mogę zweryfikować, czy to również poprawi Właściwości projektu > Build > Advanced > Wersja Językowa Wybór do C# 6, więc możesz chcieć to sprawdzić również po włączeniu C# 6 z menu.

 15
Author: Tom K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-17 13:46:12

Sprawdź właściwości projektu, przejdź do build, advanced i sprawdź, czy C# 6.0 nie ma go jako domyślnego.

Obecnie istnieje doskonałe wsparcie dla MVC5 i C# 6.0 i działa niesamowicie dobrze!

 14
Author: Bart Calixto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-13 17:01:31

Włącznie z poradą instalacji najnowszego Microsoft.CodeDom.Providers.DotNetCompilerPlatform musiałem również ustawić mój root Web.config system.codedom aby w końcu uzyskać wszystkie błędy w Visual Studio 2015, aby odejść:

  <system.codedom>
    <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>
  </system.codedom>

Teraz uruchom ponownie Visual Studio i to powinno wystarczyć.

 9
Author: Serj Sagan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-27 21:19:12

Visual Studio 2015 pokaże również Enable C#6 / VB 14 w menu projektu z ASP.NET wybrano stronę www / aplikację internetową.

Spowoduje to de facto zainstalowanie pakietów Microsoft.CodeDom.Providers.DotNetCompilerPlatform i Microsoft.Net.Compilers do twojego projektu i dodanie odpowiednich tagów do sieci.plik konfiguracyjny.

visual studio 2015-włącz CS6 snipp

 6
Author: Michal Šuvada,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-14 12:46:55
<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+" />
 -1
Author: JEuvin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-05 12:40:51