diff --git a/Directory.Packages.props b/Directory.Packages.props index 51879bb08..8607daa90 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -9,7 +9,7 @@ - + @@ -40,9 +40,9 @@ - + - + diff --git a/ICSharpCode.BamlDecompiler/packages.lock.json b/ICSharpCode.BamlDecompiler/packages.lock.json index 06e809065..f4e596065 100644 --- a/ICSharpCode.BamlDecompiler/packages.lock.json +++ b/ICSharpCode.BamlDecompiler/packages.lock.json @@ -23,7 +23,7 @@ }, "System.Collections.Immutable": { "type": "CentralTransitive", - "requested": "[9.0.4, )", + "requested": "[10.0.0-preview.3.25171.5, )", "resolved": "6.0.0", "contentHash": "l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==", "dependencies": { @@ -32,7 +32,7 @@ }, "System.Reflection.Metadata": { "type": "CentralTransitive", - "requested": "[9.0.4, )", + "requested": "[10.0.0-preview.3.25171.5, )", "resolved": "6.0.0", "contentHash": "sffDOcex1C3HO5kDolOYcWXTwRpZY/LvJujM6SMjn63fWMJWchYAAmkoAJXlbpZ5yf4d+KMgxd+LeETa4gD9sQ==", "dependencies": { diff --git a/ICSharpCode.ILSpyCmd/packages.lock.json b/ICSharpCode.ILSpyCmd/packages.lock.json index 891f86671..be62bf516 100644 --- a/ICSharpCode.ILSpyCmd/packages.lock.json +++ b/ICSharpCode.ILSpyCmd/packages.lock.json @@ -369,7 +369,7 @@ "K4os.Compression.LZ4": "[1.3.8, )", "Mono.Cecil": "[0.11.6, )", "System.Composition.AttributedModel": "[9.0.4, )", - "System.Reflection.Metadata": "[9.0.4, )", + "System.Reflection.Metadata": "[10.0.0-preview.3.25171.5, )", "System.Runtime.CompilerServices.Unsafe": "[6.1.2, )" } }, @@ -424,9 +424,9 @@ }, "System.Collections.Immutable": { "type": "CentralTransitive", - "requested": "[9.0.4, )", - "resolved": "9.0.4", - "contentHash": "wfm2NgK22MmBe5qJjp52qzpkeDZKb4l9LbdubhZSehY1z4LS+lld6R+B+UQNb2AZRHu/QJlHxEUcRst5hIEejg==" + "requested": "[10.0.0-preview.3.25171.5, )", + "resolved": "10.0.0-preview.3.25171.5", + "contentHash": "7EVfTaDkWy2g0uHIAtOzylYwb/T/khQEPUMfgqTxviPjH+9Aqm/Qnrf+nzLzGdgfV8o3UXFgI7iJUM4ZHxH2hQ==" }, "System.Composition.AttributedModel": { "type": "CentralTransitive", @@ -436,11 +436,11 @@ }, "System.Reflection.Metadata": { "type": "CentralTransitive", - "requested": "[9.0.4, )", - "resolved": "9.0.4", - "contentHash": "qeJNsMmZPc/Lieg0Md+D4F6LoLcxV3b9QsUNmBRXc2ZVOkMbAcwuO9l2jbQFv3n+fLiHJilN8v6i5aJNivjrCQ==", + "requested": "[10.0.0-preview.3.25171.5, )", + "resolved": "10.0.0-preview.3.25171.5", + "contentHash": "+vmMtMSXPQTYqaHoLgWcd39Pwb7yGD4sCewmvVrdNzziRCBxjf6/DK8XCWzELxNsLhOmViZ4LIIr+uPa6K5pRw==", "dependencies": { - "System.Collections.Immutable": "9.0.4" + "System.Collections.Immutable": "10.0.0-preview.3.25171.5" } }, "System.Runtime.CompilerServices.Unsafe": { diff --git a/ICSharpCode.ILSpyX/packages.lock.json b/ICSharpCode.ILSpyX/packages.lock.json index aac3060dd..0f162b64f 100644 --- a/ICSharpCode.ILSpyX/packages.lock.json +++ b/ICSharpCode.ILSpyX/packages.lock.json @@ -38,11 +38,11 @@ }, "System.Reflection.Metadata": { "type": "Direct", - "requested": "[9.0.4, )", - "resolved": "9.0.4", - "contentHash": "qeJNsMmZPc/Lieg0Md+D4F6LoLcxV3b9QsUNmBRXc2ZVOkMbAcwuO9l2jbQFv3n+fLiHJilN8v6i5aJNivjrCQ==", + "requested": "[10.0.0-preview.3.25171.5, )", + "resolved": "10.0.0-preview.3.25171.5", + "contentHash": "+vmMtMSXPQTYqaHoLgWcd39Pwb7yGD4sCewmvVrdNzziRCBxjf6/DK8XCWzELxNsLhOmViZ4LIIr+uPa6K5pRw==", "dependencies": { - "System.Collections.Immutable": "9.0.4" + "System.Collections.Immutable": "10.0.0-preview.3.25171.5" } }, "System.Runtime.CompilerServices.Unsafe": { @@ -76,9 +76,9 @@ }, "System.Collections.Immutable": { "type": "CentralTransitive", - "requested": "[9.0.4, )", - "resolved": "9.0.4", - "contentHash": "wfm2NgK22MmBe5qJjp52qzpkeDZKb4l9LbdubhZSehY1z4LS+lld6R+B+UQNb2AZRHu/QJlHxEUcRst5hIEejg==" + "requested": "[10.0.0-preview.3.25171.5, )", + "resolved": "10.0.0-preview.3.25171.5", + "contentHash": "7EVfTaDkWy2g0uHIAtOzylYwb/T/khQEPUMfgqTxviPjH+9Aqm/Qnrf+nzLzGdgfV8o3UXFgI7iJUM4ZHxH2hQ==" } } } diff --git a/ILSpy.ReadyToRun/ReadyToRunLanguage.cs b/ILSpy.ReadyToRun/ReadyToRunLanguage.cs index de2620bd7..2b7d084eb 100644 --- a/ILSpy.ReadyToRun/ReadyToRunLanguage.cs +++ b/ILSpy.ReadyToRun/ReadyToRunLanguage.cs @@ -20,6 +20,7 @@ using System; using System.Collections.Generic; +using System.Collections.Immutable; using System.Composition; using System.Diagnostics; using System.IO; @@ -27,6 +28,7 @@ using System.Linq; using System.Reflection.Metadata; using System.Reflection.PortableExecutable; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.Decompiler; @@ -240,14 +242,15 @@ namespace ICSharpCode.ILSpy.ReadyToRun result = new ReadyToRunReaderCacheEntry(); try { - if (file is not PEFile module) + if ((file is not PEFile module) || (module.Reader == null)) { result.readyToRunReader = null; result.failureReason = "File is not a valid PE file."; } else { - result.readyToRunReader = new ReadyToRunReader(new ReadyToRunAssemblyResolver(assembly), new StandaloneAssemblyMetadata(module.Reader), module.Reader, module.FileName); + ReadOnlyMemory content = module.Reader.GetEntireImage().GetContent().AsMemory(); + result.readyToRunReader = new ReadyToRunReader(new ReadyToRunAssemblyResolver(assembly), new StandaloneAssemblyMetadata(module.Reader), module.Reader, module.FileName, content); if (result.readyToRunReader.Machine != Machine.Amd64 && result.readyToRunReader.Machine != Machine.I386) { result.failureReason = $"Architecture {result.readyToRunReader.Machine} is not currently supported."; @@ -255,8 +258,19 @@ namespace ICSharpCode.ILSpy.ReadyToRun } else if (result.readyToRunReader.OwnerCompositeExecutable != null) { - string compositePath = Path.Combine(Path.GetDirectoryName(module.FileName), result.readyToRunReader.OwnerCompositeExecutable); - result.compositeReadyToRunReader = new ReadyToRunReader(new ReadyToRunAssemblyResolver(assembly), compositePath); + string compositeModuleName = Path.GetFileNameWithoutExtension(result.readyToRunReader.OwnerCompositeExecutable); + PEFile compositeFile = assembly.GetAssemblyResolver().ResolveModule(assembly.GetMetadataFileOrNull(), compositeModuleName) as PEFile; + if (compositeFile == null) + { + result.readyToRunReader = null; + result.failureReason = "Composite File is not a valid PE file."; + } + else + { + ReadOnlyMemory compositeContent = compositeFile.Reader.GetEntireImage().GetContent().AsMemory(); + result.compositeReadyToRunReader = new ReadyToRunReader(new ReadyToRunAssemblyResolver(assembly), compositeModuleName, compositeContent); + } + } } } @@ -288,7 +302,7 @@ namespace ICSharpCode.ILSpy.ReadyToRun public IAssemblyMetadata FindAssembly(string simpleName, string parentFile) { - return GetAssemblyMetadata(assemblyResolver.ResolveModule(loadedAssembly.GetMetadataFileOrNull(), simpleName + ".dll")); + return GetAssemblyMetadata(assemblyResolver.ResolveModule(loadedAssembly.GetMetadataFileOrNull(), simpleName)); } private IAssemblyMetadata GetAssemblyMetadata(MetadataFile module) diff --git a/NuGet.config b/NuGet.config index ccdac39a4..7f3105a6f 100644 --- a/NuGet.config +++ b/NuGet.config @@ -5,6 +5,7 @@ + @@ -12,7 +13,7 @@ - +