我有一个visual studio扩展,它获取值,然后将值设置为
文本编辑器->常规->在“选项”对话框中跟踪更改设置。
使用VisualStudio2012-2017工作的代码:
DTE vsEnvironment = (DTE)GetService(typeof(DTE));
Property trackChangesProperty = vsEnvironment.Properties["TextEditor", "General"].Item("TrackChanges");
正在抛出
COMException
显示以下消息:
“索引无效。(hresult的异常:0x8002000b(disp_e_badeindex))”
在
EnvDTE._DTE.get_Properties(String Category, String Page)
在Visual Studio 2019中。
显然设置已被移动,所以我试图获取新位置,将设置导出到visual studio 2017和2019中的文件中,并比较结果:
-
视觉工作室2017:
<ToolsOptionsCategory name="TextEditor" RegisteredName="TextEditor">
<ToolsOptionsSubCategory name="General" RegisteredName="General" PackageName="Text Management Package">
<PropertyValue name="TrackChanges">true</PropertyValue>
</ToolsOptionsSubCategory>
-
视觉工作室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");
但没有成功。