当前位置: 首页 > news >正文

如何在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+语法。可能是我知道的太少,写出来或许对不知道的童鞋有些许帮助,早就知道的大佬们就跳过吧,我们下节再会。

相关文章:

  • NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json
  • 三、变量与常量定义
  • Wireshark基本介绍和学习TCP三次握手
  • Oracle APEX 系列文章4:在阿里云上打造属于你自己的APEX完整开发环境 (安装XE, ORDS, APEX)...
  • 如何优雅的在Spring容器启动完成后进行资源初始化
  • 基于百万数据max函数优化
  • 聊聊LightProbe原理实现以及对LightProbe数据的修改
  • BZOJ4827:[AH2017/HNOI2017]礼物——题解
  • 1分钟了解比特币
  • Java8 中增强 Future:CompletableFuture
  • 精彩源于起点——2018年潍坊市首次青少年Python编程公开课
  • 远程连不上服务器 解决方案
  • Python十分钟制作属于你自己的个性logo
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • 并发容器与框架——Fork/Join框架
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • C++11: atomic 头文件
  • Java超时控制的实现
  • miaov-React 最佳入门
  • vue-router的history模式发布配置
  • yii2中session跨域名的问题
  • 一些关于Rust在2019年的思考
  • 因为阿里,他们成了“杭漂”
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 【云吞铺子】性能抖动剖析(二)
  • const的用法,特别是用在函数前面与后面的区别
  • 仓管云——企业云erp功能有哪些?
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $GOPATH/go.mod exists but should not goland
  • (C语言)字符分类函数
  • (编译到47%失败)to be deleted
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .Net8 Blazor 尝鲜
  • .NET企业级应用架构设计系列之结尾篇
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @RequestBody的使用
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [android] 请求码和结果码的作用
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [C/C++]数据结构 深入挖掘环形链表问题
  • [C++]二叉搜索树
  • [C++]模板与STL简介
  • [C语言]——函数递归
  • [docker] Docker容器服务更新与发现之consul
  • [docker]docker网络-直接路由模式
  • [HarekazeCTF2019]encode_and_encode 不会编程的崽
  • [LWC小知识] 标准lightning-input-field怎么取得变更值(onchange)
  • [mysql]错误解决之Failed to start MySQL Server
  • [Oh My C++ Diary]带参数的main()函数
  • [one_demo_6]逆置整数
  • [pyqt5]PyQt5窗体背景图片拉伸填充