diff --git a/Source/AssetRipper.Import/AssetRipper.Import.csproj b/Source/AssetRipper.Import/AssetRipper.Import.csproj index e6ca64b48..26a7a9daa 100644 --- a/Source/AssetRipper.Import/AssetRipper.Import.csproj +++ b/Source/AssetRipper.Import/AssetRipper.Import.csproj @@ -8,12 +8,12 @@ - + - + diff --git a/Source/AssetRipper.Import/Structure/Assembly/Managers/BaseManager.cs b/Source/AssetRipper.Import/Structure/Assembly/Managers/BaseManager.cs index 323abaa8d..fc65a092c 100644 --- a/Source/AssetRipper.Import/Structure/Assembly/Managers/BaseManager.cs +++ b/Source/AssetRipper.Import/Structure/Assembly/Managers/BaseManager.cs @@ -43,10 +43,7 @@ public partial class BaseManager : IAssemblyManager AssemblyDefinition assembly; try { - MemoryStream memoryStream = new(); - stream.CopyTo(memoryStream); - assembly = AssemblyDefinition.FromBytes(memoryStream.ToArray()); - //assembly = AssemblyDefinition.FromStream(stream); + assembly = AssemblyDefinition.FromStream(stream); } catch (BadImageFormatException badImageFormatException) { @@ -95,16 +92,13 @@ public partial class BaseManager : IAssemblyManager public virtual void Read(Stream stream, string fileName) { - MemoryStream memoryStream = new(); - stream.CopyTo(memoryStream); - AssemblyDefinition assembly = AssemblyDefinition.FromBytes(memoryStream.ToArray()); - //AssemblyDefinition assembly = AssemblyDefinition.FromStream(stream);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + AssemblyDefinition assembly = AssemblyDefinition.FromStream(stream); assembly.InitializeResolvers(this); fileName = Path.GetFileNameWithoutExtension(fileName); string assemblyName = ToAssemblyName(assembly); m_assemblies.Add(fileName, assembly); m_assemblies[assemblyName] = assembly; - m_assemblyStreams.Add(assembly, memoryStream); + m_assemblyStreams.Add(assembly, stream); } public virtual void Unload(string fileName) diff --git a/Source/AssetRipper.Import/Structure/Assembly/Managers/MonoManager.cs b/Source/AssetRipper.Import/Structure/Assembly/Managers/MonoManager.cs index 2b0003832..3821af972 100644 --- a/Source/AssetRipper.Import/Structure/Assembly/Managers/MonoManager.cs +++ b/Source/AssetRipper.Import/Structure/Assembly/Managers/MonoManager.cs @@ -19,11 +19,8 @@ public sealed class MonoManager : BaseManager { try { - // Needs FromStream using Stream stream = gameStructure.FileSystem.File.OpenRead(assemblyPath); - using MemoryStream memoryStream = new(); - stream.CopyTo(memoryStream); - PEFile peFile = PEFile.FromBytes(memoryStream.ToArray()); + PEFile peFile = PEFile.FromStream(stream); if (!peFile.OptionalHeader.GetDataDirectory(DataDirectoryIndex.ClrDirectory).IsPresentInPE) { Logger.Info(LogCategory.Import, $"Skipping native assembly: {assemblyName}"); diff --git a/Source/AssetRipper.Import/Structure/GameStructure.cs b/Source/AssetRipper.Import/Structure/GameStructure.cs index aa40f0075..8c2af0615 100644 --- a/Source/AssetRipper.Import/Structure/GameStructure.cs +++ b/Source/AssetRipper.Import/Structure/GameStructure.cs @@ -144,7 +144,7 @@ public sealed class GameStructure : IDisposable if (resFile is not null) { resFile.Stream.Position = 0; - AssemblyManager.Read(resFile.Stream, assemblyName); + AssemblyManager.Read(resFile.Stream.CreateReference(), assemblyName); } else { diff --git a/Source/AssetRipper.Processing/Assemblies/NullRefReturnProcessor.cs b/Source/AssetRipper.Processing/Assemblies/NullRefReturnProcessor.cs index af765a742..f43892bde 100644 --- a/Source/AssetRipper.Processing/Assemblies/NullRefReturnProcessor.cs +++ b/Source/AssetRipper.Processing/Assemblies/NullRefReturnProcessor.cs @@ -32,7 +32,7 @@ public sealed class NullRefReturnProcessor(ScriptContentLevel scriptContentLevel { if (method.Signature?.ReturnType is ByReferenceTypeSignature) { - method.CilMethodBody = new CilMethodBody(method); + method.CilMethodBody = new CilMethodBody(); CilInstructionCollection instructions = method.CilMethodBody.Instructions; instructions.Add(CilOpCodes.Ldnull); instructions.Add(CilOpCodes.Throw); diff --git a/Source/AssetRipper.Processing/Assemblies/UnmanagedConstraintRecoveryProcessor.cs b/Source/AssetRipper.Processing/Assemblies/UnmanagedConstraintRecoveryProcessor.cs index b9c784e2c..20d1108bb 100644 --- a/Source/AssetRipper.Processing/Assemblies/UnmanagedConstraintRecoveryProcessor.cs +++ b/Source/AssetRipper.Processing/Assemblies/UnmanagedConstraintRecoveryProcessor.cs @@ -76,7 +76,7 @@ public sealed class UnmanagedConstraintRecoveryProcessor : IAssetProcessor { if (!genericParameter.HasCustomAttribute("System.Runtime.CompilerServices", "IsUnmanagedAttribute")) { - genericParameter.AddCustomAttribute(genericParameter.Module!.DefaultImporter.ImportMethod(constructor)); + genericParameter.AddCustomAttribute(genericParameter.DeclaringModule!.DefaultImporter.ImportMethod(constructor)); } } } diff --git a/Source/AssetRipper.Processing/AssetRipper.Processing.csproj b/Source/AssetRipper.Processing/AssetRipper.Processing.csproj index 636ebe418..c3ede491f 100644 --- a/Source/AssetRipper.Processing/AssetRipper.Processing.csproj +++ b/Source/AssetRipper.Processing/AssetRipper.Processing.csproj @@ -8,7 +8,7 @@ - + diff --git a/Source/AssetRipper.SerializationLogic/AssetRipper.SerializationLogic.csproj b/Source/AssetRipper.SerializationLogic/AssetRipper.SerializationLogic.csproj index b1e14c25e..a03a86064 100644 --- a/Source/AssetRipper.SerializationLogic/AssetRipper.SerializationLogic.csproj +++ b/Source/AssetRipper.SerializationLogic/AssetRipper.SerializationLogic.csproj @@ -7,7 +7,7 @@ - + diff --git a/Source/AssetRipper.SerializationLogic/Extensions/ResolutionExtensions.cs b/Source/AssetRipper.SerializationLogic/Extensions/ResolutionExtensions.cs index aa9da8c8b..aad771434 100644 --- a/Source/AssetRipper.SerializationLogic/Extensions/ResolutionExtensions.cs +++ b/Source/AssetRipper.SerializationLogic/Extensions/ResolutionExtensions.cs @@ -4,7 +4,7 @@ public static class ResolutionExtensions { public static TypeDefinition CheckedResolve(this ITypeDescriptor reference) { - if (reference.Module == null) + if (reference.ContextModule == null) { throw new ResolutionException(reference); } @@ -19,7 +19,7 @@ public static class ResolutionExtensions public static MethodDefinition CheckedResolve(this IMethodDefOrRef reference) { - if (reference.Module == null) + if (reference.ContextModule == null) { throw new ResolutionException(reference); } diff --git a/Source/AssetRipper.SerializationLogic/Extensions/TypeDefinitionExtensions.cs b/Source/AssetRipper.SerializationLogic/Extensions/TypeDefinitionExtensions.cs index 847ed8a27..4dac7e5e1 100644 --- a/Source/AssetRipper.SerializationLogic/Extensions/TypeDefinitionExtensions.cs +++ b/Source/AssetRipper.SerializationLogic/Extensions/TypeDefinitionExtensions.cs @@ -81,7 +81,7 @@ internal static class TypeDefinitionExtensions 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(); return primitiveType.IsCSharpPrimitive();