如何在新的VS2010编辑器扩展中创建编辑器选项

3

在VS2010编辑器的可扩展性点列表中提到了创建EditorOptionDefinitions以及一个小示例。但是当我尝试这样做时,无法在VS2010 UI中找到选项。如何创建这些选项,以便它们在UI中显示?


请更加注意您的标签选择。“vs2010”是不好的选择。 - Joel Coehoorn
1个回答

3

要在Vs2010中定义一个新的编辑器选项,您需要执行以下操作:

  1. 创建一个从 EditorOptionDefinitionEditorOptionDefinition<T> 派生的类
  2. 添加 EditorOptionDefinition 的导出。
  3. 确保定义此内容的程序集被列为MEF组件

示例

[Export(typeof(EditorOptionDefinition))]
public sealed class SomeNewOption : EditorOptionDefinition<string> {
  public override Default { get ... } 
  public override EditorOptionKey<string> Key { get ... }
}

好的。然后呢?那实际上是做什么的?如果我想让用户设置一个值或获取用户设置的值,我实际上需要做什么?我假设我需要为此构建自己的UI,但这并不清楚。 - Mike Minutillo
@Wolfbyte,这些选项只对其他扩展程序有用。如果您想要一个用户界面,确实需要自己构建一个。 - JaredPar
@JaredPar 感谢您的回答。那么,导出这个类是否提供了 Visual Studio 中选项的持久性或其他什么东西?我正在努力弄清楚为什么要创建其中之一并将其导出。此外,您的答案是正确的,因此我会标记它。 - Mike Minutillo
@Wolfbyte,我不确定持久性角度(我不认为它们是默认的)。这个类的目的是公开对其他扩展有用的设置。例如,编辑器导出像NewLine字符、TabSize、DisplayUrlsAsHyperLinks这样的项目。 - JaredPar
@JaredPar 那么,为了使用其他人定义的这些选项,我们需要[ImportMany] EditorOptionDefinition[] Options吗?我不太明白这个类提供了什么,因为我猜我可以导出一个字符串或布尔值。我想这是因为选项的值可能会发生变化,因此您需要导出一个容器而不是值本身。 - Mike Minutillo
要使用它们,您需要[Import]一个IEditorOptionsFactoryService来获取特定缓冲区或视图(或全局选项)的选项,或者使用ITextView.Options来获取特定视图的选项。 - Noah Richards

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接