我查找了與此相關的其他問題,但沒有一個看起來與我正在尋找的東西相當。在ASP.NET MVC Core項目的View中使用C#7功能
我有一個運行在ASP.NET Core上的網站,其中包含VS2017中的新項目結構。使用C#7特性的代碼文件很好地編譯。但試圖在視圖中使用這些功能會導致一系列關於語法的錯誤。我嘗試安裝Roslyn,以便在編譯視圖時使用它,因爲我可以告訴C#7功能在Roslyn nuget軟件包2.x和更高版本中可用。但是現在我收到的反饋明確地說明了
錯誤CS8059:功能的'變量聲明'在C#6中不可用。請使用語言版本7或更高版本。
在過去,我會檢查web.config,但ASP.NET Core項目中沒有web.config,而是根目錄中幾乎空的web項目,以便從IIS處理請求。
我該如何表明我的視圖應該使用Roslyn進行編譯,因爲直到運行時纔會這樣做呢?至少我假設這會解決我的問題。
編輯: 這個問題不是重複的,就像我在開始時提到的那樣,我也尋找現有的問題。這是在編譯時在應用程序中特別啓用C#7功能,並且僅適用於ASP.NET應用程序。我正在使用ASP.NET Core,它沒有web.config及其中定義的任何編譯設置。此外,我試圖做的是在運行時編譯的視圖,並可能在不同的系統上。
解決方案:
任何有興趣,你必須羅斯林添加到您的項目(我知道),但你也必須給RazorViewEngineOptions
配置爲使用指示的語言版本(默認值是6 )。我已經做到了這一點,但我沒有做到正確。我需要將WithLanguageVersion()
的結果返回到ParseOptions
的頂端以取代它們。
services.AddMvc().AddRazorOptions(options => options.ParseOptions = options.ParseOptions.WithLanguageVersion(LanguageVersion.CSharp7));
[啓用C#7在一個asp.net應用程序]的可能的複製(http://stackoverflow.com/ question/42744689/enabling-c-sharp-7-in-a-asp-net-application) – uTeisT
不是重複的,增加了細節爲什麼。 –
您收到的錯誤消息表示編譯器已正確升級(新語法已被識別)。必須有一個/ langversion設置在ASP.Net Core中控制這個,但我不知道它在哪裏。抱歉。 –