【译】新的 MSBuild 编辑体验
MSBuild 是 .NET 开发体验的基本组成部分,但它对新手和有经验的开发人员都具有挑战性。为了帮助开发人员更好地理解他们的项目文件,并访问需要直接编辑项目文件的高级功能,我们发布了一个实验性的 MSBuild 编辑器,它对 MSBuild 文件的理解比当前 XML schema 所允许的要丰富得多。根据反馈,我们希望所有 .NET 开发人员都可以默认使用它。如果您使用 MSBuild 文件工作,请尝试一下,让我们知道它是如何工作的。
适合哪些用户使用?
尽管 Visual Studio 为管理项目及其设置提供了丰富的 UI,但您可能需要直接编辑 csproj 文件以访问 UI 中未公开的某些高级特性。在从源代码控制合并更改时,您可能还需要直接编辑 csproj 文件,或者您可能正在编写 targets 和 props 文件以供本地使用或在 NuGet 包中发布。如果这些场景中的任何一个适用于您,那么我们希望您体验下新功能。
了解您的项目文件
新的 MSBuild 编辑器不仅为 MSBuild 文件中的 XML 元素提供了快速信息,还为 MSBuild 表达式中的属性、项和元数据提供了快速信息。快速信息弹出窗口更丰富,有指向相关文档的深层链接,以及指向其他文件引用的超链接,这些超链接可以帮助您了解底层如何使用该属性或项。
如果您想了解如何使用属性或项,可以使用 Ctrl-Click 或 Go to Definition 命令转到定义它的位置。你也可以使用 Find References 命令在所有导入的文件中执行精确的搜索:
不离开编辑器编写代码
即使作为一名经验丰富的 MSBuild 作者,我也经常打开文档来查找 MSBuild 属性、项和元数据的确切名称和允许值。当我使用 MSBuild 编辑器时,我很少这样做,因为它几乎在文件的任何地方都提供智能感知,并根据它的 schema 提供文档:
它对 NuGet 包有特殊的支持,允许你搜索包的 ID,并查看包的描述和链接到它的 NuGet.org 页面:
其他类型也有特殊处理,例如语言文化:
在 MSBuild 表达式中也支持智能感知,包括属性函数和项函数:
编辑器并不局限于在其 schema 中定义的那些属性和项。它扫描所有导入的 MSBuild 文件,并为在这些文件中找到的任何属性、项、元数据和目标提供“推断完成”。更棒的是,工具提示有一个超链接,指向属性或项的应用场景:
及早发现问题
MSBuild 编辑器的验证不仅仅是 XML 验证。它将类型系统覆盖到 MSBuild 上,因此您将获得关于 URL 或版本字符串等的格式错误。它对 MSBuild 表达式格式的理解意味着您无需运行构建就可以捕获格式不正确的条件和表达式。
甚至还有一些 Roslyn 风格的分析器和代码修复。
增强 MSBuild 编辑体验
MSBuild 编辑器由一种新的 MSBuild 特定的基于 json 的 schema 格式提供支持,该格式允许为 MSBuild 属性、项、项元数据和 targets 定义文档和类型注释。它包括 .NET SDK 和其他常用 targets 和 SDK 的内置schema。
但是,您也可以为自己的 MSBuild targets 编写 schema,以允许 MSBuild 编辑器在编辑或使用它们时提供更丰富的体验。如果您是包含 build targets 的 NuGet 包的作者,那么您可以在 NuGet 包中发布该 sidecar schema,以便为包的使用者提供更好的 MSBuild 编辑体验。
Q&A
Q:扩展有一个 GitHub 仓库-我可以从源代码构建和贡献吗?
A:绝对!只需克隆仓库及其子模块,在 Visual Studio 中打开,然后按 F5。
Q:为什么扩展仓库、命名空间和程序集的名字中有“MonoDevelop”?
A:MSBuild 编辑器是我最初在2015年3月为 MonoDevelop IDE 创建的扩展的后代。尽管它在过去几年里发展了很多,包括移植到 Visual Studio,但出于怀旧的考虑,我保留了内部名称。
Q:我可以在 Visual Studio Code 中使用扩展吗?
A:还不行!我目前正在移植扩展到 LSP(语言服务器协议,Language Server Protocol),所以它可以在 Visual Studio Code 扩展中使用。虽然 LSP 是新扩展的明显选择,但这个代码库可以追溯到 Visual Studio Code 发布之前。
我们渴望您的反馈!
如果您想尝试下,你可以通过在 Visual Studio 扩展管理中搜索“MSBuild Editor”找到它,或者从 Visual Studio Marketplace 下载它。该扩展目前仅适用于 Visual Studio,但将其移植到 Visual Studio Code 的工作正在进行中。
如果您遇到任何此扩展的任何问题,请发布其到 GitHub 问题页面。扩展是开源的,欢迎贡献。请填写这份调查问卷,让我们了解您的经历。我们感谢您的反馈,它将有助于指导实验如何发展,以及 MSBuild 编辑器是否会成为 .NET 开发体验的官方支持部分。
原文链接:https://devblogs.microsoft.com/visualstudio/experimental-msbuild-editor/
【译】新的 MSBuild 编辑体验的更多相关文章
- 一款免费的在线 Markdown 笔记,类似 typora 编辑体验
为什么要开发一款新的编辑器 自从我开始使用 Markdown,就爱上了这种标记语法,轻量.纯文本兼容是最大的优点,哪里都可以编辑,一开始是在 IDE 上直接编辑,后来笔记越来越多,需要上传图片,有云同 ...
- 加链接太麻烦?使用 linkit 模块提升用户编辑体验
在制作网站内容时,适当地添加链接会非常用利于网站内容的SEO.加入链接的文章可以让访客了解到更多相关内容,从而提升文章的质量.被链接到的内容也能因此获得更多的访问和关注.只不过,在内容编辑时添加链接却 ...
- Evermoney -- 重新定义印象笔记编辑体验
关于印象笔记 知识管理工具自己也算用过很多了,国内的有道,为知:国外的onenote.因为印象笔记的裁剪以及搜索功能太强大了,所以最后还是选择用印象笔记了.不过印象笔记这个公司确实态度有点不敢恭维,关 ...
- 做一个新产品需求,体验的分析文档?(例:喜马拉雅FM)
2.1 战略层 2.11 产品定位: 一款产品覆盖面广,收听节目种类齐全,资源丰富的电台APP. 以PGC为主流,通过合作方式吸纳专业的电台人,节目人,行业名人分享内容. 融合UGC,满足人们在空闲时 ...
- (译)开发优秀的虚拟现实体验:从开发I Expect You to Die中总结的六个要点
这篇文章是我从网上找来的,我觉得他非常详细的解释了VR发展的需求和必要.我认为通过这篇文章可以让大家了解VR. 译者写在最前: 来到追光动画有好几个月了,抱歉这段时间也没有什么文章与大家分享,我现在在 ...
- [译]Walkthrough: Using MSBuild
原文 MSBuild是微软VS的Build平台. 你可以在Visual Studio或Windows命令行中运行MSBuild.在这我们使用VS创建一个MSBuild项目.你可以在VS中编辑项目文件, ...
- sitecore系列教程之改进Sitecore编辑体验的5个步骤
Sitecore完全关注客户体验,在适当的时间为合适的人提供合适的体验.虽然没有人会不同意客户体验是王道,但我们仍然需要记住每天使用Sitecore的人们为客户带来惊人体验的体验. 我看到无数客户通过 ...
- 个人官网第8次升级(新功能、用户体验、修复bug、系统优化)
1.新功能. 操作日志和搜索日志的Excel报表下载. 2.用户体验. 如果是通过搜索,进入到一篇内容, 搜索关键词需要高亮. 比如,搜索"程序员"出现若干内容链接,打开链接的页面 ...
- [译]新的CCSDS图像压缩推荐标准
摘要——空间数据系统咨询委员会(CCSDS)的数据压缩工作组最近通过了图像数据压缩议案,最终版本预计在2005年发布.议案中采用的算法由两部分组成,先是一个对图像的二维离散小波变换,然后是对变换后的数 ...
- JAVA 8 新特性Stream初体验
什么是 Stream? Stream(流)是一个来自数据源的元素队列并支持聚合操作 <strong元素队列< strong="">元素是特定类型的对象,形成一个队 ...
随机推荐
- canal实现mysql跨机房备份
背景介绍 跨机房数据库数据备份 数据库增量异构系统分发(cache,mq等) 数据内容聚合分析组件 摘录作者的描述 原理图 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL ...
- Kconnect使用sftp windows自定义协议
终于有时间写点东西了,上次写东西已经是三个月之前了.自从出现了觉得一个月写一篇文章也没关系的想法之后就已经完全忘记有这回事儿了.一直觉得没有足够的时间,但是又想写出质量比较好的文章,所以就一直没有动笔 ...
- Android系统瘦身
文件格式: Windows常见的文件系统是FAT16.FAT32,NTFS,在Windows环境提供了分区格式转换工具,可以在DOC环境下 使用 Convert命令(Convert e:/fs:nt ...
- 多个 .NET Core SDK 版本之间进行切换 global.json
由于同一台电脑可以安装多个版本的.NET Core SDK. 当安装了许多不同版本的.NET Core SDK 之后,要如何才能使用旧版dotnet 命令,执行dotnet new 或dotnet b ...
- python 创建文件夹并写入文件源码
废话就不多少说了,直接上源码吧. import time import os folder = os.getcwd() folder = folder + '/test/' print(folder) ...
- 基于wifi的音频采集及处理解决方案小结
一沉浮 这些年,一直围绕着音频来做案子,做出来的案子自己都数不清楚了.记得前几年,刚出道的时候,就把wifi音频传输的设备做出来了.可惜的是,当初太超前市场了,鲜有人问.随着时间的推移,在疫情之 ...
- BES2300方案设计开发阶段总结
前记 从事BES芯片的方案设计已经快三年了 ,这三年,伴随着和BES的一起共同成长,我们做了不少业内大的客户.从去年年初开始接触2300方案开发,到目前为止,已经做出了不少产品.这里就说一下心得体 ...
- PAT 甲级【1011 World Cup Betting】
import java.io.IOException; import java.io.InputStreamReader; import java.io.StreamTokenizer; public ...
- Android 开发day1
下载了安卓开发软件 Android studio 下载过程中遇到了,C盘默认安装路径不匹配问题,因为我的系统文件是中文的,软件是国外的软件,导致了他不让我安装,我还是最后在C盘创建了一个文件后,直接安 ...
- 观展新体验!3DCAT助力青桔 “未来之见”线上发布会炫酷亮相
在"未来之见"滴滴青桔2021新品发布会现场,青桔推出概念车"青桔X","X"代表了无限可能和憧憬,街边的共享单车?这只是其中一面,青桔为您 ...