低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Roslyn 项目系统简介

2016 年 6 月 19 日

发布 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 中无法使用种类如此丰富的项目类型。

查看英文原文 Introducing the Roslyn Project System

2016 年 6 月 19 日 19:001339
用户头像

发布了 283 篇内容, 共 86.5 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

起飞!阿里独家的MySQL优化王者晋级之路,跟弯路说再见

Crud的程序员

MySQL 数据库 编程 程序员 架构

四面字节跳动Java研发岗,最终拿下Offer,只有努力,方能成功

周老师

Java 编程 程序员 架构 面试

HDFS

xujiangniao

YARN资源调度三种模型介绍

五分钟学大数据

YARN

MapReduce

xujiangniao

TcaplusDB五一假期返工通告

TcaplusDB

数据库 nosql TcaplusDB NoSQL数据库

干货|渗透学习资料大集合(书籍、工具、技术文档、视频教程)

Machine Gun

网络安全 信息安全 渗透测试 Kail linux

数据仓库分层架构及元数据管理

五分钟学大数据

数据仓库

HDFS的HA以及Yarn的HA高可用

五分钟学大数据

hdfs YARN 5月日更

万丈高楼平地起,爆肝21000字Java基础知识总结,收藏起来总有用得着的时候

北游学Java

Java 集合 线程池 IO流

Python打包后的EXE文件,如何获取同级目录

IT蜗壳-Tango

五月日更

TcaplusDB|五一结束,假期返工

数据人er

nosql TcaplusDB Tcaplus 国产数据库

Vue路由守卫完整流程实战+解析

HaiJun

Vue 前端 VueRouter

GitHub开源的最全中文诗歌古典文集数据库

不脱发的程序猿

GitHub 程序人生 开源项目 中华古典文集数据库

从简历被拒到收割8个大厂offer,我用了3个月成功破茧成蝶

比伯

Java 编程 架构 面试 计算机

专家解惑 | 关于华为云盘古大模型,你想问的都在这里~

华为云开发者社区

计算机视觉 nlp 华为云 盘古大模型 预训练

Java面试:BIO,NIO,AIO 的区别,别再傻傻分不清楚

Java大蜗牛

Java 程序员 面试 编程语言 后端

架构师实战营,模块三:架构设计详细文档

ifc177

#架构实战营

hive与传统数据库对比

五分钟学大数据

hive

yarn的多租户配置实现资源隔离

五分钟学大数据

YARN

破茧成蝶!从投简历石沉大海到收割5个大厂offer,我只刷了这套面试题!

Java架构追梦

Java 阿里巴巴 架构 offer 面试题总结

Android中绘制圆角的三种方式

teoking

android

大四实习生”都四面成功拿到字节跳动Offer了,你还有什么理由去摸鱼?

学Java关注我

Java 编程 架构 面试 计算机

一个江南皮鞋厂的小故事带我理解透了——什么是“代理模式”

Java架构师迁哥

阿里P8熬了一个月肝出这份32W字Java面试手册,在Github标星31K+

周老师

Java 编程 程序员 架构 面试

数据仓库的基本概念

五分钟学大数据

大数据

五四青年节 | Tcaplus祝大家五四青年节快乐!

数据人er

数据库 nosql TcaplusDB Tcaplus

架构训练营-作业三(消息队列详细架构设计文档)

eoeoeo

架构实战营

GitHub Actions:真正的 DevOps CI

世界上最好的语言

架构 DevOps 持续集成 Github Actions NoOps

3万字Java高频面试指南带你通关跳槽季,复习1个月拿下大厂offer

java专业爱好者

Java

zookeeper的架构

大数据技术指南

zookeeper 5月日更

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Roslyn项目系统简介-InfoQ