如何在Visual Studio 2017中使用C# 7+语法

前言

之前不知看过哪位前辈的博文有点印象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+语法。可能是我知道的太少,写出来或许对不知道的童鞋有些许帮助,早就知道的大佬们就跳过吧,我们下节再会。


为了方便大家在移动端也能看到我分享的博文,现已注册个人公众号,扫描上方左边二维码即可,欢迎大家关注,有时间会及时分享相关技术博文。

感谢花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让楼主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!
本文版权归作者和博客园共有,来源网址:http://www.cnblogs.com/CreateMyself)/欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   Jeffcky  阅读(17322)  评论(15编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示