2019-11-29-VisualStudio-使用三个方法启动最新-C#-功能

原文:2019-11-29-VisualStudio-使用三个方法启动最新-C#-功能

title author date CreateTime categories

VisualStudio 使用三个方法启动最新 C# 功能

lindexi

2019-11-29 08:58:50 +0800

2018-07-16 20:34:46 +0800

VisualStudio

本文告诉大家如何在 VisualStudio 打开最新的 C#,现在的微软更新 C# 很快,那么如何让 VisualStudio 在项目使用最新的

本文会告诉大家三个不同的方法,最后的方法是最推荐的

第一个方法

第一个方法是最简单的方法,右击项目属性,选择生成,可以看到下面界面

然后点击高级,选择最新语言版本,建议选择最新次要版本而不是直接选择是哪个版本

现在就可以使用最新的 C# 做出奇诡的业务,但是不告诉你除了在 Debug 需要设计还需要切换 Release 也设置,不然在 Debug 下可以使用,但是在 Release 就无法用最新的 C# 代码

第二个方法

如果升级了自己的 VisualStudio 项目为 VisualStudio 2017 项目格式,那么就很建议使用下面的方法,如何升级请看 从以前的项目格式迁移到 VS2017 新项目格式

打开项目的 csproj 文件,在一个PropertyGroup随便一个地方添加下面代码

<LangVersion>latest</LangVersion>

看起来的代码就是


  1. <PropertyGroup>
  2. <TargetFrameworks>netcoreapp2.0;net47</TargetFrameworks>
  3. <LangVersion>latest</LangVersion>
  4. <PackageId>lindexi.wpf.Mvvm</PackageId>
  5. <RootNamespace>lindexi.wpf.Mvvm</RootNamespace>
  6. <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  7. <Authors>lindexi</Authors>
  8. <RepositoryUrl>https://github.com/lindexi/UWP</RepositoryUrl>
  9. <Description>
  10. 欢迎来我博客 lindexi.gitee.io
  11. </Description>
  12. </PropertyGroup>

第三个方法

在上面一个方法,可以看到在一个新的项目都需要添加一句代码,这个方法是在新项目添加一个文件。

在项目文件所在的文件夹创建一个文件Directory.Build.props,需要注意这个文件的名字是特殊,不能随便改

在这里文件添加下面代码

<Project>
  <PropertyGroup>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>
</Project>

因为 VisualStudio 会寻找文件夹存在的 Directory.Build.props 把这里的内容作为选项

原文地址:https://www.cnblogs.com/lonelyxmas/p/12075841.html

时间: 2024-10-19 10:54:05

2019-11-29-VisualStudio-使用三个方法启动最新-C#-功能的相关文章

c++11线程创建的三种方法

一.用一个初始函数创建一个线程 直接看代码:注意c++在运行一个可执行程序的时候(创建了一个进程),会自动的创建一个主线程,这个主线程和进程同生共死,主线程结束,进程也就结束了. 1 #include "pch.h" 2 #include <iostream> 3 #include<thread> 4 void print1() 5 { 6 cout << "print1_1线程执行" << endl; 7 cout

矩阵结合律的证明-2019.11.29

学习日志-矩阵 矩阵的乘法 证明矩阵乘法的结合律,即证A(BC)=(AB)C 先令出三个矩阵 A_{mn}; B_{np}; C_(p*q) 先看等式右边(AB)C 新矩阵第i行第j列的元素就是AB相乘后的第i行与C的第j列各元素相乘的和 A的第i行乘以B的第1列如下: \begin{equation} \left[ \begin{array}{cccc} a_{i1} & a_{i2} & - & a_{in} \end{array} \right ] \left[ \begin

EOJ Monthly 2019.11 E. 数学题(莫比乌斯反演+杜教筛+拉格朗日插值)

传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f(n,k)\)为满足要求的\(k\)元组个数,现在要求出\(\sum_{i=1}^n f(i,k),1\leq n\leq 10^9,1\leq k\leq 1000\). 思路: 首先来化简一下式子,题目要求的就是: \[ \begin{aligned} &\sum_{i=1}^n\sum_{j=1

[Android] Android 定时任务实现的三种方法(以SeekBar的进度自动实现为例)

一.采用Handler与线程的sleep(long)方法 二.采用Handler与timer及TimerTask结合的方法 三.采用Handler的postDelayed(Runnable, long)方法  布局文件: activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.c

[BUUOJ记录] [强网杯 2019]随便注(三种方法)

本题主要考察堆叠注入,算是比较经典的一道题,在i春秋GYCTF中也出现了本题的升级版 猜测这里的MySQL语句结构应该是: select * from words where id='$inject'; 构造Payload:用单引号+分号闭合前面的语句,插入SQL语句,再用注释符注释掉后面的语句即可 先列出所有数据库: 1';show databases;# 得到: array(1) { [0]=> string(11) "ctftraining" } array(1) { [0

JAVA之线程同步的三种方法

最近接触到一个图片加载的项目,其中有声明到的线程池等资源需要在系统中线程共享,所以就去研究了一下线程同步的知识,总结了三种常用的线程同步的方法,特来与大家分享一下.这三种方法分别是:synchronized代码段.synchronized修饰方法/类.ThreadLocal本地线程变量. 我们通过一个例子来表现这三种方法:一张银行卡里面有300块钱,15个线程从这张银行卡中取钱,每个线程取一次且每次取20块钱:当当前余额不足100元时,则向账户中汇款20元.三种方法每种方法都有5个线程.我们预期

TypeScript学习笔记(三) - 方法

本篇将介绍在TypeScript里如何定义和使用方法. 一.方法标准声明和使用 1 // 方法声明 2 function func(x: number, y: number): number { 3 return x + y; 4 } 在TypeScript里,方法声明可以明确定义每一个参数的类型,和返回值的类型.在编译时,编译器会检查方法体的返回值类型是否符合定义的类型,同时在调用的时候也会检查传入的参数类型是否符合定义的类型,参数个数是否符合定义的个数. 1 let result1 = fu

OpenCV笔记(二)——查看Mat对象的数据的三种方法

我们有了Mat的对象之后,就可以开始对图像进行处理. 在图像的处理过程中,对数据的查看并且对其进行修改,这应当是比较频繁的操作了. 这里讲讲官方手册当中给出的三种方法. 第一种方法:使用指向Mat数据部分的指针. 代码如下: 1 Mat& ScanImageAndReduceC(Mat& I, const uchar* const table) 2 { 3 // accept only char type matrices 4 CV_Assert(I.depth() != sizeof(u

java多线程二之线程同步的三种方法

java多线程的难点是在:处理多个线程同步与并发运行时线程间的通信问题.java在处理线程同步时,常用方法有: 1.synchronized关键字. 2.Lock显示加锁. 3.信号量Semaphore. 线程同步问题引入: 创建一个银行账户Account类,在创建并启动100个线程往同一个Account类实例里面添加一块钱.在没有使用上面三种方法的情况下: 代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25