2014-09-23 2 views

답변

4

아니요. 실제로 설정이 항상 문서화되는 것은 아니므로 다른 파일 형식으로 변환해도 반드시 도움이되는 것은 아닙니다.

그러나 외관상으로도 실제로는 매우 간단한 파일 형식입니다. 이름/값 쌍의 XML 파일입니다. 그래서 도구 나 플러그인으로 처리 할 수 ​​있습니다.

참고 사항 : 설정을 사용, 소비 또는 공유하려면이 정보를 알 필요가 없습니다. 이것은 모두 구현 세부 사항입니다 ...

파일은 실제로는 WPF ResourceDictionary으로 직렬화 된 XAML 파일입니다 (내부적으로 일반 XML로 처리되지만). 각 항목은 문자열이거나 부울 또는 기타입니다. x:Key 특성은 계층 구조의 키를 제공하며 계층 구조의 이름은 / 문자로 구분됩니다. 예컨대 :

<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=0F88A1C6C451B448B99CFE316153B889/Description/@EntryValue">Description of a live template</s:String> 

이 다음과 같은 계층 구조의 항목입니다 :

/ 
--Default 
    --PatternsAndTemplates 
    --LiveTemplates 
     --Template 
     --=0F88A1C6C451B448B99CFE316153B889 
      --Description 

이 말은 "관리 옵션"대화 상자에서 데이터를 내보낼 선택할 때 표시되는 계층이다가. 각 항목은 등호 (=)로 시작하는 항목을 제외하고 ReSharper에 정의 된 설정 클래스에서 가져옵니다. 이 기호는이 항목이 "색인 된 값"에서 왔음을 의미합니다. 즉, Template 세그먼트가 실제로 항목 목록이고 각 항목에는 값 (이 경우 guid)이 입력되어 있지만 일반 문자열 이름이 될 수도 있습니다.

따라서 Template 세그먼트에는 설정 파일에 정의 된 각 라이브 템플릿에 대해 하나의 GUID 항목이 포함될 수 있습니다. 그리고이 guid는 여전히 계층 구조의 또 다른 경로입니다. 각 템플릿 GUID에는 여기에 Description 세그먼트와 같은 항목이있을 수 있습니다.

at 기호로 시작하는 항목 @은 메타 데이터 항목입니다. @EntryValue은 XML 요소의 값이 설정 값임을 의미하므로 Description/@EntryValue은 설명 값입니다. 단순한 색인 값의 경우 @EntryIndexedValue, 색인 존재 여부를 나타내는 @KeyIndexDefined 또는 다른 파일의 값 (미리 정의 된 라이브 템플릿과 같은 기본 설정 일 수도 있음)을 나타내는 @EntryIndexRemoved과 같은 다른 메타 데이터 값이 있습니다.

각 항목에 대해 작은 텍스트 설명을 가져올 수 있습니다. ReSharper 내부의 설정 항목을 뒷받침하는 클래스는 키와 값에 대한 간단한 설명을 제공하는 속성으로 꾸며져 있습니다. SettingsKeyAttribute으로 장식 된 수업을 찾을 수 있습니다. 예컨대 :

[SettingsKey(typeof(Missing), "Libraries of templates and patterns")] 
public class PatternsAndTemplatesSettingsKey 
{ 
} 

이 상기 경로의 PatternsAndTemplates 부 (이름 또는 임의 SettingsSettingsKey 접미사 떨어지고, 협약에 의해 유도되는) 정의한다.

typeof(Missing)은 계층 구조에서 상위 설정 키를 정의합니다. 여기에 부모가 없음을 나타 내기 위해 단지 System.Reflection.Missing을 사용하고 있습니다 (경로의 /Default은 설정 시스템에서 병렬 계층을 허용하는 데이터의 "탑재 지점"입니다).

경로의 하위 세그먼트도 SettingsKeyAttribute으로 표시된 클래스로 선언되며 값은 SettingsEntryAttribute 또는 SettingsIndexedEntryAttribute으로 표시된 공용 필드입니다.

[SettingsIndexedKey(typeof(LiveTemplatesSettings), "Single template", typeof(GuidIndex))] 
public class TemplateSettings 
{ 
    [SettingsEntry(null, "Template shortcut")] public string Shortcut; 
    [SettingsEntry(null, "Template description")] public string Description; 
    [SettingsEntry(null, "Template text")] public string Text; 
    [SettingsEntry(false, "Template is disabled")] public bool IsDisabled; 
    [SettingsEntry(false, "Reformat after expansion")] public bool Reformat; 
    [SettingsEntry(false, "Shorten qualified references")] public bool ShortenQualifiedReferences; 
    [SettingsEntry(false, "Is invisible")] public bool IsInvisible; 
    [SettingsIndexedEntry("Categories")] public IIndexedEntry<string, string> Categories; 
    [SettingsIndexedEntry("Custom properties")] public IIndexedEntry<string, string> CustomProperties; 
    [SettingsIndexedEntry("Template applicability")] public IIndexedEntry<TemplateApplicability, bool> Applicability;  
} 

각 속성에는 필드 자체에 대한 간단한 설명이 포함됩니다. (SettingsEntryAttribute 생성자의 초기 값은 "기본값"이지만, 그런 식으로 사용되지는 않습니다. 설정 시스템이 아직 초기화되지 않은 경우 실제로 사용되는 값으로, ReSharper 코드베이스의 2 개 위치, 올바른 것으로 믿어서는 안됩니다).

또한 ReSharper에 내장 된 내부 도구로 설정 시스템을 탐색하고 조사 할 수 있습니다. devenv.exe /ReSharper.Internal을 실행하고 ReSharper -> Internal -> Windows -> SettingsStoreView로 이동합니다. 내부 용이므로 닦을 것을 기대하지 말고 벌레가 있다는 경고를 받으십시오.

관련 문제