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 @@
-
+