2017-02-14 12 views
11

Mam kilka projektów w rozwiązaniu, a funkcje C# 7, takie jak krotki i wyrazy rzutów, działają dobrze we wszystkich projektach bibliotecznych, ale istnieje projekt WWW (nie Core), który nie kompiluje się z powodu błędów w funkcjach C# 7. Zaraz po kompilacji okno błędu szybko się kasuje, prawdopodobnie dlatego, że IDE/edytor kompiluje te same jednostki bez błędu. Muszę użyć okna wyjściowego, aby zobaczyć błędy kompilatora. To tak, jakby IDE/edytor przyjął C# 7, ale kompilator użyty w kompilacji nie jest.Funkcje C# 7 nie działają w projekcie WWW w Visual Studio 2017 RC

Próbowałem dodać "__DEMO__,__DEMO_EXPERIMENTAL__" do symboli kompilacji warunkowych, bezskutecznie. Eksperymentowałem z kierowaniem na inną wersję środowiska i edytowałem plik web.config, w tym znaczniki compilation i targetFramework z system.web.

Przykładowe błędy:

if (!config.Properties.TryGetValue(modelId, out var model)) // error CS1003: Syntax error, ',' expected 
if (modelDescription is ComplexTypeModelDescription complexTypeModelDescription) // error CS1026:) expected 

Oto kilka pierwszych linii pliku csproj dla projektu:

<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" /> 
    <Import Project="..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" /> 
    <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> 

Aktualizacja: Próbowałem tworzenia nowego projektu internetowego z wykorzystaniem najnowszych szablonu w VS 2017 RC i kopiowanie w moich plikach źródłowych. Ta sama rzecz.

Próbowałem również jawnie ustawić projekt | Właściwości | Zbuduj | Zaawansowane | Wersja językowa do 7. Wyniki w "Niepoprawna opcja" 7 "dla/langversion".

Odpowiedz

22

Numer solution polega na aktualizacji pakietu nuget Microsoft.Net.Compilers do wersji> = 2.0.0. W tej chwili, aby pojawiła się wersja 2.0.0, należy zaznaczyć pole wyboru "Uwzględnij prezwolnienie" u góry menedżera pakietów. Po zainstalowaniu tego ustawienia zaawansowane Language version nie muszą być zastępowane od Default.

+1

Spędziłem ponad godzinę pracując nad budową i czyszcząc mój projekt za każdym razem z błędem fatalnym. Zainstalowałem nawet VS2017. Wtedy znalazłem twoją odpowiedź i natychmiast rozwiązałem problem. Dziękuję Ci! – jao

+1

Zastanawiam się, że ta odpowiedź nie jest oznaczona jako odpowiedź! Wielkie dzięki! –

+0

Idealny! W moim przypadku była to edycja społeczności VS2017. –