Tag: vspackage

如何使用VSPackage检测Visual Studio IDE是否正在关闭?

我正在编写一个VS包,我需要存储用户启动包的时间,以及用户关闭Visual Studio时的时间。 问题是,我不知道如何获得Visual Studio的结束事件。 谁能给我任何关于如何检测VS是否关闭的信息? 注意:当我从互联网上搜索时,我遇到了类似的问题: 如何通过VSPackage取消ToolWindowPane或Visual Studio IDE关闭操作? ,但是当我尝试它时,这个解决方案是在Package窗口关闭时检测并执行某些操作,并且无法检测Visual Studio何时关闭。 任何帮助都非常感谢。 谢谢

有没有一种方法可以将外部进程的结果流式传输到Visual Studio输出窗格?

我在VsPackage设置了一个自定义输出窗格,类似于以下内容: ///——————————————————————————– /// This property gets the custom output pane. ///——————————————————————————– private Guid _customPaneGuid = Guid.Empty; private IVsOutputWindowPane _customPane = null; private IVsOutputWindowPane customPane { get { if (_customPane == null) { IVsOutputWindow outputWindow = GetService(typeof(SVsOutputWindow)) as IVsOutputWindow; if (outputWindow != null) { // look for existing solution updater pane if (_customPaneGuid == Guid.Empty || […]

获取VS Package项目中的dte2或​​TeamFoundationServerExt对象?

我正在开发Visual Studio Package项目。 该项目需要连接到我们的TFS。 要读取当前连接,我需要TeamFoundationServerExt对象,我应该能够从dte2对象获取该对象。 现在我发现了数百个示例,其中大多数都使用了一个“_application”变量,它似乎自动填充,但当然不适用于“Visual Studio Package”项目类型。 如何获取当前运行的VS2010的TeamFoundationServerExt对象?

几何对象的可视调试器

在处理代表几何对象的库时,Debugging目前看起来像这样: 在这里,我正在查看Autos , Locals , Watch和Immediate窗口中的局部变量。 由于我无法在脑海中想象物体的形状,我宁愿使用图形组件来表示这些物体。 所以我开始创建一个Debugger Visualizer来绘制对象。 我在这里的 bitbucket上有一个公共回购。 现在我无法让它在我在解决方案中使用的控制台应用程序之外工作。 我究竟做错了什么? 这是它工作时的样子: 另外,如何以允许我一次查看多个对象的方式执行此操作。 我意识到我真的想看到多个对象及其交互,而不仅仅是单个对象。 (例如,寻找交叉路口等)。 PS 有没有人在这样的地方看到调试器扩展? 或者有任何关于如何修复现有的建议? 我试图以Visual Studio扩展的forms尝试这一点,但也没有成功。 有关详细信息,请参阅此问题 。

如何使用vs package获取解决方案资源管理器中所选项的详细信息

我正在尝试创建一个VS包,其中,我在右键单击解决方案资源管理器中的项目时为上下文菜单添加了一个菜单命令。 现在,在单击命令时,我想显示一个弹出窗口,其中包含您右键单击的项目的详细信息,然后选择我的命令。 我怎么能完成它? 我可以用什么服务来获取所选项目的详细信息?

如何通过VSPackage取消ToolWindowPane或Visual Studio IDE关闭操作?

我有一个VSPackage ,其中包含一个包含表单数据的可停靠工具窗口。 如果此表单中有未保存的更改,我想取消关闭工具窗口和Visual Studio IDE,如果用户在关闭前单击取消保存更改。 我可以在关闭时执行保存测试,但是我没有看到任何事件处理程序方法或其他选项来实际取消关闭。 这是包装中的一些模糊: private DTE2 _applicationObject = null; ///——————————————————————————– /// This property gets the visual studio IDE application object. ///——————————————————————————– public DTE2 ApplicationObject { get { if (_applicationObject == null) { // Get an instance of the currently running Visual Studio IDE DTE dte = (DTE)GetService(typeof(DTE)); _applicationObject = dte as DTE2; […]

在多台计算机上进行开发时无法运行VSPackage

我们正在使用Visual Studio 2012和TFS在团队中开发VSPackage。 扩展在用于创建它的计算机上工作正常(通过向导)。 在另一台计算机上,当我们尝试运行它时(使用F5),Visual Studio说“具有类库的输出类型的项目无法直接启动”。 项目的输出确实是类库,在第一台机器上按F5启动Visual Studio的实验实例,扩展已加载并正常工作。 通过在第二台计算机上查看“%LOCALAPPDATA%\ Microsoft \ VisualStudio \ 11.0Exp \ Extensions”,我们看到扩展已经构建,并且尝试向VS注册它。 我们还在第二台计算机上创建了另一个扩展,并尝试在第一台计算机上运行它。 它显示相同的错误。 我们如何才能在不习惯创建它的计算机上运行扩展?

向IElisonBuffer添加语法突出显示

我正在开发一个项目,我们将C#代码分解为函数并将这些函数存储在IElisonBuffers中 。 我已经将Intellisense连接起来了,缓冲区与其他扩展交互得很好,如下所示: 但是,我无法在这些编辑器中使用语法突出显示。 我通过以下步骤嵌入这些编辑器: 为该文件创建一个IVsInvisibleEditor 。 获取此IVsInvisibleEditor 创建一个IVsCodeWindow并将此IVsCodeWindow的缓冲区设置为IVsCodeWindow中的IVsInvisibleEditor 从此代码窗口获取IWpfTextViewHost 。 这让我回到了“WPF Land”,在那里我能够与传统的跨度互动。 创建IWpfTextViewHost文本视图的SnapshotSpan。 此SnapshotSpan包含单个函数。 创建一个包含SnapshotSpan的IElisionBuffer 。 通过IVsEditorAdaptersFactoryService.CreateVsTextBufferAdapterForSecondaryBuffer()创建一个IElisionBuffer 。 现在我将IVsTextBuffer为IVsTextLines并调用SetLanguageServiceID()传入C#GUID:694DD9B6-B865-4C5B-AD85-86356E9C88DC。 我仔细检查它是否通过GetLanguageServiceID()设置正确,一切看起来都没问题。 我创建了一个IVsTextView并使用新的IVsTextBuffer对其进行初始化。 然后我得到了这个IVsTextView 。 在为IElisionBuffer设置语言服务ID时,是否需要注意哪些特殊步骤? 为了完整起见,这是我正在使用的代码: public CustomEditorViewModel CreateEditor(string filePath, int start, int end) { IVsInvisibleEditor invisibleEditor; ErrorHandler.ThrowOnFailure(this._InvisibleEditorManager.RegisterInvisibleEditor( filePath , pProject: null , dwFlags: (uint)_EDITORREGFLAGS.RIEF_ENABLECACHING , pFactory: null , ppEditor: out invisibleEditor)); var docDataPointer = […]

如何向Visual Studio扩展添加其他工具窗口?

为Visual Studio 2013创建扩展时,默认情况下会设置工具窗口。 但是,我想有一个第二个工具窗口,看不出应该怎么做。

如何从VSPackage获取当前解决方案目录?

以下是如何从加载项获取当前解决方案目录: _applicationObject = (DTE2)application; // retrieved from OnConnection method string solutionDir = System.IO.Path.GetDirectoryName(_applicationObject.Solution.FullName); 你会如何通过VSPackage做到这一点? 我正在将可视工作室加载项迁移到VSPackage,因为我打算添加一些需要与IDE进行更深入集成的用户控件。 我发现了一些关于加载项与集成包的相对优点的一些很好的参考,例如: http : //nayyeri.net/visual-studio-addin-vs-integration-package-part-1 以及关于VSPackages上msdn的一些很好的教程,例如: http : //msdn.microsoft.com/en-us/library/cc138589.aspx 我还没有找到关于加载项(例如DTE)中的更高级接口如何映射到VSPackage中的低级接口的良好引用(在msdn或其他方面)。 有什么好的参考资料可以帮助实现从附加接口到VSPackage接口的一般映射?