標籤:下拉 遇到 跳過 result 結果 const eve main lse
前言
之前不知看過哪位前輩的博文有點印象C# 7控制台開始支援執行非同步方法呼叫,然後閑來無事,搞著,搞著沒搞出來,然後就寫了這篇博文,不喜勿噴,或許對您有協助。
在Visual Studio 2017配置支援C# 7+文法
心想都VS2017了肯定是支援C# 7+文法,然後接著將控制台程式修改為非同步,然後告知於我不行,尼瑪這不是扯淡了麼,如下:
public class Program { public static async Task Main(string[] args) { using (var context = new EFCoreDbContext()) { var blog = await context.Blogs.FindAsync(3); blog.Name = "Jeffcky"; var result = await context.SaveChangesAsync(); } Console.ReadKey(); } }
然後得知.NET Framework 4.7可以使用C# 7文法,心想難道是沒裝.NET Framework 4.7麼,於是乎到如下地址下載.NET Framework 4.7(https://www.microsoft.com/zh-CN/download/details.aspx?id=55170),結果一安裝,它告訴我安裝了或更高版本:
然後一尋找資料發現在Visual Studio 2017 Update 3就支援C# 7文法,那我現在Visual Studio 2017版本都已經超過這版本不知道多少了,然後一看恍然大悟:
好了,到了這裡我的VS 2017已經支援C# 7文法了,看來是缺少什麼設定了,那就看如下方案吧。
(1)右鍵項目解決方案點擊【屬性】。
(2)點擊左側Tab中的【產生】,出來的介面右下角有個【進階】點擊進去,如下:
原來是使用語言版本是最新主要版本【預設】,那不應該是最高版本,開啟下拉式清單,選擇我們想要的版本吧,就可以愉快的玩耍了,如下:
或者我們手動編輯以.csproj的專案檔,找到如下內容:
<PropertyGroup Condition=" ‘$(Configuration)|$(Platform)‘ == ‘Debug|AnyCPU‘ "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <LangVersion>default</LangVersion> </PropertyGroup>
將如上LangVersion修改我們對應的版本如:<LangVersion>7.2</LangVersion>儲存,然後產生解決方案就好使了。
總結
理論上VS 2017不是應該使用最高C#文法版本麼,但事實不是如此,所以如果您遇到這個問題,首先請確保您是否安裝了.NET Framework 4.7,如果安裝了就按照上述方法進行即可在控制台使用非同步方法呼叫以及對應C# 7+文法。可能是我知道的太少,寫出來或許對不知道的童鞋有些許協助,早就知道的大佬們就跳過吧,我們下節再會。
如何在Visual Studio 2017中使用C# 7+文法