细说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,这个时候你需要做什么?
- 安装比该项目使用的VS更高或一样版本的 VS,有了则忽略。这么做的目的其实就是需要安装相应的MSBuild 的版本。当然,如果你很牛逼,只下一个 MSBuild 然后完全用命令行来编译也是可以的,你用记事本写代码都行;
- 使用VS打开这个项目以后,检查该项目的 Framework 版本;当然,你觉得版本低了,自己安一个高版本的,然后切换就行了,不过你得确保你服务器的 Framework 版本也得跟着升级,不然部署完了运行不起来,那可就抓瞎了哈。
- 当 Framework 版本升级好了,你就可以直接升级相应的程序集了,比如从 MVC4 -> MVC5,只不过需要手动配置某些细节,请看另一篇相关文章。
都差不多了,就编译试试看吧。如果有发现报错的地方是某些不认识的语法,那说明这个项目的 MSBuild 版本比你现在的 VS 所带的 MSBuild 版本高,那就果断升级吧,反正用最高版本的 VS 不会有问题就对可。
总结
当你知道这些原理以后,你根本就不需要害怕。当我看着那些人使用着旧版本的 VS 造成了工作效率低下而加班,再看看自己使用最新版本的 VS,无论是 IDE 还是编译速度都是上上等的,天天按时下班还能把活做完的高效率,试想一下自己是多么的牛逼,哈哈!!
转自:细说VS MSBuild 和 Framework 的区别
细说VS MSBuild 和 Framework 的区别的更多相关文章
- .a与.framework的区别
库是共享程序代码的方式,一般分为静态库和动态库. 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. iOS中静态库形式: .a和.framework 动态库:链接时不复制,程序运行 ...
- 细说ORM之Entity FrameWork系列(被替换)
一. 谈情怀 从第一次接触开发到现在(2018年),接近五年时间了,最初阶段连接数据库,使用的是[SQL语句+ADO.NET],那时候,什么存储过程.什么事务 统统不理解,生硬的将SQL语句传入SQL ...
- 【ASP.NET Core MVC 入门须知】Net Core和Net Framework 的区别
1.简单介绍 从上面图中我们可以看到.net 主要分为三个部分 .net FrameWork,.net Core ,Xamarin XAMARIN 主要用来构建APP的主要用的是C#语言 .NE ...
- [转]MSBuild Target Framework and Target Platform
本文转自;https://msdn.microsoft.com/en-us/library/hh264221.aspx A project can be built to run on a targe ...
- c#、.net、asp.net、asp 、ado.net、.net framework的区别
c#:一种编程语言 .net:一种运行环境 asp.net:基于.netFramework框架下的一种开发技术(相对与asp而言,引入了服务器控件,前后台可分,编译型的编程框架) asp:也是.net ...
- 细说setTimeout/setImmediate/process.nextTick的区别
node.js中的非IO的异步API提供了四种方法,分别为setTimeOut(),setInterval(),setImmediate()以及process.nextTick(),四种方法实现原理相 ...
- .Net Framework Client Profile 和 .Net Framework的区别[转]
原文链接 VS2010默认是以.Net Framework Client Profile为生成环境的,如果需要更多的功能,应该调用.Net Framework.
- ADO.Net和Entity Framework的区别联系
它们有以下几点区别:1,ADO.Net是开发人员自己select.update等写sql语句,来实现对数据库的增删改查等操作:采用EF进行开发操作数据库的时候,只需要操作对象,这样做使开发更方便,此时 ...
- 架构(Architecture)和框架(Framework)杂谈
1. 架构和框架的设计层次不同 类似于硬件设计,软件设计也分为不同的层次.典型的软件设计层次如下图: 在这个图中我们可以看到,Framework处于Micro-archite ...
随机推荐
- linux与window的\r与\n
应用程序 void niuniu(void) { char buf[16]; char *p[6]; int i; led_init(); uart_init(); while(1) { puts(& ...
- 值得推荐的10本PHP书籍(转)
值得推荐的10本PHP书籍(转) 一.总结 一句话总结: 二.值得推荐的10本PHP书籍 本篇文章的目的是想较全面地推荐10本PHP书籍,暂不讨论Linux/NGINX/Mysql等其他丛书. 前言 ...
- oracle 11g安装过程中问题:移动bin\oralbac11.dll 到bin\oralbac11.dll.dbl出错
解决方法: 直接找到oralbac11.dll.dbl这个文件,将其删除即可. http://blog.sina.com.cn/s/blog_51beaf0e0101000v.html
- pahlcon:循环调度(Dispatch Loop)或跳转
循环调度将会在分发器执行,直到没有action需要执行为止.在上面的例子中,只有一个action 被执行到.现在让我们来看下“forward”(转发)怎样才能在循环调度里提供一个更加复杂的操作流,从而 ...
- Python3 学习第十四弹: 模块学习六之re模块 + 正则表达式 (转)
本文转自 AstralWind 的博客:Python正则表达式指南 特来收藏 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有 ...
- GPON介绍及华为OLT网关注册配置流程(转)
原文地址:https://blog.csdn.net/zhouzxi/article/details/79244862 一.GPON介绍 1.GPON简介 随着技术的发展,光纤变得“便宜又好用”,因此 ...
- VirtualBox安装Redhat9.0
1.准备软件 虚拟机:VirtualBox-4.3.8-92456-Win.exe RedHat:shrike-i386-disc1.iso shrike-i386-disc2.iso ...
- Spring的AOP介绍
AOP:(Aspect-Orlented-Programming)面向切面编程,和面向对象是互相补充的.面向对象是横着编程,面向切面则是竖着编程. 1 2 3 4 @Before("exec ...
- .net 枚举(Enum)使用总结
在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,性别只有男跟女等等.如果把这些量说明为整型.字符型或其它类型显然是不妥当的.为此,C#提供了一种称为“ ...
- python3之环境搭建以及基础语法
早些时候,有一段时间吧,为了想免费下载网易云的收费音乐,也是翻了下python的教程的,语法方面没细致地去看,跟java.php.javascript这些都大同小异,也是面向对象的.那么,近期准备快速 ...