相关疑难解决方法(0)

如何向Visual Studio Intellisense添加按钮

我想在Visual Studio的IntelliSense返回的选项列表的顶部添加一个按钮.单击该按钮时,将执行我的自定义代码(除其他外,这将导致弹出窗口出现).

我将其称为"按钮",因为当用户单击该项目时,我希望显示一个弹出窗口,而不是完成用户输入的正常IntelliSense操作.

例如,当我们在文本编辑器中输入类名时,通常静态属性和静态方法将出现在IntelliSense中.但我想在该列表的顶部添加另一个项目.

无论输入/内容导致IntelliSense出现,此项都应显示在IntelliSense列表的顶部.该项目永远不会改变.

这是可能的吗?如果可以的话,你能提供一些方向来说明我应该如何做到这一点吗?

c# visual-studio vs-extensibility visual-studio-extensions

35
推荐指数
1
解决办法
2814
查看次数

如何在删除{}括号时阻止VisualStudio扩展所有内容

我前几天问了这个问题并没有得到答案,所以我会再试一次.

我喜欢通过折叠我目前不使用的方法,注释和xml摘要来保持我的代码.但是,每次我在方法,循环,switch语句或代码的任何部分(任何包含{}支撑)中编辑一些大括号时,下面的所有内容都会在1秒后扩展.一切都向下展开,直到当前文件(或区域,如果编辑的代码位于其中)结束.

我不能再忍受了我已经厌倦了一直使用Ctrl+ M+ O然后再次重新找到编辑的字段.VS2010有什么选项或扩展名,可以解决我的问题吗?

更新 我开始意识到没有办法解决问题.但是我也可以接受一个修改过的问题的答案:是否有一种方法或工具可以让我自动删除{}支持只包含1条指令的对?对我的问题来说,这是一个可以接受的解决方法.

c# refactoring visual-studio

8
推荐指数
2
解决办法
1999
查看次数

如何在 Roslyn 推荐的符号中包含关键字和别名?

我正在使用 Roslyn 创建一个带有 IntelliSense 的 C# 脚本控件。

我通常对得到的结果非常满意,但是,推荐的符号不包含诸如forif等关键字,也不包含类型别名,例如int, 当它包含Int32.

更具体地说,我正在使用Microsoft.CodeAnalysis.Recommendations,即:

Recommender.GetRecommendedSymbolsAtPositionAsync(mySemanticModel, scriptPosition, myAdhocWorkspace);
Run Code Online (Sandbox Code Playgroud)

我的SemanticModel对象是从 C# 编译获得的,它mscorlib.dll至少总是有一个引用。

在我的脚本中的所有位置,推荐的完成总是正确的。但是,我认为他们是不完整的,如果缺少关键字,如ifelsefor等。

我可以看到,手动将常见类型别名包含在我的 IntelliSense 中对我来说很容易。也就是说,如果Int32可能完成,那么我可以手动添加int.

但是,在给定的范围内,if语句或for语句甚至is/何时as合适就不太明显了。

以这种方式获取推荐符号时,是否可以包含这些关键字?

还有一种方法可以自动包含类型别名吗?

c# keyword type-alias roslyn roslyn-code-analysis

5
推荐指数
1
解决办法
370
查看次数

使用自定义ICompletionSourceProvider扩展VS2012 Javascript Intellisense

我创建了一个像下面这样的新类

[Order(Before = "High")] [Export(typeof(ICompletionSourceProvider))]
[ContentType("JavaScript"), Name("EnhancedJavaScriptCompletion")] 
internal sealed class JavaScriptCompletionSourceProvider 
   : ICompletionSourceProvider 
{ } 
Run Code Online (Sandbox Code Playgroud)

而且 CompletionSource

internal sealed class CompletionSource : ICompletionSource, IDisposable
{
    public void AugmentCompletionSession(ICompletionSession session, IList<CompletionSet> completionSets)
    {
    }
    public void Dispose()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

这些都添加到Visual Studio Package项目中.因此,当我尝试调试(使用F5)时,我可以看到调试符号正在加载并且调试停止在

protected override void Initialize()
{
    Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", this.ToString()));
    base.Initialize();
}
Run Code Online (Sandbox Code Playgroud)

然而,当我编辑.js文件中,并调用智能感知(与.点即是)的deubbger不会闯进ICompletionSourceProvider也不是ICompletionSource我的课的方法.

所以我的问题是:

  • 1-5关于在此截屏视频中解决的标准Javascript Intellisense的问题http://screencast.com/t/TwDlnpfOV0bX
  • 6我们如何javascript通过额外选项扩展标准智能感知?
  • 7同样可以有两个ICompletionSourceProvider班级ContentType吗?

intellisense visual-studio visual-studio-extensions

2
推荐指数
1
解决办法
1555
查看次数