有没有办法在VS2010 MEF扩展中隐藏代码?

时间:2012-03-31 10:06:17

标签: visual-studio-2010 editor mef vs-extensibility

我正在使用MEF处理VS2010编辑器扩展。现在我希望根据需要隐藏代码,即使特定的代码行不可见。以下是一个示例:Hiding the regions in Visual Studio

通过MEF,我可以访问TextView,TextBuffer等。但我还没有找到隐藏代码或更改显示代码的颜色或字体的方法。我猜可见性,字体和颜色是相关的。我不确定VSPackage是否可以做到,即使可以,但对我的要求来说似乎太过分了。我也想过DTE对象,不知道。

也许我只是从http://msdn.microsoft.com/en-us/library/bb165040.aspx获得了一些希望。但是,是否可以在MEF组件中使用它?它说要为SVsTextManager调用QueryService。这是什么意思?

1 个答案:

答案 0 :(得分:2)

这是我用#regions扩展程序开始的:

http://msdn.microsoft.com/en-us/library/dd885121.aspx

本教程向您展示如何突出显示文本,并为您提供大量代码以便开始使用。

基本上您需要创建 Tagger 。标记器遍历文件中的所有代码,并使用元数据标记文本跨度。然后你可以告诉VS格式化你想要的标记文本。如果你想要更多的功能,你可以使用分类(也可能有教程),允许你改变文本大小,前景色,背景颜色等。标记器在GetTags方法中分配分类,如下所示:

new TagSpan<YourTag>(snapshot, new YourTag(
    ClassificationTypeRegistryService.GetClassificationType("yourClassificationName")));

我怀疑你确实想要完全隐藏代码。如果您正在编辑文件,您必须能够知道代码可以使用它(可能您引入了与隐藏代码冲突的代码等)。对于#regions扩展名,您仍然必须确保不删除#endregion行,例如,或在该区域中放置无效代码。这就是为什么它使代码变得小而轻,而不是完全隐藏它。