就是这个烦人的图层,像打不跑的苍蝇
我在上篇博客狠狠的吐槽了这个设计 https://blog.bccn.net/静夜思/66713 ,不解决掉这个问题终日寝食难安。
苍天有眼,今天让我搜到一个10年前的帖子 https://stackoverflow.com/questions/4130598/how-do-i-turn-off-code-tooltips-in-visual-studio-2010 10年前就有人受这个困扰(然而官僚化的微软始终听不到用户的声音),并且开发了一个扩展,当然这个扩展现在已经不能用了。好在给了我一个启发。
于是我开始搜vs的扩展,联机搜“tooltips”关键字的时候搜到一个叫“Tame Visual Studio Editor Tooltips”的扩展,看上去像是关于编辑器Tooltips的,仔细看了一下介绍,果然是解决这个问题的。点击download安装即可。扩展详细介绍: https://marketplace.visualstudio.com/items?itemName=KarlShifflettkdawg.TameVisualStudioEditorTooltipsAsync
然而我高兴的还是太早了。这个扩展只支持了C#语言,VB.NET根本不如作者的法眼。好在这个扩展是开源的,顺着扩展的介绍页面找到了他的github页面 https://github.com/Oceanware/Tame-Visual-Studio-Code-Editor-Tooltips (可怜目前为止只有2个star,1个fork,其中一个star是我点的,唯一的fork也是我拉了个分支,可见微软的技术在开源社区是何等的冷清),通过阅读 TameVisualStudioEditorToolTips/TameQuickInfo.cs 的代码发现没有对vb.net的支持,这是15、16、17行的代码:
[ContentType("CSharp")] [ContentType("XAML")] [ContentType("XML")]
然后克隆这个项目,加上Basic、HTML、CSS、Jscript的支持
namespace TameVisualStudioEditorToolTips { using System.ComponentModel.Composition; using System.Threading; using System.Threading.Tasks; using System.Windows.Input; using Microsoft.VisualStudio.Language.Intellisense; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Text; using Microsoft.VisualStudio.Utilities; [Export(typeof(IAsyncQuickInfoSourceProvider))] [Name("Tame Quick Info")] [Order(Before = "Default Quick Info Presenter")] [ContentType("CSharp")] [ContentType("Basic")] [ContentType("XAML")] [ContentType("XML")] [ContentType("HTML")] [ContentType("CSS")] [ContentType("JScript")] internal class TameQuickInfo : IAsyncQuickInfoSourceProvider { public IAsyncQuickInfoSource TryCreateQuickInfoSource(ITextBuffer textBuffer) { return textBuffer.Properties.GetorCreateSingletonProperty(() => new CancelingQuickInfoSource()); } } internal class CancelingQuickInfoSource : IAsyncQuickInfoSource { public CancelingQuickInfoSource() { } public void dispose() { } public async Task<QuickInfoItem> GetQuickInfoItemAsync(IAsyncQuickInfoSession session,CancellationToken cancellationToken) { var isKeyDown = false; ThreadHelper.JoinableTaskFactory.Run(async delegate { // Now on the UI thread await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); isKeyDown = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift) || Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl); }); // back on background thread if (!isKeyDown) { _ = session.dismissAsync(); } return await System.Threading.Tasks.Task.Fromresult<QuickInfoItem>(null); } } }
在visual studio里编译,安装,最后大功告成!