У меня есть расширение Visual Studio, которое получает значение, а затем задает значение в текстовом редакторе -> Общие -> Отслеживание изменений в диалоговом окне «Параметры».
Код, который отлично работал с Visual Studio2012-2017:
DTE vsEnvironment = (DTE)GetService(typeof(DTE));
Property trackChangesProperty = vsEnvironment.Properties["TextEditor", "General"].Item("TrackChanges");
выдает COMException
со следующим сообщением: "Неверный индекс. (Исключение из HRESULT: 0x8002000B (DISP_E_BADINDEX))" " в EnvDTE._DTE.get_Properties(String Category, String Page)
вVisual Studio 2019.
Видимо, параметр перемещен, поэтому я, пытаясь получить новое местоположение, экспортировал параметры в файл в Visual Studio 2017 и 2019 и сравнил результаты:
Visual Studio 2017:
<ToolsOptionsCategory name="TextEditor" RegisteredName="TextEditor">
<ToolsOptionsSubCategory name="General" RegisteredName="General" PackageName="Text Management Package">
<PropertyValue name="TrackChanges">true</PropertyValue>
</ToolsOptionsSubCategory>
Visual Studio 2019:
<Category name="Text Editor_General" Category="{c178af61-531a-46f0-bd57-102d9e42c711}" Package="{e269b994-ef71-4ce0-8bcd-581c217372e8}" RegisteredName="Text Editor_General" PackageName="Microsoft.VisualStudio.Editor.Implementation.EditorPackage">
<PropertyValue name="TrackChanges">true</PropertyValue>
Я все еще не уверен, как использовать информацию, поскольку индексатор DTE.Properties
принимает два параметра: Category
и Page
.Я уже попробовал следующее:
vsEnvironment.Properties["TextEditor", null].Item("TrackChanges");
vsEnvironment.Properties["TextEditor", string.Empty].Item("TrackChanges");
vsEnvironment.Properties["Text Editor_General", null].Item("TrackChanges");
vsEnvironment.Properties["Text Editor_General", string.Empty].Item("TrackChanges");
, но безуспешно.