当前位置: 首页 > news >正文

如何安装和准备 Visual Studio 扩展/插件开发环境

因为很多涉及到 Visual Studio 插件开发相关的文章/博客需要以安装 Visual Studio 插件开发环境为基础,所以本文介绍如何安装 Visual Studio 插件开发环境,以简化那些博客中的内容。


启动 Visual Studio 安装程序

请在开始菜单中找到或者搜索 Visual Studio Installer,然后启动它:

找到并且启动 Visual Studio Installer

安装 Visual Studio 插件开发工作负载

在 Visual Studio 的安装界面中选择“修改”:

修改

在工作负载中找到并勾选 Visual Studio 扩展开发(英文版是 Visual Studio extension development),然后按下右下角的“修改”:

勾选 Visual Studio 扩展开发负载

等待 Visual Studio 安装完 Visual Studio 扩展开发。如果提示重启计算机,那么就重启一下。

如果你想开发基于 Roslyn 的语法/语义分析插件

如果你想开发基于 Roslyn 的语法/语义分析插件,那么需要在选择了 Visual Studio 扩展开发工作负载之后,在右侧将可选的 .NET Compiler Platform SDK 也打上勾。

.NET Compiler Platform SDK

体验 Visual Studio 插件模板

如果你成功安装了 Visual Studio 扩展开发的工作负载,那么你在新建项目的时候就可以看到 Visual Studio 扩展开发相关的项目模板。

Visual Studio 扩展开发相关模板


我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

相关文章:

  • 基于 Roslyn 同时为 Visual Studio 插件和 NuGet 包开发 .NET/C# 源代码分析器 Analyzer 和修改器 CodeFixProvider
  • 软件界面中一些易混淆/易用错的界面文案,以及一些约定俗成的文案约定
  • WPF 的 VisualBrush 只刷新显示的视觉效果,不刷新布局范围
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • 使用 Roslyn 分析代码注释,给 TODO 类型的注释添加负责人、截止日期和 issue 链接跟踪
  • 为 NuGet 指定检测的 MSBuild 路径或版本,解决 MSBuild auto-detection: using msbuild version 自动查找路径不合适的问题
  • 解决方案文件 sln 中的项目类型 GUID
  • 两种方法设置 .NET/C# 项目的编译顺序,而不影响项目之间的引用
  • 理解 Visual Studio 解决方案文件格式(.sln)
  • nuget.exe 还原解决方案 NuGet 包的时候出现错误:调用的目标发生了异常。Error parsing the nested project section in solution file
  • 找出 .NET Core SDK 是否使用预览版的全局配置文件在哪里(探索篇)
  • 如何在 Visual Studio 2019 中设置使用 .NET Core SDK 的预览版(全局生效)
  • 使用基于 Roslyn 的 Microsoft.CodeAnalysis.PublicApiAnalyzers 来追踪项目的 API 改动,帮助保持库的 API 兼容性
  • Visual Studio 2019 中使用 .NET Core 预览版 SDK 的全局配置文件在哪里?
  • 推荐几款连字字体,在代码编辑器中启用连字字体(Visual Studio Code)
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【EOS】Cleos基础
  • bearychat的java client
  • C学习-枚举(九)
  • JS数组方法汇总
  • MYSQL 的 IF 函数
  • tensorflow学习笔记3——MNIST应用篇
  • use Google search engine
  • 大数据与云计算学习:数据分析(二)
  • 分享几个不错的工具
  • 微信开放平台全网发布【失败】的几点排查方法
  • 走向全栈之MongoDB的使用
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #define、const、typedef的差别
  • (03)光刻——半导体电路的绘制
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .Mobi域名介绍
  • .NET Core WebAPI中封装Swagger配置
  • .Net 路由处理厉害了
  • .net 生成二级域名
  • .Net的C#语言取月份数值对应的MonthName值
  • .net开发时的诡异问题,button的onclick事件无效
  • .net生成的类,跨工程调用显示注释
  • .NET运行机制
  • /bin/bash^M: bad interpreter: No such file or directory
  • ;号自动换行
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [20161101]rman备份与数据文件变化7.txt
  • [android] 请求码和结果码的作用
  • [ccc3.0][数字钥匙] UWB配置和使用(二)
  • [element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案
  • [Gradle] 在 Eclipse 下利用 gradle 构建系统
  • [hdu 1711] Number Sequence [kmp]