项目组成

首先我们来看一下模板自动生成的工程文件:

    

它包括两个C++工程和两个C#工程,首先我们来看两个C++的工程:

  1. VSShellStub1, 这个是系统的启动项,它是最终的exe文件的项目。
  2. VSShellStub1UI, 从名字上来看,它是对系统的UI进行一些微调的管理。

打开这两个C++工程看就知道,它们的cpp代码非常少,VSShellStub1UI中几乎没有cpp代码,VSShellStub1中也只有几个系统自动生成的cpp文件,几乎不需要手动修改。但是,它有一些配置文件,从而使得我们可以实现对系统组件的定制。

然后再来看看两个C#的工程。

  1. VSShellStub1.AboutBoxPackage, 这个是系统自动生成的一个示例的插件,提供了一个菜单和一个AboutMe的对话框,是插件的主体实现部分,我们可以在工程中增加一个或多个这样的插件。
  2. ShellExtensionsVSIX, 这个工程则是一个类似插件管理器,只有一个xml格式的配置文件,通过它可以配置哪些插件需要加载。

从中我们可以看出,这个Shell框架是一个或多个插件 + 三个配置工程来组成的。

程序基本信息的修改

通过修改后缀为Application.pkgdef的文件可以修改一些程序的基本信息,主要包括标题,图标,启动画面等。

    

组件定制

Visual Studio Shell集中模式默认是附送了许多组件的。(具体可以参看这个链接:http://msdn.microsoft.com/zh-cn/library/vstudio/bb685691.aspx

    

但是,如果我们开发的不是一个GUI界面的编程语言时,往往使用不了这么多组件,这是我们就需要对组件进行定制,对组件的精简大多并不需要写代码,主要是修改配置文件。一般有这几个文件可以修改:

pkgdef文件

这个文件中主要配置了那些文件夹下的组件会被定制下来,通过删除不必要的加载路径可以屏蔽大多数组件。

    

pkgundef文件

有一些核心组件是必须加载的,因此不能通过pkgdef屏蔽,此时可以通过后缀为"pkgundef"的配置文件进行微调。

    

从其命名就可以看出,这个文件中配置的组件都会被屏蔽掉,只需要把相关包的注释放开即可。

ApplicationCommands.vsct文件

这个文件则用于屏蔽系统附送的视图、工具栏、命令等,属于进一步微调性质。

    

使用方式也是一样,放开注释即可。

通过配置文件定制

由于Visual Studio的菜单,工具栏都是可以自定义的,对于一些找不到如何定制的菜单,还可以通过自定义菜单、工具栏的方式进行定制,然后把它放到General.vssettings文件中作为默认配置发布。具体操作方法可以参看这个地址Customize MenuBar Menu titles in Visual Studio 2010/2012

不过,这种方式的定制是可逆的,用户可以通过自定义菜单将其还原回来,用于个性化到还是可以。

 

VisualStudio Shell简介 — 界面定制的更多相关文章

  1. VisualStudio Shell简介

    VisualStudio Shell是微软效仿Eclipse推出的一个免费的VisualStudio内核,开发者可以通过在其上挂载插件(和传统的VS插件一样),从而快速开发自己的程序.它是Visual ...

  2. VisualStudio Shell简介 — 集成插件

    Visual Studio Shell只是提供了一个内核,我们还需要在其基础上补充功能,从而实现我们自己的IDE.Visual Studio Shell的插件开发和Visual Studio插件开发是 ...

  3. Shell简介:1分钟理解什么是Shell 脚本语言 解释器 以及编译器和编译语言

    Shell简介:1分钟理解什么是Shell 脚本语言 解释器 以及编译器和编译语言 现在我们使用的操作系统(Windows.Mac OS.Android.iOS 等)都是带图形界面的,简单直观,容易上 ...

  4. shell 简介

    shell 简介 shell既是一种命令语言,也是一种程序设计语言.作为命令语言,它交互式地解析和执行用户输入的命令:作为程序设计语言,他定义了各种变量和参数,并提供了许多的高级语言才具有的控制结构, ...

  5. shell之路【第一篇】shell简介与入门

    shell简介 1.Shell 诞生于 Unix,Unix的第一个脚本语言,是与 Unix/Linux 交互的工具,单独地学习 Shell 是没有意义的,shell使用的熟练程度反映了用户对Unix/ ...

  6. Microsoft.VisualStudio.Shell.14.0.dll 文件位置

    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Platform\Shel ...

  7. Linux Shell系列教程之(一)Shell简介

    本文是Linux Shell系列教程的第(一)篇,更多shell教程请看:Linux Shell系列教程 想要学习linux,shell知识必不可少,今天就给大家来简单介绍下shell的基本知识. S ...

  8. vs2017添加引用提示“找不到 Microsoft.VisualStudio.Shell.Interop.IVsReferenceManager 服务的实例”解决方案

    vs2017添加引用提示“找不到 Microsoft.VisualStudio.Shell.Interop.IVsReferenceManager 服务的实例” 不知道是不是安装时候的问题?解决方法: ...

  9. shell(shell简介)

    1.shell 简介 Shell 是一个 C 语言编写的脚本语言,它是用户与 Linux 的桥梁,用户输入命令交给 Shell 处理,shell是一个命令解释器,是一个工具箱, Shell 将相应的操 ...

随机推荐

  1. pom中的resources设置

    Maven项目中一般都会把配置文件放到src/main/resources目录下,有时为了满足多个环境打包发布,可能会创建一些自定义目录来放置各环境的配置文件,如:src/main/profile/d ...

  2. springboot10 framwork

    一.Spring介绍 Spring 是位于业务逻辑层的框架. 优点很多(无缝对接前后层的框架.提供AOP的支持 , 和以前的 Sstruts . Hibernate 组合成了一套框架组合 SSH .现 ...

  3. Python数据分析-Pandas(Series与DataFrame)

    Pandas介绍: pandas是一个强大的Python数据分析的工具包,是基于NumPy构建的. Pandas的主要功能: 1)具备对其功能的数据结构DataFrame.Series 2)集成时间序 ...

  4. VC调试篇:ASSERT(FALSE)时怎么办?查看调用堆栈

    问题简述 我们在调试程序时,经常会遇到程序中断的情况,就像下图这样. 我艹,这该怎么办,我们一下子就懵逼了.我们选择中断,常常会跳到一个莫名其妙的地方去. 正是这个断言 ASSERT(::IsWind ...

  5. Java中常用的正则表达式判断,如IP地址、电话号码、邮箱等

    java中我们会常用一些判断如IP.电子邮箱.电话号码的是不是符合,那么我们怎么来判断呢,答案就是利用正则表达式来判断了,因为本人对正则表达式没有太深的研究,所有感兴趣的朋友可以自行百度.我这就给基本 ...

  6. [bzoj3218] a+b problem [最小割+数据结构优化建图]

    题面 传送门 思路 最小割 我们首先忽略掉那个奇♂怪的限制,就有一个比较显然的最小割模型: 建立源点$S$和汇点$T$ 对于每个元素$i$建立一个点$i$,连边$<S,i,w[i]>$和$ ...

  7. uoj185 [ZJOI2016]小星星 【dp + 容斥】

    题目链接 uoj185 题解 设\(f[i][j]\)表示\(i\)为根的子树,\(i\)号点对应图上\(j\)号点时的方案数 显然这样\(dp\)会使一些节点使用同一个节点,此时总的节点数就不满\( ...

  8. 洛谷 P2329 [SCOI2005]栅栏 解题报告

    P2329 [SCOI2005]栅栏 题目描述 农夫约翰打算建立一个栅栏将他的牧场给围起来,因此他需要一些特定规格的木材.于是农夫约翰到木材店购买木材.可是木材店老板说他这里只剩下少部分大规格的木板了 ...

  9. flex弹性布局的基本介绍

    最近开始做元素排列比较复杂的项目,同时需要各种型号手机的适配,我发现以前所掌握的盒子模型.display.position.float等已经不能满足我的需求了, 于是开始着重学习flex弹性布局并运用 ...

  10. [解决方案]NuGet打包报错: 'X' already has a dependency defined for 'Y'

    大家在打包Nuget包的时候,最后会执行以下语句 nuget pack .\ML.Common.SDK.csproj -Prop Configuration=Release 执行此句后,提示以下报错信 ...