首页 > 其他分享 >【译】新的 MSBuild 编辑体验

【译】新的 MSBuild 编辑体验

时间:2024-04-10 09:00:41浏览次数:16  
标签:文件 MSBuild 编辑器 编辑 Visual Studio 体验 schema

  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,编辑器,编辑,Visual,Studio,体验,schema
From: https://www.cnblogs.com/MeteorSeed/p/18123735

相关文章

  • Bcdboot - Bcd 启动文件创建和修复工具。BCDEDIT - 启动配置数据存储编辑器。
    BCDBOOT/?Bcdboot-Bcd启动文件创建和修复工具。bcdboot.exe命令行工具用于将关键启动文件复制到系统分区以及创建新的系统BCD存储。bcdboot<源>[/l<区域设置>][/s<卷号>[/f<固件>]][/v]         [/vbcd][/m[{OSLoaderID}]][/addlast]......
  • 高铁站华丽升级:3D可视化技术打造沉浸式导航体验
    在科技飞速发展的今天,我们的生活正经历着前所未有的变革。高铁站作为现代交通的重要枢纽,也在不断地创新和进步。 3D可视化技术通过三维立体的方式,将高铁站内部和外部的结构、设施、流线等以更加直观、生动的形式呈现出来。乘客们只需通过手机或高铁站内的显示屏,就能轻松浏览到......
  • Mockito测试框架结合mybatisplus项目中第一次体验
    因为要补充单测,一般的springbootTest不是真正意义上的单测。我们需要mock数据库的连接,而不是真正的调用。所以我觉得mockito测试框架就挺好的pom引入如下代码,这里用inline是因为我要用到静态方法的调用。<dependency><groupId>org.mockito</groupId>......
  • 【最新】Claude Pro订阅充值教程,超大杯模型Claude 3 Opus模型体验方法
    一、关于ClaudePro|Claude3OpusClaude3系列包含三个大模型,按能力由弱到强别是:Claude3Haiku(最小/速度最快)Claude3Sonnet(标准/免费使用)Claude3Opus(最强/需要付费订阅)其中,最强的Opus在多项基准测试中得分都超过了GPT-4和Gemini1.0Ultra,......
  • asp.net KindEditor编辑器整合百度WebUploader插件批量上传图片
    集成背景说明多个图片进行批量上传新版本浏览器兼容性问题处理,原编辑器上传图片功能使用flash上传插件,由于最新版本浏览器不再支持flash,重新集成新的上传插件,对编辑器进行改造升级。一、KindEditor介绍KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即......
  • 防水游泳耳机有哪些?揭秘四大实力派,颠覆水下聆听体验
    随着科技的飞速发展,音乐已经成为我们生活中不可或缺的一部分。对于广大游泳爱好者来说,如何在水中也能畅享音乐成为了一个新的挑战。防水游泳耳机作为解决这一问题的利器,越来越受到消费者的青睐。(以上是部分测试过的游泳耳机)但面对市场上琳琅满目的产品,如何挑选一款既防水又......
  • 界面组件DevExpress WinForms v23.2 - 功能区、富文本编辑器功能升级
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!DevExpressWinForms控件日前正式发布了v23.2,此版......
  • Unity编辑器中运行正常,发布后报shader为null异常问题解决方案
    在Unity中,Shader是从代码中进行加载的,编辑器中并没有引用。在编辑器中运行项目没有问题,但当项目发布到移动平台,如ios、android、UWP之后,游戏中并不能找到对应的shader。因为Shader在场景中并未被引用,所以没有被打包。解决办法1在ProjectSettings里面的Graphics,添加上修改的打包......
  • linux三剑客之流编辑器sed
    sed(streameditor)是Linux和Unix系统中一个非常强大的文本处理工具。它主要用于对文本数据进行过滤和转换。sed可以在不打开文件的情况下,直接对输入流进行操作,并且可以将结果输出到标准输出或文件。基本语法:sed[options]'script'[input[output]]'[options]:sed的命令行......
  • 编辑距离
    题目链接https://leetcode.cn/problems/edit-distance/description/题目大意题目代码【记忆化搜索】classSolution{public:intminDistance(stringword1,stringword2){intn=word1.size(),m=word2.size();vector<vector<int>>memo(n,vecto......