2010-08-27 96 views
2

有沒有人知道我可以在Visual Studio 2010中獲得ClassificationTypeDefitions的列表BaseDefinitionsClassificationType Visual Studio 2010 BaseDefinitions的定義列表

我試圖定義「UserTypes」的基本定義,但它似乎並沒有工作。對於那些不太知道我說的,需要的代碼,使其更容易...

[Export(typeof(ClassificationTypeDefinition))] 
[Name("keyword")] 
[BaseDefinition("keyword")] 
internal static ClassificationTypeDefinition KeywordDefinition = null; 

,目前使用C#的關鍵字定義突出或什麼不是。但我似乎無法得到用戶類型的工作(類/枚舉/結構名稱和其他類似的對象)。我試過使用vs設置文件並使用那裏定義的定義,但「用戶類型」定義不起作用。

謝謝,預先

回答

2

PredefinedClassificationTypeNames類型具有公共/共享者的列表,但「用戶類型」是受語言提供的一個的例子。

簡短的答案是[BaseDefinition]應該匹配沒有移出VS2008接口(如C#)的語言服務的字體和顏色對話框中的顯示名稱。如果在這種情況下它不起作用,則可以通過添加具有該名稱的第二個分類類型定義(「用戶類型」)來說服它工作。

長的答案是這樣的:

爲了提供分類類型信息,這些語言,編輯動態生成它們第一次您打開與語言服務相關的文件。同步過程基本上是:

  1. 漫步由語言服務提供着色性項目(IVsColorableItemsProvider
  2. 如果有任何着色性的項目不具有相關的分類類型,產生了一個新的分類類型(使用IClassificationTypeRegistryService.CreateClassificationType)。
  3. 漫步從字體和顏色信息來創建/修改爲這些分類類型

格式化信息,使問題將是類型並不在你的分類類型定義拿起時存在由編輯。但是,爲動態生成類型添加分類類型定義應該使這兩個部分保持高興:您的類型的基本定義將被正確設置,並且同步過程將高興地跳過第2步,因爲已經有一個項目那個名字。

+0

好吧,我看到你在說什麼,現在它有道理爲什麼它不能正常顯示。在這種情況下,問題是我實際上沒有編輯一個C#文件,所以我認爲這就是爲什麼它不按我期望的方式工作。 – Buildstarted 2010-08-27 19:01:00

+0

啊,是的,應該讓這個更清楚:)在這種情況下,你可以自己定義它,但它可能不會從F&C中拾取顏色(因爲它看起來是通過語言服務GUID同步顏色);我猜這就是你想繼承價值的原因? 如果是這樣,那麼即使沒有加載C#文件,也可能會有一種拙劣的方式來強制編輯器同步C#。讓我知道你是否需要幫助。 – 2010-08-27 20:00:32

+0

是的,基本上我只是想找到「用戶類型」定義的顏色,所以我可以使用它。所有其他工作都很好,但正如你所指出的那樣,這僅僅是因爲它們是語言不可知的定義。我正在考慮直接從設置文件加載它......我只是不喜歡這種方法。如果你碰巧有任何見解,我會很樂意把它們:) – Buildstarted 2010-08-27 20:30:33