问题标签 [visual-studio-package]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3785 浏览

c# - Visual Studio 包:设置自定义解决方案资源管理器上下文菜单项的可见性

我正在创建一个 Visual Studio 包(这是我的第一次),我的最终目标是为仅适用于某些文件类型的解决方案资源管理器创建一个上下文菜单项。(我认为这将是一个常见的事情,但没有找到任何像样的教程,所以如果你知道任何请告诉我)

我按照一个简单的 MSDN 指南首先在工具栏中创建了一个项目(我忘记了在哪里链接它),这很好。

然后我找到了一种将其移动到解决方案资源管理器上下文菜单的方法。这是通过操作.vsct文件并具有如下元素来实现的:

这可能无关紧要,但我正在尝试设置场景。

现在,因为我只想显示某些文件类型的项目,所以我需要找到一种方法来在按下右键单击按钮时检查文件。缩短了长时间的搜索,我找到了这个并最终得到以下代码:

在上面的示例中,我只是尝试设置文本以尝试证明它有效,我知道有一个Visible属性,但我希望这一步首先起作用。该BeforeQueryStatus事件被触发,调试显示代码按预期执行。但是,上下文菜单项没有变化,它与原始文本保持一致。

我在这里想念什么?为什么不更新?

0 投票
2 回答
794 浏览

c# - Visual Studio VSPackage / 单个文件生成器 - 将消息记录到错误列表

我正在创建一个包含单个文件生成器(IVsSingleFileGenerator)的 Visual Studio VSPackage,我希望能够将事件记录到 Visual Studio 错误列表(http://msdn.microsoft.com/en-us/library/33df3b7a (v=vs.110).aspx )

我正在使用 Microsoft Visual Studio SDK ( http://code.msdn.microsoft.com/windowsdesktop/Single-File-Generator-94d856d4 ) 中的示例基类。这些类有方法:

这让我可以发出错误和警告,但不能发出消息。方法调用IVsGeneratorProgress.GenerateErrorhttp://msdn.microsoft.com/en-US/library/microsoft.visualstudio.shell.interop.ivsgeneratorprogress.generatorerror(v=vs.90).aspx)。这种方法似乎并没有让我连接一个“消息”。

我试图在 Visual Studio 中找到对错误列表窗口的引用,以便我可以直接写入它,但我在VSConstants( http://msdn.microsoft.com/en-us/library/microsoft中没有看到任何内容.visualstudio.vsconstants(v=vs.80).aspx )。

任何人都知道如何将消息记录到 Visual Studio 错误列表中?

0 投票
1 回答
325 浏览

visual-studio-2010 - IClassifierProvider 未启动

我正在尝试为 Visual Studio 构建输出添加颜色。所以我正在尝试获取 IClassifierProvider 的分类器。但是 GetClassifier() 没有被调用。可能是什么问题呢?源代码示例如下。当我尝试使用 VSColorOutput 扩展时,它会启动。请告诉我我错过了什么?

Vsix 清单

0 投票
1 回答
1581 浏览

visual-studio - MsBuild 与 Visual Studio 2012 包项目

我已经使用Visual Studio 2012 Package Project(来自VS2012 SDK)创建了 .NET 解决方案。使用 Visual Studio,我在“调试”配置模式下成功编译并运行了这个项目(连同整个解决方案) ,并在“任何 CPU ”平台上运行。但是,当我尝试使用MsBuild在命令行中构建解决方案时,出现错误:

命令:

错误:

错误:找不到 VS SDK 的安装。
错误 MSB4018:“FindVsSDKInstallation”任务意外失败。
错误 MSB4018:System.ArgumentNullException:值不能为空。
错误 MSB4018:参数名称:path1
错误 MSB4018:在 System.IO.Path.Combine(String pat h1, String path2)
错误 MSB4028:无法从“IncludesPath”参数中检索“FindVsSDKInstallation”任务的输出。值不能为空。
错误 MSB4028:参数名称:path1

所有活动都在我的本地 Windows 7 上执行,并安装了 VS2012 和 SDK。

我在网上寻找解决方案,发现了以下主题:FindVsSDKInstallation task failed on the build box。据说这样的项目应该为“x86”平台编译,因为devenv.exe进程是32位的。所以我将一个Platform Target属性从项目属性更改为“x86”(用于“调试”模式)。结果是一样的——项目在 VS 中成功构建,但在MsBuild.

为什么使用VS正确构建VS2012 Package项目,但MsBuild失败?我应该如何运行MsBuild才能成功构建它?

0 投票
2 回答
462 浏览

c# - Visual Studio 包:是否可以在文本行标记上显示工具提示?

在 JSLint.NET 中实现“squiggle”文本行标记非常简单,如下所示:

曲线

但是,尽管使用 GetTipText 方法实现了 IVsTextMarkerClient,但从未显示工具提示。当鼠标悬停在标记上时,甚至永远不会调用 GetTipText 方法。

如果我切换到字形类型(例如 MARKERTYPE.MARKER_SHORTCUT),工具提示会在页边空白处显示得很好:

字形

是否有一些技巧可以让工具提示显示在内联文本标记的主体上?

SetMarker 方法中提供了实现源代码:

https://jslintnet.codeplex.com/SourceControl/changeset/view/f27a513c14bbfbf787ddb66485ae6c4404dc8352#source/JSLintNet.VS2012/JSLintErrorTask.cs

0 投票
2 回答
2301 浏览

c# - 如何在VS包项目中获取DTE对象实例?

如何在 VS 包项目中获取 DTE 实例?它在插件项目中是直截了当的,因为application它作为参数传递给onConnection方法,但不清楚如何在包中获取它。

0 投票
2 回答
6181 浏览

visual-studio - 如何从 Visual Studio 2012 中永久删除扩展?

我注意到 Visual Studio 2012 的以下行为:我创建 VS2012 包项目(来自 SDK)。当我编译并运行它时,会启动一个实验性的 VS 实例,所以我可以测试实现的包。但是如果我从实验 VS 实例中卸载包(使用Tools -> Extensions and Updates -> Uninstall),然后我尝试重新编译并重新运行包,我得到编译错误,而输出和错误列表中没有显示任何错误。因此,不可能再次启动我正在开发的包。每个新创建的 VS2012 包项目都可以重现此问题。

总之,我无法在实验性 VS 实例中运行我的包,因为我之前卸载了它。这似乎是包元数据缓存问题。我该如何解决这个问题?

编辑:

重现此问题的步骤:

  1. 创建新的 Visual Studio 2012 包项目(必须安装 VS2012 SDK)。
  2. 编译并运行项目。应启动 VS 实验实例。
  3. 在 VS Experimental 实例中,转到Tools -> Extensions and Updates并卸载刚刚创建的扩展。
  4. 关闭 VS Experimental 实例。
  5. 尝试再次编译并运行包项目。应该有编译或启动错误,但输出和错误列表中都没有信息。

此时,无法再次使用此 Package Project 运行 VS Experimental 实例。

0 投票
1 回答
271 浏览

c# - 什么类可以访问 Visual Studio IDE 中的属性?

我正在开发一个针对 C++ 项目的扩展。它需要检索项目的 IncludePaths 列表。在 VS IDE 中,它是菜单 -> 项目 -> 属性 -> 配置属性 -> C++ -> 常规 -> 附加包含目录。这就是我需要在我的扩展程序中以编程方式获得的内容。

我有一个对应的 VCProject 实例,我也有一个 VCConfiguration 实例。从自动化模型概览图来看,项目和配置都有一个属性集合。但是,它们似乎不可用。VCConfiguration 和 VCProject 类都没有任何属性集合,即使我在运行时检查 VCConfiguration 和 VCProject 对象的内容也是如此。

MSDN 文档也没有提供任何见解。VCConfiguration 接口有一个属性 PropertySheets,但是在运行时在调试器的帮助下检查它后,我确定它不是我需要的。

PS如果我可以获取命令行属性的值(项目->属性->配置属性-> C++->命令行),将为给定的项目调用编译器的参数列表——这对我来说也很好,可以解析该字符串以获取所有包含路径。

0 投票
1 回答
1089 浏览

visual-studio - 无法在设计器模式下打开“source.extension.vsixmanifest”文件

我有 Visual Studio 2012 包项目(来自 VS2012 SDK)。我不记得我以前做过什么,但此时我尝试以source.extension.vsixmanifest设计器模式打开文件时出现以下错误:“已添加具有相同密钥的项目”。我只能在“查看代码”模式下打开此文件。

此外,奇怪的是,如果我在此解决方案中创建另一个 VS2012 包项目,则source.extension.vsixmanifest在新项目中对应的会出现相同的错误。

它看起来像字典或资源重复的关键问题。但我没有修改任何资源或字典。

这个错误的原因是什么。我该如何解决?

0 投票
1 回答
370 浏览

c# - 向现有的 VS 扩展包添加工具窗口 - FindToolWindow 失败

我有一个没有工具窗口的 VS 包,现在我想向它添加第一个工具窗口。这就是我所做的:

  1. 创建了一个从 ToolWindowPane 派生的空类。
  2. 向此类添加了 Guid 属性。我使用 Visual Studio 内置工具生成了一个新的 GUID。
  3. 向主包类添加了 2 个属性:
    [ProvideToolWindow(typeof(MainToolWindow))]

    ([ProvideToolWindowVisibility(typeof(MainToolWindow), VSConstants.UICONTEXT.SolutionExists_string)]

  4. ToolWindowPane MyWindow = this.FindToolWindow(typeof(MainToolWindow), 0, true);

这会导致异常:

灾难性故障(HRESULT 异常:0x8000FFFF (E_UNEXPECTED))

我错过了什么?