问题标签 [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 投票
0 回答
653 浏览

visual-studio - 自定义内存窗口的 Visual Studio 扩展

我在 Visual Studio 扩展包中的自定义工具窗口应该在 VS2012 和 VS2013 的调试会话期间评估自定义表达式。最终目标是建立一个图形化的观察窗口。因此,我必须从调试引擎中获取表达式结果的值。

评估通过

这里的第一个问题:在 Visual Studio 2013ParseText()上没有正确报错。但是IDebugProperty2检索到的是有效的(对于有效的表达式)。在 VS2012 上,我得到了无效表达式的正确错误。

这是真正的问题开始的地方。结果 Property2 表示一个复杂的自定义对象。为了将其可视化,需要检索其基类之一的特定属性。在我目前的尝试中,我使用IDebugProperty2.EnumChildren()它的成员一直走到类层次结构中的正确位置,类似于在 Visual Studio 的 Locals 窗口中所做的:

这在某种程度上可行,但引入了以下问题:

问题1:获取某个复杂对象的内部成员

从 EnumChildren() 收到的成员及其顺序似乎取决于某些因素,这些因素对我来说并不明显: * 对象是否附加了调试可视化工具?(VS2013 忽略 EnumChildren 中的 enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE_RAW 并返回美化版本+“原始视图”节点,VS2012 按预期工作) * 是否显示“非公共成员”节点?有时是,有时不是 - 不知道它所依赖的 *“只是我的代码”的设置(?我在几篇文章中读到它,但无法真正找出可靠的规则) * ...必须有其他依赖项?

事实证明,这是获取某些复杂表达式结果对象的内部成员的一种非常老套的方法。有什么更好的方法?使用 IDebugProperty3 和一些 Debugger Visualizer 技巧?任何指针都会很棒。

问题2:VS2012给内存字节失败

一旦我拥有了结果对象的私有成员,我就会使用IDebugProperty2.GetMemoryBytes()它来“序列化”它的值(一个普通的 System.Array)并将其传输到我的自定义工具窗口。虽然这在 VS2013 中有效,但在 VS2012 中IDebugProperty2.GetMemoryBytes()总是返回 VS_Constants.S_FALSE。我真的没有想法。既然 VS2012 中有一个内存窗口,那么应该有什么方法可以让它在这里工作吗?我错过了什么?

用于查询内存 API 的代码:

更多上下文:

0 投票
0 回答
32 浏览

visual-studio-2012 - 如何获取当前窗口的 VsDropdownBarClass 实例?

我正在使用 MEF 使用 Visual Studio 2012 Pro 编写 Visual Studio 扩展。我想访问当前窗口下拉栏的Microsoft.VisualStudio.TextManager.Interop.VsDropdownBarClass实例。

这可以通过 Visual Studio 扩展实现吗?我发现的几个下拉栏示例都涉及创建下拉栏作为新语言服务的一部分,而不是访问窗口的现有下拉栏。

0 投票
1 回答
1153 浏览

digital-signature - 对 Visual Studio 包的内容(以及 VSIX 本身)进行签名

我有一个 Visual Studio 包项目,它在编译时会为我创建一个 DLL,并且该 DLL 放在一个 .VSIX 文件中(然后我双击安装)。

我希望签署 DLL 并确保 VSIX 已签署。

我看过Signing VSIX Packages,但这并不是很有帮助(或者我很愚蠢,这很有可能!)

我还查看了使用数字签名示例创建包,这似乎涉及通过代码从头开始创建包并对所有内容进行签名。我(也许天真地)期望能够通过构建和创建包的 MsBuild 过程进行签名。

非常感谢有人能告诉我 MSBuild 的适当挂钩,以允许我在将 DLL 添加到 VSIX之前调用我的签名目标对 DLL进行签名,以及如何对 VSIX 本身进行签名?

0 投票
1 回答
380 浏览

c# - 在运行时导出自定义 EditorFormatDefinition

在我构建的 Visual Studio 扩展中,我需要在 Visual Studio 编辑器中突出显示方法调用。例如:

在此处输入图像描述

我想使用 HSV 颜色根据唯一调用的数量来划分色谱。

如果我将每种颜色导出为自己的 EditorFormatDefinition,我可以实现突出显示:

但是,这需要我提前手动设置我想使用的所有颜色。有没有办法EditorFormatDefinitions在运行时导出?

某些注册表,例如 IContentTypeRegistryService 和IClassificationTypeRegistryService允许在运行时创建新的内容类型和分类。是否存在类似的 API EditorFormatDefinitions

或者,是否可以EditorFormatDefinition在 Visual Studio 中动态导出 MEF?

0 投票
0 回答
158 浏览

visual-studio - 启动特定项目的新实例

我正在尝试在我的解决方案中启动一个项目的新实例。我知道我可以更改 StartupProjects 然后启动调试器,但在我的情况下这不起作用,因为调试器可能已经在运行并且我不想更改启动项目。

我不想使用 dte2.Debugger.Go() 因为启动项目不是我想要启动的项目。

II 如何手动开始调试我的项目的新实例?

更新:我当前的解决方案(解决方法)如下所示:

它基本上构建项目,在新进程中启动 exe,然后附加到该进程。我现在唯一的问题是,当我开始构建并且已经有一个调试会话正在进行时,Visual Studio 会询问我是否要停止调试(以便构建)。但是当我在上下文菜单中选择“启动新实例”时,它没有!

0 投票
2 回答
1941 浏览

c# - 自动更新 Visual Studio 扩展

我试图让我的扩展在新版本被推送到 Visual Studio Gallery 时自动更新。有一些关于如何实现这一目标的指南,但它们已有几年的历史,可能不适用。

对于初学者,我试图查询IVsExtensionRepository如下:

Query_ExecuteCompleted我收到来自服务器的异常:“远程服务器返回错误:(400)错误请求。”

提供了堆栈跟踪:

服务器堆栈跟踪:在 System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult 结果) 的 System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult 结果) 在 System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object [] outs, IAsyncResult result) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeEndService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

该服务托管在:https ://visualstudiogallery.msdn.microsoft.com/services/dev12/extension.svc

有谁知道我如何创建一个从 Visual Studio 库自动更新自身的 Visual Studio 扩展?是通过IVsExtensionRepository还是手动?

0 投票
1 回答
1059 浏览

visual-studio - Visual Studio 扩展:构建错误 VSSDK1043:“找到带有 VSIX 标识符的扩展时出现问题...”

我正在尝试调试我的扩展,但突然间我无法再构建它了。

错误 1 ​​查找 VSIX 标识符为“1cdefdc6-1f5e-4027-9bb7-773248c65070”的扩展时出现问题。路径中的非法字符。

我已经回滚了我所做的所有更改,但仍然出现错误。我认为我没有更改任何配置。

这不是重复的:VSIX 包构建失败而没有显示原因(Visual Studio 错误)我已经尝试了这些建议。

如果我禁用

将 VSIX 内容部署到实验实例以进行调试

它编译,但我无法调试它。

更改产品 ID 也可以,但这意味着它不能再更新现有产品。

0 投票
3 回答
1592 浏览

visual-studio-2015 - 从 VSIX 命令调用 Roslyn

从 EnvDTE.ProjectItem 获取 Roslyn 的 SyntaxTree 的最佳方法是什么?我找到了另一种方法(Roslyn's Document into ProjectItem)。

我从打开的文档中调用了 VSIX 命令,我想在那里试验 Roslyn 的语法树。

这段代码有效,但对我来说看起来很尴尬:

有没有更好的方法从活动文档中获取 Roslyn 的文档?

0 投票
1 回答
703 浏览

visual-studio - 附加到 Visual Studio 包中的进程

我正在尝试编写一个将调试器附加到命名进程的 Visual Studio 包。

我在我的包中使用以下代码。

但是我得到以下无用的错误:

该代码显然正在做某事,因为如果该过程尚未开始,我会收到此错误

该进程是一个托管的 .net 4 进程,我可以通过 VS UI 附加到它。

对于上下文,我试图替换我在 VS 2010 中使用的简单宏来完成相同的工作,但显然不能在较新版本的 Visual Studio 中运行。

0 投票
1 回答
202 浏览

c# - 我由 Visual Studio 包中的菜单命令创建的上下文菜单项未显示在 cshtml 文件中

我做了一个菜单命令,它在 .cs 文件中运行良好,如下所示。

在此处输入图像描述

倒数第二个项目“Build this project”是创建的项目。

但是当我在cshtml文件中尝试它时,这个项目没有显示出来。

我怀疑问题出在我的 vsct 文件的 Groups 部分。

在此处输入图像描述

我将菜单项设置为 IDM_VS_CTXT_CODEWIN 的子项

寻找类似的问题,我找到了 Microsoft VsMenus 页面:https://msdn.microsoft.com/en-us/library/bb163231(v=vs.100)

在此页面中,我没有找到我的菜单项的另一个父项。

我的目标是直接从 VS 编辑器上下文菜单中的此菜单项构建活动文档的项目。

有人能帮我吗?

谢谢