标签: visual-studio-extensions

课程和方法报告

是否有任何工具或扩展来生成包含类和方法数据的报告?例如,显示所有类的摘要以及每个类中包含的方法以及两者的计数.

architecture visual-studio-2010 visual-studio-extensions

9
推荐指数
1
解决办法
4663
查看次数

从Visual Studio扩展生成代码

我有一个项目,基于元数据生成文本(表示一个接口和一个类).我想采用这个生成的代码并将其作为新类和接口直接插入到特定项目和目录下当前打开的解决方案中.我将创建将生成类的菜单工具,但我不知道该怎么做是从我的自定义Visual Studio扩展中获取对以下项的访问:

  1. 迭代当前的解决方案并找到一个项目来将生成的代码转储到其中.
  2. 在Visual Studio中打开一个新文件窗口,将生成的文本从我的工具直接注入该窗口.
  3. 在我的自定义扩展中,在当前解决方案中的特定项目中创建一个新文件夹.

编辑 - 澄清我需要打开一个新文件(例如右键单击一个项目 - >添加 - >新类)并从我的自定义Visual Studio扩展中插入文本.

谢谢

c# visual-studio-2010 office-addins visual-studio-extensions

9
推荐指数
1
解决办法
4194
查看次数

如何获取Visual Studio命令列表?

我们正在开发一个VS扩展,它需要一个Visual Studio命令列表,如此屏幕截图中的命令:

Visual Studio 2010中的屏幕截图,工具>选项>键盘

例:

  • Action.Add
  • Action.Add.NETFrameworkLaunchCondition
  • Action.AddAction
  • ...等

我们在哪里可以找到或如何访问此列表?

c# visual-studio-2010 vsix visual-studio-extensions

9
推荐指数
2
解决办法
2644
查看次数

复制从VS2012到VS2013的布局-o-Rama配置

现在我已经升级了,如何将我的Layouts-o-Rama配置复制到VS2013?

Layouts-o-Rama是一个出色的Visual Studio扩展,当您发现自己在具有不同显示器设置的不同位置使用VS. 只需为每个位置/个性保存布局,然后创建热键以切换它们.

它擅长它的功能,但我刚安装了VS 2013,我发现Layouts-o-Rama没有VS2012的预设.

visual-studio-extensions visual-studio-2013

9
推荐指数
1
解决办法
587
查看次数

创建Visual Studio主题特定语法突出显示

我想在Visual Studio 2012(及更高版本)创建一个支持不同主题(黑暗,浅色,蓝色)的语法荧光笔.

Visual Studio的编辑器分类器项目模板说明了如何使用环境创建自己的颜色Microsoft.VisualStudio.Text.Classification.ClassificationFormatDefinition.它工作正常......

...直到您意识到Visual Studio 2012(及更高版本)中存在不同的主题,并且您并不真正支持它们.在黑暗的主题环境中,浅色主题上漂亮的深蓝色标识符变得难以辨认.

根据我的理解,如果您在给定主题(例如:Light)中的工具/选项/字体和颜色中更改ClassificationFormatDefinition,它将不会影响不同主题中的相同ClassificationFormatDefinition(例如:Dark).颜色似乎在不同的主题上是独立的.

那很好.但是我如何实现定义在所有主题中具有相同名称的相同ClassificationFormatDefinition(例如:MyKeywords),但为它们提供不同的颜色?就像Visual Studio自己的"标识符"一样,它在Light主题上是默认的黑色,在黑色主题上是默认的.

我知道这个Microsoft.VisualStudio.PlatformUI.VSColorTheme.ThemeChanged事件可以让我在更改颜色主题时收到通知.我是否必须使用它并以某种方式获取我现有的ClassificationFormatDefinition并根据新主题为它们分配新颜色?但这也提出了一个问题:这些修改后的颜色是否会持久保存到环境中,即如果我重新启动Visual Studio,下次在所有不同的主题中我的更改是否会存在.

我没有找到任何属性来说明ClassificationFormatDefinition支持哪个主题,也没有找到关于这个主题的非常有用的文章.

任何帮助赞赏.

syntax-highlighting vspackage visual-studio visual-studio-extensions visual-studio-2012

9
推荐指数
1
解决办法
1165
查看次数

Visual Studio扩展不会在实验实例中加载

我正在VS2013中开发Visual Studio扩展,但我可以在实验实例中加载它.

我可以在我当前的实例(来自vsix文件)中手动安装它,它工作正常,但我无法调试它.

ActivityLog中没有任何错误消息也没有任何内容.我的扩展程序没有加载.(这不仅仅是我的扩展.同样的事情发生在项目模板的新扩展中)

我试图删除/重置实验实例没有运气.

我还尝试通过安装我的扩展程序从当前实例创建实验实例来调试我的扩展.然后,扩展在实验实例中的"扩展和更新"中显示为"已禁用".

试图搜索在实验实例中如何执行扩展注册但找不到任何内容.仅找到对"将VSIX内容部署到实验实例以进行调试"设置的引用,而不是设置的内容.

目前我的测试工作很喜欢这样:

  1. 放入MessageBox和/或WriteLine并编译代码
  2. 在"扩展和更新"中删除以前的扩展实例
  3. 关闭Visual Studio
  4. 从vsix文件安装扩展
  5. 启动Visual Studio
  6. 测试扩展

这当然需要很长时间.

vspackage vsix visual-studio-extensions visual-studio-2013

9
推荐指数
1
解决办法
3975
查看次数

如何打包一个针对通用Windows平台并依赖于Visual Studio扩展SDK的.NET库?

如何打包依赖于Visual Studio扩展SDK(如Microsoft Player Framework)的通用Windows平台库?

具体来说,我希望我的库用户能够在按下NuGet中的Install按钮后立即使用它,而无需手动将扩展SDK添加到他们的项目中.当然,假设实际安装了适当的扩展SDK.

这是一系列问题和答案,记录了我对现代NuGet包创作主题的研究结果,特别关注NuGet 3引入的变化.您可能还对一些相关问题感兴趣:

nuget nuget-package visual-studio-extensions uwp

9
推荐指数
1
解决办法
1185
查看次数

VSIX - XmlEditingScope.Complete()上的死锁

我们使用Microsoft.VisualStudio.XmlEditor命名空间(https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.xmleditor.aspx)中的类来修改Visual Studio扩展中的xml文档.

由于某种原因,在调用XmlEditingScope.Complete()方法后发生死锁.在Visual Studio的状态栏中,我们看到消息"等待解析完成..."

这是死锁UI线程的堆栈跟踪:

WindowsBase.dll!System.Windows.Threading.DispatcherSynchronizationContext.Wait(System.IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout)   
mscorlib.dll!System.Threading.SynchronizationContext.InvokeWaitMethodHelper(System.Threading.SynchronizationContext syncContext, System.IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout)     
[Native to Managed Transition]   
[Managed to Native Transition]   
mscorlib.dll!System.Threading.WaitHandle.InternalWaitOne(System.Runtime.InteropServices.SafeHandle waitableSafeHandle, long millisecondsTimeout, bool hasThreadAffinity, bool exitContext)   
mscorlib.dll!System.Threading.WaitHandle.WaitOne(int millisecondsTimeout, bool exitContext)  
Microsoft.VisualStudio.Package.LanguageService.14.0.dll!Microsoft.VisualStudio.Package.LanguageService.ParseWaitHandle.WaitOne(int millisecondsTimeout, bool exitContext)    
Microsoft.XmlEditor.dll!Microsoft.XmlEditor.XmlLanguageService.WaitForParse(System.IAsyncResult result, Microsoft.XmlEditor.StatusBarIndicator indicator)    
Microsoft.XmlEditor.dll!Microsoft.XmlEditor.XmlLanguageService.WaitForParse()    
Microsoft.XmlEditor.dll!Microsoft.XmlEditor.XmlParserLock.XmlParserLock(Microsoft.XmlEditor.XmlLanguageService service)  
Microsoft.XmlEditor.dll!Microsoft.XmlEditor.Transaction.PushToEditorTreeAndBuffer()  
Microsoft.XmlEditor.dll!Microsoft.XmlEditor.Transaction.Complete()   
XmlEditingScope.Complete() Line 64
Run Code Online (Sandbox Code Playgroud)

并且Visual Studio解析线程:

mscorlib.dll!System.Threading.WaitHandle.InternalWaitOne(System.Runtime.InteropServices.SafeHandle waitableSafeHandle, long millisecondsTimeout, bool hasThreadAffinity, bool exitContext) + 0x21 bytes  
mscorlib.dll!System.Threading.WaitHandle.WaitOne(int millisecondsTimeout, bool exitContext) + 0x28 bytes     
Microsoft.XmlEditor.dll!Microsoft.XmlEditor.LockManager.Lock(object …
Run Code Online (Sandbox Code Playgroud)

c# deadlock visual-studio vsix visual-studio-extensions

9
推荐指数
1
解决办法
162
查看次数

Visual Studio MEF扩展 - 强制边缘字形要更新或重绘

我正在编写的扩展程序起源于演练:创建由Microsoft提供的Margin Glyph示例:https://msdn.microsoft.com/en-us/library/ee361745.aspx

一切正常,除了我试图触发重绘或更新边距字形,每当我用来决定绘制字形的数据更改时.

基本上我在工具窗口中有一个按钮,当用户单击按钮时,我想要一个字形出现在边距中.现在,它不会出现,直到您滚动并返回,或显然关闭并重新加载文档.

我研究过这个,并且看过一些使用IViewTaggerProvider而不是ITaggerProvider的代码示例.在这些情况下,似乎可以将LayoutChanged事件的处理程序添加到ITagger派生类中,该类还包含GetTags方法.但是我无法成功将代码从使用ITaggerProvider切换到IViewTaggerProvider,扩展程序在运行时崩溃了.我不知道这是否会导致解决方案的变化,或者是否是不必要的.

如何强制字形被渲染?我可以提出某种类型的事件来强制执行GetTags代码吗?我如何从课外提出这个事件?例如从工具窗口?

c# mef visual-studio visual-studio-extensions

9
推荐指数
1
解决办法
255
查看次数

IsMouseOver对DockPanel中的某些元素返回false

我试图检测鼠标何时进入VS 2017标题栏,但我注意到这一点MouseEnter并且MouseLeave事件无法正常工作.仅当鼠标进入下面屏幕截图中绿色矩形所示的子控件时,才会触发事件.

标题栏中DockPanel包含一些元素.我已设置其背景以SolidColorBrush(Colors.Red)确保命中测试正确运行.当鼠标悬停在绿色矩形中的元素时,IsMouseOver正确返回true,但在其他任何地方都是false.对于菜单栏,IsMouseOverMouseEnterMouseLeave事件正常工作.有什么不对吗?

截图

更新2:标题栏可能被标记为非客户区域,这就是导致此问题的原因

更新:

这是主VS窗口的Visual Tree:

在此输入图像描述

反编译MainWindowTitleBar类:

using Microsoft.VisualStudio.PlatformUI.Shell.Controls;
using Microsoft.VisualStudio.Shell;
using System;
using System.Windows;
using System.Windows.Automation.Peers;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Media;

namespace Microsoft.VisualStudio.PlatformUI
{
    public sealed class MainWindowTitleBar : Border, INonClientArea
    {
        protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
        {
            return new PointHitTestResult(this, hitTestParameters.HitPoint);
        }

        int INonClientArea.HitTest(Point point)
        {
            return 2;
        }

        protected override AutomationPeer OnCreateAutomationPeer()
        {
            return …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf visual-studio-extensions visual-studio-2017

9
推荐指数
1
解决办法
327
查看次数