我可以在不添加VSPackage的情况下向VSIX扩展添加选项菜单吗?

时间:2014-03-11 20:46:05

标签: visual-studio-2013 vsix vspackage visual-studio-sdk

我有一个非常轻量级的Visual Studio扩展。它目前只是一个类文件中的MouseProcessor和KeyboardProcessor,一个vsixmanifest,以及必要的两个图标。

我想在工具>中添加一个简单的菜单。选项。只需一个布尔值来打开/关闭。

这是我的第一次扩展,这是一个相当远的学习曲线。我发现的每个教程都假设我使用的是VSPackage,事实上,MSDN并没有明确表示你可以拥有一个没有VSPackage的扩展。显然,情况并非如此。

使用VSPackage,或者至少创建一个新的VSPackage项目,似乎为项目增加了很多重量。我想知道是否有一种非常简单的方法可以在我的扩展程序中添加一个简单的选项菜单,无论是没有VSPackage还是VSPackage加载非常小。

有问题的代码位于https://github.com/norachuga/MiddleClickToPeekDefinition的GitHub上。它允许您在单词中间单击Peek Definition,或者ctrl + middleclick到Go To Definition。我想添加一个布尔菜单选项来翻转它们,所以中间点击是Go To Definition,ctrl + middleclick是Peek Definition。

1 个答案:

答案 0 :(得分:4)

在提交f3e23a3 here中演示了最轻的VSPackage。特别是,您需要以下内容:

  1. 源自Package的类,类似于OutputWindowPackage。保留PackageRegistration属性,但如果您的扩展程序只有一个程序集,则可以省略ProvideBindingPath。您可以通过引用VSSDK.Shell.12 NuGet包来简化依赖关系(对于仅针对Visual Studio 2013及更新版本的扩展)。

  2. 更新source.extension.vsixmanifest以包含<VsPackage>|%CurrentProject%|</VsPackage>行。

  3. 更新项目文件以设置<GeneratePkgDefFile>true</GeneratePkgDefFile><CopyBuildOutputToOutputDirectory>true</CopyBuildOutputToOutputDirectory>

  4. 确保项目文件有<IncludeAssemblyInVSIXContainer>true</IncludeAssemblyInVSIXContainer>(甚至在更新项目之前)。