Update to AsmResolver 6 beta 4

This commit is contained in:
ds5678 2025-09-13 15:26:51 -07:00
parent 85172b7393
commit 0d60120c08
10 changed files with 14 additions and 23 deletions

View File

@ -8,12 +8,12 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AsmResolver.DotNet" Version="6.0.0-beta.3" /> <PackageReference Include="AsmResolver.DotNet" Version="6.0.0-beta.4" />
<PackageReference Include="AssetRipper.Gee.External.Capstone" Version="2.3.2" /> <PackageReference Include="AssetRipper.Gee.External.Capstone" Version="2.3.2" />
<PackageReference Include="AssetRipper.Mining.PredefinedAssets" Version="1.5.0" /> <PackageReference Include="AssetRipper.Mining.PredefinedAssets" Version="1.5.0" />
<PackageReference Include="AssetRipper.Primitives" Version="3.2.0" /> <PackageReference Include="AssetRipper.Primitives" Version="3.2.0" />
<PackageReference Include="AssetRipper.Tpk" Version="1.1.0" /> <PackageReference Include="AssetRipper.Tpk" Version="1.1.0" />
<PackageReference Include="Samboy063.Cpp2IL.Core" Version="2022.1.0-development.1374" /> <PackageReference Include="Samboy063.Cpp2IL.Core" Version="2022.1.0-development.1390" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -43,10 +43,7 @@ public partial class BaseManager : IAssemblyManager
AssemblyDefinition assembly; AssemblyDefinition assembly;
try try
{ {
MemoryStream memoryStream = new(); assembly = AssemblyDefinition.FromStream(stream);
stream.CopyTo(memoryStream);
assembly = AssemblyDefinition.FromBytes(memoryStream.ToArray());
//assembly = AssemblyDefinition.FromStream(stream);
} }
catch (BadImageFormatException badImageFormatException) catch (BadImageFormatException badImageFormatException)
{ {
@ -95,16 +92,13 @@ public partial class BaseManager : IAssemblyManager
public virtual void Read(Stream stream, string fileName) public virtual void Read(Stream stream, string fileName)
{ {
MemoryStream memoryStream = new(); AssemblyDefinition assembly = AssemblyDefinition.FromStream(stream);
stream.CopyTo(memoryStream);
AssemblyDefinition assembly = AssemblyDefinition.FromBytes(memoryStream.ToArray());
//AssemblyDefinition assembly = AssemblyDefinition.FromStream(stream);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
assembly.InitializeResolvers(this); assembly.InitializeResolvers(this);
fileName = Path.GetFileNameWithoutExtension(fileName); fileName = Path.GetFileNameWithoutExtension(fileName);
string assemblyName = ToAssemblyName(assembly); string assemblyName = ToAssemblyName(assembly);
m_assemblies.Add(fileName, assembly); m_assemblies.Add(fileName, assembly);
m_assemblies[assemblyName] = assembly; m_assemblies[assemblyName] = assembly;
m_assemblyStreams.Add(assembly, memoryStream); m_assemblyStreams.Add(assembly, stream);
} }
public virtual void Unload(string fileName) public virtual void Unload(string fileName)

View File

@ -19,11 +19,8 @@ public sealed class MonoManager : BaseManager
{ {
try try
{ {
// Needs FromStream
using Stream stream = gameStructure.FileSystem.File.OpenRead(assemblyPath); using Stream stream = gameStructure.FileSystem.File.OpenRead(assemblyPath);
using MemoryStream memoryStream = new(); PEFile peFile = PEFile.FromStream(stream);
stream.CopyTo(memoryStream);
PEFile peFile = PEFile.FromBytes(memoryStream.ToArray());
if (!peFile.OptionalHeader.GetDataDirectory(DataDirectoryIndex.ClrDirectory).IsPresentInPE) if (!peFile.OptionalHeader.GetDataDirectory(DataDirectoryIndex.ClrDirectory).IsPresentInPE)
{ {
Logger.Info(LogCategory.Import, $"Skipping native assembly: {assemblyName}"); Logger.Info(LogCategory.Import, $"Skipping native assembly: {assemblyName}");

View File

@ -144,7 +144,7 @@ public sealed class GameStructure : IDisposable
if (resFile is not null) if (resFile is not null)
{ {
resFile.Stream.Position = 0; resFile.Stream.Position = 0;
AssemblyManager.Read(resFile.Stream, assemblyName); AssemblyManager.Read(resFile.Stream.CreateReference(), assemblyName);
} }
else else
{ {

View File

@ -32,7 +32,7 @@ public sealed class NullRefReturnProcessor(ScriptContentLevel scriptContentLevel
{ {
if (method.Signature?.ReturnType is ByReferenceTypeSignature) if (method.Signature?.ReturnType is ByReferenceTypeSignature)
{ {
method.CilMethodBody = new CilMethodBody(method); method.CilMethodBody = new CilMethodBody();
CilInstructionCollection instructions = method.CilMethodBody.Instructions; CilInstructionCollection instructions = method.CilMethodBody.Instructions;
instructions.Add(CilOpCodes.Ldnull); instructions.Add(CilOpCodes.Ldnull);
instructions.Add(CilOpCodes.Throw); instructions.Add(CilOpCodes.Throw);

View File

@ -76,7 +76,7 @@ public sealed class UnmanagedConstraintRecoveryProcessor : IAssetProcessor
{ {
if (!genericParameter.HasCustomAttribute("System.Runtime.CompilerServices", "IsUnmanagedAttribute")) if (!genericParameter.HasCustomAttribute("System.Runtime.CompilerServices", "IsUnmanagedAttribute"))
{ {
genericParameter.AddCustomAttribute(genericParameter.Module!.DefaultImporter.ImportMethod(constructor)); genericParameter.AddCustomAttribute(genericParameter.DeclaringModule!.DefaultImporter.ImportMethod(constructor));
} }
} }
} }

View File

@ -8,7 +8,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AssetRipper.CIL" Version="1.1.6" /> <PackageReference Include="AssetRipper.CIL" Version="1.2.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -7,7 +7,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AsmResolver.DotNet" Version="6.0.0-beta.3" /> <PackageReference Include="AsmResolver.DotNet" Version="6.0.0-beta.4" />
<PackageReference Include="AssetRipper.Primitives" Version="3.2.0" /> <PackageReference Include="AssetRipper.Primitives" Version="3.2.0" />
</ItemGroup> </ItemGroup>

View File

@ -4,7 +4,7 @@ public static class ResolutionExtensions
{ {
public static TypeDefinition CheckedResolve(this ITypeDescriptor reference) public static TypeDefinition CheckedResolve(this ITypeDescriptor reference)
{ {
if (reference.Module == null) if (reference.ContextModule == null)
{ {
throw new ResolutionException(reference); throw new ResolutionException(reference);
} }
@ -19,7 +19,7 @@ public static class ResolutionExtensions
public static MethodDefinition CheckedResolve(this IMethodDefOrRef reference) public static MethodDefinition CheckedResolve(this IMethodDefOrRef reference)
{ {
if (reference.Module == null) if (reference.ContextModule == null)
{ {
throw new ResolutionException(reference); throw new ResolutionException(reference);
} }

View File

@ -81,7 +81,7 @@ internal static class TypeDefinitionExtensions
public static bool TryGetPrimitiveType(this TypeDefinition typeDefinition, out PrimitiveType primitiveType) public static bool TryGetPrimitiveType(this TypeDefinition typeDefinition, out PrimitiveType primitiveType)
{ {
if ((typeDefinition.Module?.Assembly?.IsCorLib ?? false) && typeDefinition.ToTypeSignature() is CorLibTypeSignature corLibTypeSignature) if ((typeDefinition.DeclaringModule?.Assembly?.IsCorLib ?? false) && typeDefinition.ToTypeSignature() is CorLibTypeSignature corLibTypeSignature)
{ {
primitiveType = corLibTypeSignature.ToPrimitiveType(); primitiveType = corLibTypeSignature.ToPrimitiveType();
return primitiveType.IsCSharpPrimitive(); return primitiveType.IsCSharpPrimitive();