diff --git a/BuildTools/sort-resx.ps1 b/BuildTools/sort-resx.ps1 new file mode 100644 index 000000000..d85d46849 --- /dev/null +++ b/BuildTools/sort-resx.ps1 @@ -0,0 +1,18 @@ +$ErrorActionPreference = "Stop"; + +[Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq") | Out-Null + +Write-Host "Sorting .resx files..."; + +Get-ChildItem -Include *.resx -Recurse | foreach ($_) { + Write-Host $_.FullName; + + $doc = [System.Xml.Linq.XDocument]::Load($_.FullName); + $descendants = [System.Linq.Enumerable]::ToArray($doc.Descendants("data")); + + [System.Xml.Linq.Extensions]::Remove($descendants); + $ordered = [System.Linq.Enumerable]::OrderBy($descendants, [System.Func[System.Xml.Linq.XElement,string]] { param ($e) $e.Attribute("name").Value }, [System.StringComparer]::Ordinal); + $doc.Root.Add($ordered); + $doc.Save($_.FullName); +} + diff --git a/ILSpy.ReadyToRun/Properties/Resources.resx b/ILSpy.ReadyToRun/Properties/Resources.resx index 67b36ef54..8c6d1ce8c 100644 --- a/ILSpy.ReadyToRun/Properties/Resources.resx +++ b/ILSpy.ReadyToRun/Properties/Resources.resx @@ -117,16 +117,16 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ReadyToRun - Disassembly Format - - Show Unwind Info + + ReadyToRun Show Debug Info + + Show Unwind Info + \ No newline at end of file diff --git a/ILSpy.ReadyToRun/Properties/Resources.zh-Hans.resx b/ILSpy.ReadyToRun/Properties/Resources.zh-Hans.resx index f13237c18..9430c8a3d 100644 --- a/ILSpy.ReadyToRun/Properties/Resources.zh-Hans.resx +++ b/ILSpy.ReadyToRun/Properties/Resources.zh-Hans.resx @@ -117,12 +117,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ReadyToRun - 反汇编格式 + + ReadyToRun + 显示调试信息 diff --git a/ILSpy/ILSpy.csproj b/ILSpy/ILSpy.csproj index c19321de3..197bd9ed7 100644 --- a/ILSpy/ILSpy.csproj +++ b/ILSpy/ILSpy.csproj @@ -844,7 +844,14 @@ - + + + + powershell -NoProfile -ExecutionPolicy Bypass -File BuildTools/sort-resx.ps1 + + + + diff --git a/ILSpy/Properties/Resources.resx b/ILSpy/Properties/Resources.resx index adb29448e..32fc39d61 100644 --- a/ILSpy/Properties/Resources.resx +++ b/ILSpy/Properties/Resources.resx @@ -117,796 +117,796 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Navigation + + About - - Back + + Add preconfigured list... - - Forward + + Add shell integration - - _Check for Updates + + This will add "{0}" to the registry at "HKCU\Software\Classes\dllfile\shell\Open with ILSpy\command" and "HKCU\Software\Classes\exefile\shell\Open with ILSpy\command" to allow opening .dll and .exe files from the Windows Explorer context menu. + +Do you want to continue? - - _Help + + |All Files|*.* - - _File + + Allow multiple instances - - Open + + Always use braces - - DEBUG -- Disassemble All + + Analyze - - E_xit + + Assemblies - - Exit + + Assembly - - Save + + The directory is not empty. File will be overwritten. +Are you sure you want to continue? - - _Open... + + Project Directory not empty - - Open from _GAC... + + Automatically check for updates every week - - Manage assembly _lists... + + Back - - Reload all assemblies + + Base Types - - DEBUG -- Decompile All + + C_lone - - DEBUG -- Decompile 100x + + Cancel - - Generate portable PDB + + Entity could not be resolved. Cannot analyze entities from missing assembly references. Add the missing reference and try again. - - Reload all assemblies + + Cannot create PDB file for {0}, because it does not contain a PE Debug Directory Entry of type 'CodeView'. - - _Reload + + Check again - - _Remove Assemblies with load errors + + Check for updates - - Remove + + Checking... - - _Save Code... + + Close - - _Show debug steps + + Collapse all tree nodes - - _View + + Copy - - Sort assembly _list by name + + Copy error message - - View + + Copy FQ Name - - Sort assembly list by name + + Create - - _Collapse all tree nodes + + Culture - - Collapse all tree nodes + + DEBUG -- Decompile All - - Name + + DEBUG -- Decompile 100x - - Value (as string) + + DEBUG -- Disassemble All - - Type + + DEBUG -- Dump PDB as XML - - String Table + + Debug Steps - - Value + + Debug this step - - Use variable names from debug symbols, if available + + Decompile - - Show info from debug symbols, if available + + Decompile to new tab - - Show XML documentation in decompiled code + + Decompiler - - Enable folding on all blocks in braces + + Allow extension 'Add' methods in collection initializer expressions - - Remove dead and side effect free code + + Use 'ref' extension methods - - Insert using declarations + + Always cast targets of explicit interface implementation calls - + + Always show enum member values + + Always use braces - - Expand member definitions after decompilation + + Apply Windows Runtime projections on loaded assemblies - - Font + + Array initializer expressions - - Other options + + Decompile async IAsyncEnumerator methods - - Show line numbers + + Decompile ?. and ?[] operators - - Show metadata tokens + + Decompile anonymous methods/lambdas - - Enable word wrap + + Decompile anonymous types - - Sort results by fitness + + Decompile async methods - - Allow multiple instances + + Decompile automatic events - - Cancel + + Decompile automatic properties - - OK + + Decompile await in catch/finally blocks - - Search + + Decompile C# 1.0 'public unsafe fixed int arr[10];' members - - Search for t:TypeName, m:Member or c:Constant; use exact match (=term), 'should not contain' (-term) or 'must contain' (+term); use /reg(ular)?Ex(pressions)?/ or both - t:/Type(Name)?/... + + Decompile [DecimalConstant(...)] as simple literal values - - _Search for: + + Decompile enumerators (yield return) - - Location + + Decompile expression trees - - Decompiling... + + Decompile use of the 'dynamic' type - - Copy + + Detect awaited using and foreach statements - - Editor + + Detect foreach statements - - Toggle All Folding + + Detect lock statements - - Folding + + Detect switch on string - - Resources file (*.resources)|*.resources|Resource XML file|*.resx + + Detect tuple comparisons - - _Remove + + Detect using statements - - _Load Dependencies + + Dictionary initializer expressions - - Dependencies + + Transform to do-while, if possible - - _Add To Main List + + F#-specific options - - _Open Containing Folder + + Transform to for, if possible - - Shell + + Include XML documentation comments in the decompiled code - - _Open Command Line Here + + Insert using declarations - - Copy FQ Name + + Introduce local functions - - Loading... + + Introduce static local functions - - Copy error message + + IsByRefLikeAttribute should be replaced with 'ref' modifiers on structs - - Derived Types + + IsReadOnlyAttribute should be replaced with 'readonly'/'in' modifiers on structs/parameters - - References + + IsUnmanagedAttribute on type parameters should be replaced with 'unmanaged' constraints - - Resources + + Use nint/nuint types - - _About + + Nullable reference types - - ILSpy version + + Object/collection initializer expressions - - Automatically check for updates every week + + Other - - Check for updates + + Ranges - - Checking... + + Read-only methods - - You are using the latest release. + + Remove dead and side effect free code (use with caution!) - - Version {0} is available. + + Remove dead stores (use with caution!) - - Download + + Remove optional arguments, if possible - - You are using a nightly build newer than the latest release. + + Separate local variable declarations and initializers (int x = 5; -> int x; x = 5;), if possible - - Show public, private and internal + + Show info from debug symbols, if available - - Show public, private and internal + + Use discards - - Stand by... + + Use expression-bodied member syntax for get-only properties - - Status + + Use extension method syntax - - A new ILSpy version is available. + + Use implicit conversions between tuple types - - No update for ILSpy found. + + Use implicit method group conversions - - Check again + + Use LINQ expression syntax - - Searching... + + Use lambda syntax, if possible - - Search aborted, more than 1000 results found. + + Use lifted operators for nullables - - Search... + + Use named arguments - - Display Code + + Use non-trailing named arguments - - Save Code + + Use out variable declarations - - |All Files|*.* + + Use pattern-based fixed statement - - Open Explorer + + Use new SDK style format for generated project files (*.csproj) - - Select All + + Use stackalloc initializer syntax - - Toggle Folding + + Use string interpolation - - Analyze + + Use throw expressions - - Enter a list name: + + Use tuple type syntax - - Create + + Use variable names from debug symbols, if available - - New list + + VB-specific options - - Select assemblies to open: + + The settings selected below are applied to the decompiler output in combination with the selection in the language drop-down. Selecting a lower language version in the drop-down will deactivate all selected options of the higher versions. Note that some settings implicitly depend on each other, e.g.: LINQ expressions cannot be introduced without first transforming static calls to extension method calls. - - Nuget Package Browser + + Decompiling... - - Open From GAC + + Dependencies - - _Search: + + Derived Types - - Reference Name + + Display - - Version + + Display Code - - Public Key Token + + Font: - - Manage Assembly Lists + + Download - - Select a list: + + E_xit - - _New + + Editor - - _Open + + Enable folding on all blocks in braces - - _Delete + + Enable word wrap - - _Reset + + Enter a list name: - - Options + + Exit - - _Options... + + Expand member definitions after decompilation - - Display + + Expand using declarations after decompilation - - Decompiler + + Folding - - Misc + + Font - - Font: + + Forward - - Size: + + Generate portable PDB - - Debug Steps + + Generation complete in {0} seconds. - - UseFieldSugar + + Generation was cancelled. - - UseLogicOperationSugar + + Go to token - - ShowILRanges - - - ShowChildIndexInBlock - - - Show state before this step + + Hide empty metadata tables from tree view - - Show state after this step + + Highlight matching braces - - Debug this step + + ILSpyAboutPage.txt - - Warning: This assembly is marked as 'reference assembly', which means that it only contains metadata and no executable code. + + ILSpy version - - Warning: Some assembly references could not be resolved automatically. This might lead to incorrect decompilation of some parts, + + A new ILSpy version is available. - - for ex. property getter/setter access. To get optimal decompilation results, please manually add the missing references to the list of loaded assemblies. + + Indent size: - - Show assembly load log + + Indentation - - Other Resources + + Insert using declarations - - Use tabs instead of spaces + + Are you sure that you want to delete the selected assembly list? - - Show metadata tokens in base 10 + + A list with the same name was found. - - Expand using declarations after decompilation + + Are you sure that you want to remove all assembly lists and recreate the default assembly lists? Load assemblies that were loaded in the last instance. - - Indentation - - - Indent size: + + Loading... - - Tab size: + + Location - - Search (Ctrl+Shift+F or Ctrl+E) + + Manage Assembly Lists - - Show all types and members + + Manage assembly _lists... - - Other + + Misc - - Show _all types and members + + Name - - The settings selected below are applied to the decompiler output in combination with the selection in the language drop-down. Selecting a lower language version in the drop-down will deactivate all selected options of the higher versions. Note that some settings implicitly depend on each other, e.g.: LINQ expressions cannot be introduced without first transforming static calls to extension method calls. + + Navigation - - Decompile enumerators (yield return) + + Navigation failed because the target is hidden or a compiler-generated class.\n +Please disable all filters that might hide the item (i.e. activate "View > Show internal types and members") and try again. - - Decompile anonymous methods/lambdas + + New list - - Decompile anonymous types + + New Tab - - Use lambda syntax, if possible + + Nuget Package Browser - - Decompile expression trees + + OK - - Decompile use of the 'dynamic' type + + Open - - Decompile async methods + + Open Explorer - - Decompile await in catch/finally blocks + + Open From GAC - - Decompile [DecimalConstant(...)] as simple literal values + + Open from _GAC... - - Decompile C# 1.0 'public unsafe fixed int arr[10];' members + + _Delete - - Use lifted operators for nullables + + _Open - - Decompile ?. and ?[] operators + + Options - - Decompile automatic properties + + Other - - Decompile automatic events + + Other options - - Detect using statements + + Other Resources - - Other + + Portable PDB|*.pdb|All files|*.* - - Always use braces + + for ex. property getter/setter access. To get optimal decompilation results, please manually add the missing references to the list of loaded assemblies. - - Detect foreach statements + + Public Key Token - - Detect lock statements + + R_ename - - Detect switch on string + + Reference Name - - Insert using declarations + + References - - Use extension method syntax + + Reload all assemblies - - Use LINQ expression syntax + + Reload all assemblies - - Use implicit method group conversions + + Remove - - Always cast targets of explicit interface implementation calls + + Remove dead and side effect free code - - Use variable names from debug symbols, if available + + Remove shell integration - - Array initializer expressions + + This will remove "{0}" from the registry at "HKCU\Software\Classes\dllfile\shell\Open with ILSpy\command" and "HKCU\Software\Classes\exefile\shell\Open with ILSpy\command". + +Do you want to continue? - - Object/collection initializer expressions + + Rename list - - Dictionary initializer expressions + + Reset to defaults - - Allow extension 'Add' methods in collection initializer expressions + + Do you really want to load the default settings for the active page? - - Use string interpolation + + Resources file (*.resources)|*.resources|Resource XML file|*.resx - - Include XML documentation comments in the decompiled code + + Save - - Use expression-bodied member syntax for get-only properties + + Save Code - - Use out variable declarations + + Search... - - Use discards + + Search aborted, more than 1000 results found. - - IsByRefLikeAttribute should be replaced with 'ref' modifiers on structs + + Search (Ctrl+Shift+F or Ctrl+E) - - IsReadOnlyAttribute should be replaced with 'readonly'/'in' modifiers on structs/parameters + + Search Microsoft Docs... - - IsUnmanagedAttribute on type parameters should be replaced with 'unmanaged' constraints + + Search - - Use stackalloc initializer syntax + + Searching... - - Use tuple type syntax + + Select All - - Use implicit conversions between tuple types + + Select assemblies to open: - - Detect tuple comparisons + + Select a list of assemblies - - Use named arguments + + Select language to decompile to - - Use non-trailing named arguments - - - Remove optional arguments, if possible - - - Introduce local functions + + Select a list: - - Nullable reference types + + Select PDB... - - Show info from debug symbols, if available + + Select version of language to output - - VB-specific options + + Shell - - F#-specific options + + Show all types and members - - Remove dead and side effect free code (use with caution!) + + Show assembly load log - - Apply Windows Runtime projections on loaded assemblies + + ShowChildIndexInBlock - - Search Microsoft Docs... + + Show XML documentation in decompiled code - - Entity could not be resolved. Cannot analyze entities from missing assembly references. Add the missing reference and try again. + + ShowILRanges - - Use throw expressions + + Show info from debug symbols, if available - - Use 'ref' extension methods + + Show public, private and internal - - The directory is not empty. File will be overwritten. -Are you sure you want to continue? + + Show line numbers - - Project Directory not empty + + Show metadata tokens - - Highlight matching braces + + Show metadata tokens in base 10 - - Select language to decompile to + + Show only public types and members - - Select version of language to output + + Show state after this step - - Remove dead stores (use with caution!) + + Show state before this step - - Always show enum member values + + Show _all types and members - - Show only public types and members + + Show public, private and internal Show only _public types and members - - Assembly + + Size: - - Decompile to new tab + + Sort assembly list by name - - Decompile async IAsyncEnumerator methods + + Sort assembly _list by name - - Read-only methods + + Sort results by fitness - - Detect awaited using and foreach statements + + Stand by... - - About + + Status - - Assemblies + + String Table - - _Close all documents + + Tab size: - - _Reset layout + + Toggle All Folding - - _Window + + Type - - Use pattern-based fixed statement + + No update for ILSpy found. - - Transform to do-while, if possible + + UseFieldSugar - - Transform to for, if possible + + UseLogicOperationSugar - - Separate local variable declarations and initializers (int x = 5; -> int x; x = 5;), if possible + + Use tabs instead of spaces - - Reset to defaults + + You are using the latest release. - - Do you really want to load the default settings for the active page? + + You are using a nightly build newer than the latest release. - - Select a list of assemblies + + Value - - Close + + Value (as string) - - C_lone + + Use variable names from debug symbols, if available - - Are you sure that you want to delete the selected assembly list? + + Version - - A list with the same name was found. + + Version {0} is available. - - Are you sure that you want to remove all assembly lists and recreate the default assembly lists? + + View - - Introduce static local functions + + Visual Studio Solution file|*.sln|All files|*.* - - Hide empty metadata tables from tree view + + Warning: This assembly is marked as 'reference assembly', which means that it only contains metadata and no executable code. - - Navigation failed because the target is hidden or a compiler-generated class.\n -Please disable all filters that might hide the item (i.e. activate "View > Show internal types and members") and try again. + + Warning: Some assembly references could not be resolved automatically. This might lead to incorrect decompilation of some parts, - - Add shell integration + + Search for t:TypeName, m:Member or c:Constant; use exact match (=term), 'should not contain' (-term) or 'must contain' (+term); use /reg(ular)?Ex(pressions)?/ or both - t:/Type(Name)?/... - - This will add "{0}" to the registry at "HKCU\Software\Classes\dllfile\shell\Open with ILSpy\command" and "HKCU\Software\Classes\exefile\shell\Open with ILSpy\command" to allow opening .dll and .exe files from the Windows Explorer context menu. - -Do you want to continue? + + _Close all documents - - Remove shell integration + + _Reset layout - - This will remove "{0}" from the registry at "HKCU\Software\Classes\dllfile\shell\Open with ILSpy\command" and "HKCU\Software\Classes\exefile\shell\Open with ILSpy\command". - -Do you want to continue? + + _About - - Ranges + + _Add To Main List - - Add preconfigured list... + + _Check for Updates - - R_ename + + _Collapse all tree nodes - - Rename list + + _File - - Culture + + _Help - - New Tab + + _Load Dependencies - - Use new SDK style format for generated project files (*.csproj) + + _New - - Use nint/nuint types + + _Open... - - Base Types + + _Open Command Line Here - - DEBUG -- Dump PDB as XML + + _Open Containing Folder - - ILSpyAboutPage.txt + + _Options... - - Select PDB... + + _Reload - - Portable PDB|*.pdb|All files|*.* + + _Remove - - Decompile + + _Remove Assemblies with load errors - - Go to token + + _Reset - - Cannot create PDB file for {0}, because it does not contain a PE Debug Directory Entry of type 'CodeView'. + + Resources - - Visual Studio Solution file|*.sln|All files|*.* + + _Save Code... - - Generation complete in {0} seconds. + + _Search: - - Generation was cancelled. + + _Search for: + + + _Show debug steps + + + Toggle Folding + + + _View + + + _Window \ No newline at end of file diff --git a/ILSpy/Properties/Resources.zh-Hans.resx b/ILSpy/Properties/Resources.zh-Hans.resx index 2ecf5a42b..5636a202e 100644 --- a/ILSpy/Properties/Resources.zh-Hans.resx +++ b/ILSpy/Properties/Resources.zh-Hans.resx @@ -117,796 +117,796 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 导航 + + 关于 - - 后退 + + 添加预配置列表... - - 前进 + + 添加文件资源管理器集成 - - 检查更新(_C) + + 这会在注册表的“HKCU\Software\Classes\dllfile\shell\Open with ILSpy\command”与“HKCU\Software\Classes\exefile\shell\Open with ILSpy\command”中添加“{0}”。这样在文件资源管理器中,.dll 文件与 .exe 文件可以在右键菜单中使用 ILSpy 打开。 + +确定继续? - - 帮助(_H) + + |所有文件|*.* - - 文件(_F) + + 允许多个实例 - - 打开 + + 始终使用大括号 - - 调试 -- 全部反编译到 IL + + 分析 - - 退出(_X) + + 程序集 - - 退出 + + 程序集 - - 保存 + + 目录非空。文件会被覆盖。 +确定继续? - - 打开(_O)... + + 项目目录非空 - - 从 GAC 中打开(_G)... + + 每周自动检查更新 - - 重新加载全部程序集 + + 后退 - - 调试 -- 全部反编译到 C# + + 基类型 - - 调试 -- 反编译100次 + + 克隆(_L) - - 生成可携带 PDB + + 取消 - - 重新加载程序集 + + 无法解析实体。可能是由于缺少程序集引用。请添加缺少的程序集并重试。 - - 重新加载(_R) + + 无法创建为{0}创建PDB文件,因为它不包含PE调试目录类型 'CodeView'. - - 移除程序集及其加载错误(_R) + + 再次检查 - - 移除 + + 检查更新 - - 保存代码(_S)... + + 检查... - - 显示调试步骤(_S) + + 关闭 - - 视图(_V) + + 折叠所有树节点 - - 按名称排列程序集列表(_L) + + 复制 - - 视图 + + 复制错误信息 - - 按名称排列程序集列表 + + 复制完全限定名称 - - 折叠所有树节点(_C) + + 创建 - - 折叠所有树节点 + + 区域 - - 名称 + + 调试 -- 全部反编译到 C# - - 值(以字符串形式) + + 调试 -- 反编译100次 - - 类型 + + 调试 -- 全部反编译到 IL - - 字符串表 + + 调试 -- PDB 转储为 XML - - + + 调试步骤 - - 资源 + + 调试此步骤 - - 下载 + + 反编译 - - 检查... + + 在新选项卡反编译 - - 检查更新 + + 反编译器 - - 关于(_A) + + 在集合初始化器表达式中允许扩展 Add 方法 - - 加载中... + + 使用 ref 扩展方法 - - 引用 + + 始终强制转换显式接口实现调用的目标 - - ILSpy 版本 + + 始终显示枚举数值 - - 正在反编译... + + 始终使用大括号 - - 复制 + + 在已加载的程序集上应用 Windows 运行时投影 - - 编辑器 + + 数组初始化器表达式 - - 位置 + + 反编译异步 IAsyncEnumerator 方法 - - 搜索(_S): + + 反编译 ?. 和 ?[] 运算符 - - 移除(_R) + + 反编译匿名方法或 lambda - - 加载依赖(_L) + + 反编译匿名类型 - - 依赖(_L) + + 反编译异步方法 - - 确定 + + 反编译自动事件 - - 搜索 + + 反编译自动属性 - - 状态 + + 反编译 catch/finally 内的 await - - 字体 + + 反编译 C# 1.0“public unsafe fixed int arr[10];”成员 - - 其他选项 + + 反编译 [DecimalConstant(...)] 作为简单的文本值 - - 显示行号 + + 反编译枚举器(yield return) - - 取消 + + 反编译表达树 - - 折叠 + + 反编译使用 dynamic 类型 - - 添加到主列表(_A) + + 检测使用了 await 的 using 和 foreach 块 - - 打开包含文件夹(_O) + + 检测 foreach 语句 - - Shell + + 检测 lock 语句 - - 在这里打开命令行(_O) + + 检测 switch 的字符串 - - 复制完全限定名称 + + 检测元组比较 - - 复制错误信息 - - - 使用调试符号中的变量名称(如果可用) - - - 显示调试符号的信息(如果可用) - - - 在反编译代码中显示 XML 文档 - - - 在大括号中的所有块上启用折叠 - - - 删除死代码和无副作用的代码 - - - 插入使用声明 + + 检测 using 语句 - - 始终使用大括号 + + Dictionary 初始值设定项表达式 - - 在反编译后展开成员定义 + + 如果可能,转换到 do-while 块 - - 显示元数据标记 + + F# 特定选项 - - 启用自动换行 + + 如果可能,转换到 for 块 - - 允许多个实例 + + 在反编译代码中包括 XML 文档注释 - - 切换所有折叠 + + 插入 using 声明 - - 派生类型 + + 引入局部函数(local functions) - - 资源文件|*.resources|XML资源文件|*.resx + + 引入静态局部函数(static local functions) - - 排序结果自适应 + + IsByRefLikeAttribute 应替换为结构上的 ref 修饰符 - - 重置(_R) + + IsReadOnlyAttribute 应替为结构参数上的 readonly/in 中的修饰符 - - 删除(_D) + + 类型参数上的 IsUnmanagedAttribute 应替换为 unmanaged 约束 - - 打开(_O) + + 使用 nint/nuint 类型 - - 引用名称 + + 可空引用类型 - - 版本 + + 对象或集合初始化器表达式 - - 公钥标记 + + 其他 - - 选择一个列表: + + 范围(ranges) - - 搜索(_S): + + 只读方法 - - 从 GAC 中打开 + + 删除死代码和无副作用的代码(请谨慎使用) - - Nuget 包浏览器 + + 删除死值(请谨慎使用) - - 选择要打开的程序集: + + 如果可能,删除可选参数 - - 创建 + + 如果可能,分离局部变量的声明与初始化(int x = 5; -> int x; x = 5;) - - 输入列表名称: + + 显示调试符号中的信息(如果可用) - - 分析 + + 使用丢弃物 - - 切换折叠 + + 对仅获取属性使用表达式内部成员语法 - - 全部选择 + + 使用扩展方法语法 - - 打开资源管理器 + + 在元组类型之间使用隐式转换 - - |所有文件|*.* + + 使用隐式方法组转换 - - 保存代码 + + 使用 LINQ 表达式语法 - - 显示代码 + + 如果可能, 请使用 lambda 语法 - - 搜索... + + 对空变量使用提升运算符 - - 搜索已中止,发现超过1000个结果。 + + 使用命名参数 - - 搜索... + + 使用非尾随命名参数 - - 再次检查 + + 使用外部变量声明 - - 找不到 ILSpy 的更新。 + + 使用基于模式的 fixed 语句 - - 有新的 ILSpy 版本已经可用。 + + 使用新的 SDK 格式(*.csproj)生成项目文件 - - 就绪... + + 使用 stackalloc 初始化器语法 - - 显示内部类型和成员 + + 使用字符串插值 - - 显示内部类型和成员(_I) + + 使用 throw 表达式 - - 您使用的是每日构建版本,比最新版本更新。 + + 使用元组类型语法 - - 版本 {0} 已可用。 + + 使用调试符号中的变量名(如果可用) - - 您使用的是最新版本。 + + VB 特定选项 - - 每周自动检查更新 + + 下面选择的设置将与语言下拉列表中的选择一起应用于反编译程序输出。在下拉列表中选择较低的语言版本将停用较高版本的所有选定选项。请注意, 某些设置隐式依赖于彼此, 例如: 如果不首先将静态调用转换为扩展方法调用, 则无法引入 LINQ 表达式。 - - 搜索 t:类型、m:成员 或 c:常量;使用完全匹配(=term)、不应包含(-term)或必须包含(+term);使用 /正(则)?表达(式)?/;或同时使用二者 - t:/类(型)?/... + + 正在反编译... - - 选项 + + 依赖(_L) - - 选项(_O)... + + 派生类型 显示 - - 反编译器 - - - 杂项 + + 显示代码 字体: - - 大小: + + 下载 - - 调试步骤 + + 退出(_X) - - 使用 fld 语法糖 + + 编辑器 - - 使用 logic 语法糖 + + 在大括号中的所有块上启用折叠 - - 显示 IL 范围 + + 启用自动换行 - - 在块中显示子索引 + + 输入列表名称: - - 在此步骤之前显示状态 + + 退出 - - 在此步骤之后显示状态 + + 在反编译后展开成员定义 - - 调试此步骤 + + 反编译后展开引用和声明 - - 警告:此程序集被标记为“引用程序集”,这意味着它只包含元数据,没有可执行代码。 + + 折叠 - - 警告:某些程序集引用无法自动解析。这可能会导致某些部分反编译错误, + + 字体 - - 例如属性 getter/setter 访问。要获得最佳反编译结果,请手动将缺少的引用添加到加载的程序集列表中。 + + 前进 - - 显示程序集加载日志 + + 生成可携带 PDB - - 其他资源 + + 生成完成,耗时 {0} 秒。 - - 使用 Tab 替代空格 + + 已取消生成。 - - 使用十进制显示元数据标记 + + 转至令牌 - - 反编译后展开引用和声明 + + 在树视图中隐藏空的元数据表 - - 加载在最后一个实例中加载的程序集。 + + 高亮配对的大括号 - - 缩进 + + ILSpyAboutPage_zh_Hans.txt + + + ILSpy 版本 + + + 有新的 ILSpy 版本已经可用。 缩进长度: - - Tab 长度: - - - 搜索(Ctrl + Shift + F 或 Ctrl + E) + + 缩进 - - 显示所有类型和成员 + + 插入使用声明 - - 其他 + + 是否删除选中的程序集列表? - - 显示所有类型和成员(_A) + + 已有同名的列表。 - - 下面选择的设置将与语言下拉列表中的选择一起应用于反编译程序输出。在下拉列表中选择较低的语言版本将停用较高版本的所有选定选项。请注意, 某些设置隐式依赖于彼此, 例如: 如果不首先将静态调用转换为扩展方法调用, 则无法引入 LINQ 表达式。 + + 是否删除所有程序集列表,并重建默认程序集列表? - - 反编译枚举器(yield return) + + 加载在最后一个实例中加载的程序集。 - - 反编译匿名方法或 lambda + + 加载中... - - 反编译匿名类型 + + 位置 - - 如果可能, 请使用 lambda 语法 + + 管理程序集列表 - - 反编译表达树 + + 管理程序集列表(_L)... - - 反编译使用 dynamic 类型 + + 杂项 - - 反编译异步方法 + + 名称 - - 反编译 catch/finally 内的 await + + 导航 - - 反编译 [DecimalConstant(...)] 作为简单的文本值 + + 导航失败,因为目标是隐藏的或编译器生成的类。\n +请禁用所有的、可能隐藏它们的筛选器(例如,启用“视图 > 显示内部类型和成员”),并重试。 - - 反编译 C# 1.0“public unsafe fixed int arr[10];”成员 + + 新建列表 - - 对空变量使用提升运算符 + + 新选项卡 - - 反编译 ?. 和 ?[] 运算符 + + Nuget 包浏览器 - - 反编译自动属性 + + 确定 - - 反编译自动事件 + + 打开 - - 检测 using 语句 + + 打开资源管理器 - - 其他 + + 从 GAC 中打开 - - 始终使用大括号 + + 从 GAC 中打开(_G)... - - 检测 foreach 语句 + + 删除(_D) - - 检测 lock 语句 + + 打开(_O) - - 检测 switch 的字符串 + + 选项 - - 插入 using 声明 + + 其他 - - 使用扩展方法语法 + + 其他选项 - - 使用 LINQ 表达式语法 + + 其他资源 - - 使用隐式方法组转换 + + 可携带 PDB(*.pdb)|*.pdb|所有文件(*.*)|*.* - - 始终强制转换显式接口实现调用的目标 + + 例如属性 getter/setter 访问。要获得最佳反编译结果,请手动将缺少的引用添加到加载的程序集列表中。 - - 使用调试符号中的变量名(如果可用) + + 公钥标记 - - 数组初始化器表达式 + + 重命名(_E) - - 对象或集合初始化器表达式 + + 引用名称 - - Dictionary 初始值设定项表达式 + + 引用 - - 在集合初始化器表达式中允许扩展 Add 方法 + + 重新加载程序集 - - 使用字符串插值 + + 重新加载全部程序集 - - 在反编译代码中包括 XML 文档注释 + + 移除 - - 对仅获取属性使用表达式内部成员语法 + + 删除死代码和无副作用的代码 - - 使用外部变量声明 + + 移除文件资源管理器集成 - - 使用丢弃物 + + 这会在注册表的“HKCU\Software\Classes\dllfile\shell\Open with ILSpy\command”与“HKCU\Software\Classes\exefile\shell\Open with ILSpy\command”中移除“{0}”。 + +确定继续? - - IsByRefLikeAttribute 应替换为结构上的 ref 修饰符 + + 重命名列表 - - IsReadOnlyAttribute 应替为结构参数上的 readonly/in 中的修饰符 + + 还原到默认值 - - 类型参数上的 IsUnmanagedAttribute 应替换为 unmanaged 约束 + + 是否为活动页面加载默认值? - - 使用 stackalloc 初始化器语法 + + 资源文件|*.resources|XML资源文件|*.resx - - 使用元组类型语法 + + 保存 - - 在元组类型之间使用隐式转换 + + 保存代码 - - 检测元组比较 + + 搜索... - - 使用命名参数 + + 搜索已中止,发现超过1000个结果。 - - 使用非尾随命名参数 + + 搜索(Ctrl + Shift + F 或 Ctrl + E) - - 如果可能,删除可选参数 + + 搜索 Microsoft Docs... - - 引入局部函数(local functions) + + 搜索 - - 可空引用类型 + + 搜索... - - 显示调试符号中的信息(如果可用) + + 全部选择 - - VB 特定选项 + + 选择要打开的程序集: - - F# 特定选项 + + 选择一个程序集列表 - - 删除死代码和无副作用的代码(请谨慎使用) + + 选择一个反编译目标语言 - - 在已加载的程序集上应用 Windows 运行时投影 + + 选择一个列表: - - 搜索 Microsoft Docs... + + 选择 PDB... - - 关于 + + 选择输出语言的版本 - - 使用新的 SDK 格式(*.csproj)生成项目文件 + + Shell - - 新建(_N) + + 显示所有类型和成员 - - 窗口(_W) + + 显示程序集加载日志 - - 添加预配置列表... + + 在块中显示子索引 - - 添加文件资源管理器集成 + + 在反编译代码中显示 XML 文档 - - 这会在注册表的“HKCU\Software\Classes\dllfile\shell\Open with ILSpy\command”与“HKCU\Software\Classes\exefile\shell\Open with ILSpy\command”中添加“{0}”。这样在文件资源管理器中,.dll 文件与 .exe 文件可以在右键菜单中使用 ILSpy 打开。 - -确定继续? + + 显示 IL 范围 - - 程序集 + + 显示调试符号的信息(如果可用) - - 程序集 + + 显示内部类型和成员 - - 目录非空。文件会被覆盖。 -确定继续? + + 显示行号 - - 项目目录非空 + + 显示元数据标记 - - 克隆(_L) + + 使用十进制显示元数据标记 - - 区域 + + 只显示公有类型和成员 - - 关闭 + + 在此步骤之后显示状态 - - 无法解析实体。可能是由于缺少程序集引用。请添加缺少的程序集并重试。 + + 在此步骤之前显示状态 - - 使用 ref 扩展方法 + + 显示所有类型和成员(_A) - - 始终显示枚举数值 + + 显示内部类型和成员(_I) - - 反编译异步 IAsyncEnumerator 方法 + + 只显示公有类型和成员(_P) - - 检测使用了 await 的 using 和 foreach 块 + + 大小: - - 如果可能,转换到 do-while 块 + + 按名称排列程序集列表 - - 如果可能,转换到 for 块 + + 按名称排列程序集列表(_L) - - 引入静态局部函数(static local functions) + + 排序结果自适应 - - 范围(ranges) + + 就绪... - - 只读方法 + + 状态 - - 删除死值(请谨慎使用) + + 字符串表 - - 如果可能,分离局部变量的声明与初始化(int x = 5; -> int x; x = 5;) + + Tab 长度: - - 使用基于模式的 fixed 语句 + + 切换所有折叠 - - 使用 throw 表达式 + + 类型 - - 在新选项卡反编译 + + 找不到 ILSpy 的更新。 - - 在树视图中隐藏空的元数据表 + + 使用 fld 语法糖 - - 高亮配对的大括号 + + 使用 logic 语法糖 - - 重置布局(_R) + + 使用 Tab 替代空格 - - 关闭所有文档(_C) + + 您使用的是最新版本。 - - 只显示公有类型和成员 + + 您使用的是每日构建版本,比最新版本更新。 - - 只显示公有类型和成员(_P) + + - - 选择输出语言的版本 + + 值(以字符串形式) - - 选择一个程序集列表 + + 使用调试符号中的变量名称(如果可用) - - 选择一个反编译目标语言 + + 版本 - - 重命名列表 + + 版本 {0} 已可用。 - - 还原到默认值 + + 视图 - - 这会在注册表的“HKCU\Software\Classes\dllfile\shell\Open with ILSpy\command”与“HKCU\Software\Classes\exefile\shell\Open with ILSpy\command”中移除“{0}”。 - -确定继续? + + Visual Studio 解决方案文件(*.sln)|*.sln|所有文件(*.*)|*.* - - 移除文件资源管理器集成 + + 警告:此程序集被标记为“引用程序集”,这意味着它只包含元数据,没有可执行代码。 - - 是否为活动页面加载默认值? + + 警告:某些程序集引用无法自动解析。这可能会导致某些部分反编译错误, - - 重命名(_E) + + 搜索 t:类型、m:成员 或 c:常量;使用完全匹配(=term)、不应包含(-term)或必须包含(+term);使用 /正(则)?表达(式)?/;或同时使用二者 - t:/类(型)?/... - - 新建列表 + + 关闭所有文档(_C) - - 新选项卡 + + 重置布局(_R) - - 管理程序集列表(_L)... + + 关于(_A) - - 管理程序集列表 + + 添加到主列表(_A) - - 导航失败,因为目标是隐藏的或编译器生成的类。\n -请禁用所有的、可能隐藏它们的筛选器(例如,启用“视图 > 显示内部类型和成员”),并重试。 + + 检查更新(_C) - - 是否删除选中的程序集列表? + + 折叠所有树节点(_C) - - 已有同名的列表。 + + 文件(_F) - - 是否删除所有程序集列表,并重建默认程序集列表? + + 帮助(_H) - - ILSpyAboutPage_zh_Hans.txt + + 加载依赖(_L) - - 调试 -- PDB 转储为 XML + + 新建(_N) - - 使用 nint/nuint 类型 + + 打开(_O)... - - 基类型 + + 在这里打开命令行(_O) - - 无法创建为{0}创建PDB文件,因为它不包含PE调试目录类型 'CodeView'. + + 打开包含文件夹(_O) - - Visual Studio 解决方案文件(*.sln)|*.sln|所有文件(*.*)|*.* + + 选项(_O)... - - 转至令牌 + + 重新加载(_R) - - 反编译 + + 移除(_R) - - 可携带 PDB(*.pdb)|*.pdb|所有文件(*.*)|*.* + + 移除程序集及其加载错误(_R) - - 选择 PDB... + + 重置(_R) - - 已取消生成。 + + 资源 - - 生成完成,耗时 {0} 秒。 + + 保存代码(_S)... + + + 搜索(_S): + + + 搜索(_S): + + + 显示调试步骤(_S) + + + 切换折叠 + + + 视图(_V) + + + 窗口(_W) \ No newline at end of file