Roslyn项目系统简介

发布15年后,Microsoft终于开始替换Visual Studio中基于COM的C#和Visual Basic项目系统。Microsoft谈及很多有必要放弃目前所用系统的原因:

原生且基于COM 单线程并与UI线程绑定 难以通过和(不同用途的)子类型类扩展到聚合之外 与Visual Studio紧密绑定
新增的C#和Visual Basic项目系统的主要目标为:

可托管且基于托管接口 支持多线程,可扩展,响应性更好 可通过Managed Extensibility Framework(MEF)和不同组合方式轻松扩展。包含第三方在内的多方可对同一个项目系统做出自己的贡献 可托管在Visual Studio之外
为实现这些特性,新系统的代码基使用VB和C#共同编写而来。

“项目系统”是什么?

根据Roslyn项目系统网站的介绍,

项目系统是指介于磁盘上的项目文件(例如.csproj和.vbproj)以及Visual Studio的各种功能(包括但不限于解决方案浏览器、设计器、调试器、语言服务、构建和部署)之间的一层组件,对于项目文件中所包含文件执行的几乎所有操作都是通过项目系统实现的。

同时需要注意,项目系统并不是构建系统。虽然项目系统需要与构建系统(例如MSBuild)进行通信,但项目系统的角色处在IDE和项目文件之间。(如果一切顺利,也可以位于第三方工具和项目文件之间。)

为何使用Visual Basic?

在如此新的项目系统中使用Visual Basic的原因仅仅在于,Visual Basic是现成的。虽然项目系统原本使用C++编写的内核已经改为使用C#重写,但“Visual Studio 2005的VB团队已在2003/2004年前后使用VB编写了应用程序设计器、属性页面、资源编辑器,以及设置设计器”(来源)。直接移植这些代码即可,完全没必要从头开始重写。

通用项目系统会如何处理?

通用项目系统(Common Project System)依然存在,Roslyn项目系统将在此基础之上运行。

也许你对这个概念还不熟悉,通用项目系统是在去年夏天伴随项目系统扩展预览版一起公布的。该系统的目标在于让开发者能够更方便地在Visual Studio中创建新的项目类型,从媒体公告中可知,

我们非常高兴且激动地宣布,项目系统扩展预览版已发布。借助这个系统,开发者可以定义新的项目类型并以此为基础开发扩展,借此对用户体验进行定制,或只需要少量代码即可在几分钟内增加新的功能。以往需要编写超过十万行代码才能创建或维护整个项目系统(通常要基于MPFproj创建分支)的日子一去不复返,现在开发者可以通过Visual Studio内建的通用项目系统(CPS)直接进行开发工作,该系统已在C++、JavaScript,以及ASP.NET 5中广泛运用。你可以通过下面这个视频短片进一步了解这个系统。

另外需要注意的是,MPFproj主分支更新后,每个项目类型都需要将改动合并到自己项目类型对应的分支中。可以想象,对于缺乏足够维护预算的人来说,从长期角度来看这算不上一种可行的解决方案。也正是因此,在其他IDE中无法使用种类如此丰富的项目类型。
本文转自d1net(转载)

时间: 2024-11-13 08:13:50

Roslyn项目系统简介的相关文章

大数据相关开源系统简介汇总

本片博客介绍大数据相关的开源系统以及他们对应的一句话简介, 对于各位想大概了解大数据都有哪些开源系统的同学有帮助.各种相关开源系统简介:   如下是Apache基金支持的开源软件 hdfs   跟GFS类似, 一个分布式文件系统.   mapreduce   跟Google的MapReduce类似, 一个典型的简单的分布式计算框架.   yarn   资源管理系统, 跟Mesos类比.   Avro   跟PB类似, 用于将数据结构序列化成字节码, 在不同的语言之间切换.   官方举例是将C转换

《iOS应用开发》——1.1节iOS系统简介

1.1 iOS系统简介 iOS应用开发 如果这是你第一次接触iOS开发,欢迎你来到一个激动人心的新世界.iOS阵营提供了一些强大的设备待你探究.尤其是iPhone,它聚集了很多令人兴奋的技术,包括持续在线的因特网.地理定位.运动传感,以及照相功能.就在不久的过去,开发者们如果要尝试这些技术,要么需要自己创建定制的硬件,要么花好几万美元购买.而现在你可以将所有这些技术整个装进你的口袋并且随身携带. iPhone的硬件带来了先前无法想象的机会.革命性的新型社交网络应用程序占主导地位,地理定位应用已经

《嵌入式C编程实战》——第1章 嵌入式系统简介 1.1 嵌入式计算机系统

第1章 嵌入式系统简介 1.1 嵌入式计算机系统 图1.1为两台不同的计算机. 大部分人看到图1.1后,立刻就可以认出左边的机器是一台计算机.不过,几乎没有人会把右侧的机器看作是计算机,事实上,它确实是一台货真价实的计算机.这两台看起来截然不同的计算机最根本的区别在于,右侧的计算机是嵌入在洗衣机内部的. 如果你认识到这两者的差异,就可以将计算机分成通用计算机和嵌入式计算机两类. 1.通用计算机 通用计算机指的是台式机.笔记本电脑以及工作站等.通用计算机(几乎)总是配有键盘.显示设备.硬盘驱动器,

《嵌入式C编程实战》——第1章 嵌入式系统简介 1.1 嵌入式计算机系统

第1章 嵌入式系统简介 嵌入式C编程实战 1.1 嵌入式计算机系统 图1.1为两台不同的计算机. 大部分人看到图1.1后,立刻就可以认出左边的机器是一台计算机.不过,几乎没有人会把右侧的机器看作是计算机,事实上,它确实是一台货真价实的计算机.这两台看起来截然不同的计算机最根本的区别在于,右侧的计算机是嵌入在洗衣机内部的. 如果你认识到这两者的差异,就可以将计算机分成通用计算机和嵌入式计算机两类. 1.通用计算机通用计算机指的是台式机.笔记本电脑以及工作站等.通用计算机(几乎)总是配有键盘.显示设

《PHP、MySQL和Apache入门经典(第5版)》一2.8 MySQL权限系统简介

2.8 MySQL权限系统简介 PHP.MySQL和Apache入门经典(第5版) MySQL权限系统总是起作用的.当你第一次尝试连接MySQL服务器的时候,并且对于每一个后续的动作,MySQL都会检查以下3件事情. 你从哪里访问(你的主机)? 你说你是谁(你的用户名和密码)? 允许你做什么(你的命令权限)? 所有这些信息都存储在一个名为mysql的数据库中,当安装MySQL的时候,自动创建该数据库.在mysql数据库中,有如下几个和权限相关的表. columns_priv--为一个表中的具体字

SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础

SAS学习笔记之<SAS编程与数据挖掘商业案例>(1)系统简介和编程基础 1. SAS系统简介 1.1 SAS是先编译后执行的语言,data步标志着编译的开始. 数据指针:当前内存缓存区,输入数据所在位置. PDV:Program Data Vector,在DATA步中所有涉及的变量被编程当前向量的一部分. 2. SAS编程基础 2.1 SAS逻辑库 SAS逻辑库 | | | SAS数据集 SAS目录 其他SAS文件 | | SAS数据文件 SAS数据视图 2.2 创建逻辑库 libname

Windows Phone 8初学者开发—第10部分:数据绑定应用程序和透视应用程序项目模板简介

原文 Windows Phone 8初学者开发-第10部分:数据绑定应用程序和透视应用程序项目模板简介 原文地址: http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-10-Overview-of-the-Databound-App-and-Pivot-App-Project-Templates 源代码:  http://aka.ms/absbeginnerdevwp8 P

《PHP、MySQL和Apache入门经典(第5版)》一一2.8 MySQL权限系统简介

2.8 MySQL权限系统简介 PHP.MySQL和Apache入门经典(第5版) MySQL权限系统总是起作用的.当你第一次尝试连接MySQL服务器的时候,并且对于每一个后续的动作,MySQL都会检查以下3件事情. 你从哪里访问(你的主机)? 你说你是谁(你的用户名和密码)? 允许你做什么(你的命令权限)? 所有这些信息都存储在一个名为mysql的数据库中,当安装MySQL的时候,自动创建该数据库.在mysql数据库中,有如下几个和权限相关的表. columns_priv--为一个表中的具体字

《深入浅出DPDK》—第2章2.2节Cache系统简介

2.2 Cache系统简介随着计算机行业的飞速发展,CPU的速度和内存的大小都发生了翻天覆地的变化.英特尔公司在1982年推出80286芯片的时候,处理器内部含有13.4万个晶体管,时钟频率只有6MHz,内部和外部数据总线只有16位,地址总线24位,可寻址内存大小16MB.而英特尔公司在2014年推出的Haswell处理器的时候,处理器内部仅处理器本身就包含了17亿个晶体管,还不包括Cache和GPU这种复杂部件.时钟频率达到3.8GHz,数据总线和地址总线也都扩展到了64位,可以寻址的内存大小