细说VS MSBuild 和 Framework 的区别

如今已经是 VS2017 横行的时代,而据我所知,大部分人还停留在使用 VS2015 VS2013 或更低的版本,主要是因为他们参与的项目基本使用这几个VS的版本开发的。眼红VS2017却不敢升级,主要还是害怕升级后出现的坑。哈哈,没关系,今天我就跟你们分享一下VS的原理。

首先,认识一下几个关键词:Framework 版本,MSBuild,Visual Studio

  • Visual Studio:每个人都需要用到,是目前来说宇宙第一的代码编辑器。目前最新的版本是 VS2017。其实从图标上,我们就可以大致了解到,从 VS2012 开始到现在,内核应该都是差不多的了,也就是说,你可以直接使用这几个版本的 VS 来打开解决方案,当然代码会不会报错你还得知道下面这个东西。
  • MSBuild:简单来说,这就是用来编译你的项目的,也就是所谓的编译器。如果没有 VS,我们就需要使用命令行来指定需要编译的项目,但我们使用的 VS 帮我们做了这件事;而 VS 的每一个版本,都有不同版本的 MSBuild,也就是说,MSBuild 的版本越高,支持的C#语法的版本越高。
  • Framework 版本:这个大家还是比较熟悉的,其实也就是* .NET 的运行环境*,每一个程序集都有一个最低运行环境,高版本兼容低版本这个道理我就不说了。

简单的概括一下,一套程序的 dll 能不能跑起来,由 Framework 版本决定。和 VS MSBuild 一点关系都没有。举个例子,你现在开发的是 MVC5,但你服务器只装了 Framework 4.0,而 MVC5 最低支持的 Framework 版本是 4.5,那自然就运行不起来啦。

因此:
* 能不能有更强的智能感知IDE 是 VS 的事情;
* 能不能编译,包括C#相应版本的语法,是 MSBuild 干的事情;
* 能不能在指定最小的环境运行,是 Framework 版本的事情;

如果我拿到一个旧项目,比如说是 VS2013 开发的,但你电脑里没有 VS2013,这个时候你需要做什么?
  1. 安装比该项目使用的VS更高或一样版本的 VS,有了则忽略。这么做的目的其实就是需要安装相应的MSBuild 的版本。当然,如果你很牛逼,只下一个 MSBuild 然后完全用命令行来编译也是可以的,你用记事本写代码都行;
  2. 使用VS打开这个项目以后,检查该项目的 Framework 版本;当然,你觉得版本低了,自己安一个高版本的,然后切换就行了,不过你得确保你服务器的 Framework 版本也得跟着升级,不然部署完了运行不起来,那可就抓瞎了哈。
  3. 当 Framework 版本升级好了,你就可以直接升级相应的程序集了,比如从 MVC4 -> MVC5,只不过需要手动配置某些细节,请看另一篇相关文章。
  4. 都差不多了,就编译试试看吧。如果有发现报错的地方是某些不认识的语法,那说明这个项目的 MSBuild 版本比你现在的 VS 所带的 MSBuild 版本高,那就果断升级吧,反正用最高版本的 VS 不会有问题就对可。

    总结

    当你知道这些原理以后,你根本就不需要害怕。当我看着那些人使用着旧版本的 VS 造成了工作效率低下而加班,再看看自己使用最新版本的 VS,无论是 IDE 还是编译速度都是上上等的,天天按时下班还能把活做完的高效率,试想一下自己是多么的牛逼,哈哈!!

你可能感兴趣的:(编程哲学)