diff --git a/BepInEx.AssemblyPublicizer/AssemblyPublicizer.cs b/BepInEx.AssemblyPublicizer/AssemblyPublicizer.cs
index 424efef..f697311 100644
--- a/BepInEx.AssemblyPublicizer/AssemblyPublicizer.cs
+++ b/BepInEx.AssemblyPublicizer/AssemblyPublicizer.cs
@@ -13,9 +13,14 @@ public static class AssemblyPublicizer
{
public static void Publicize(string assemblyPath, string outputPath, AssemblyPublicizerOptions? options = null)
{
- var assembly = FatalAsmResolver.FromFile(assemblyPath);
+ var assembly = FatalAsmResolver.FromFile(assemblyPath, createRuntimeContext: false);
var module = assembly.ManifestModule ?? throw new NullReferenceException();
- module.MetadataResolver = new DefaultMetadataResolver(NoopAssemblyResolver.Instance);
+
+ var context = new RuntimeContext(
+ module.OriginalTargetRuntime,
+ assemblyResolver: NullAssemblyResolver.Instance
+ );
+ context.AddAssembly(assembly);
Publicize(assembly, options);
module.FatalWrite(outputPath);
diff --git a/BepInEx.AssemblyPublicizer/BepInEx.AssemblyPublicizer.csproj b/BepInEx.AssemblyPublicizer/BepInEx.AssemblyPublicizer.csproj
index 2e02437..ab8b53e 100644
--- a/BepInEx.AssemblyPublicizer/BepInEx.AssemblyPublicizer.csproj
+++ b/BepInEx.AssemblyPublicizer/BepInEx.AssemblyPublicizer.csproj
@@ -10,7 +10,7 @@
-
+
diff --git a/BepInEx.AssemblyPublicizer/FatalAsmResolver.cs b/BepInEx.AssemblyPublicizer/FatalAsmResolver.cs
index 3afce03..0dce5ac 100644
--- a/BepInEx.AssemblyPublicizer/FatalAsmResolver.cs
+++ b/BepInEx.AssemblyPublicizer/FatalAsmResolver.cs
@@ -14,9 +14,13 @@ namespace BepInEx.AssemblyPublicizer;
internal static class FatalAsmResolver
{
/// Same as but throws only on fatal errors
- public static AssemblyDefinition FromFile(string filePath)
+ public static AssemblyDefinition FromFile(string filePath, bool createRuntimeContext)
{
- return AssemblyDefinition.FromImage(PEImage.FromFile(filePath), new ModuleReaderParameters(FatalThrowErrorListener.Instance));
+ return AssemblyDefinition.FromImage(
+ PEImage.FromFile(filePath),
+ new ModuleReaderParameters(FatalThrowErrorListener.Instance),
+ createRuntimeContext
+ );
}
private sealed class FatalThrowErrorListener : IErrorListener
diff --git a/BepInEx.AssemblyPublicizer/NoopAssemblyResolver.cs b/BepInEx.AssemblyPublicizer/NoopAssemblyResolver.cs
deleted file mode 100644
index 09b78da..0000000
--- a/BepInEx.AssemblyPublicizer/NoopAssemblyResolver.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using AsmResolver.DotNet;
-
-namespace BepInEx.AssemblyPublicizer;
-
-internal class NoopAssemblyResolver : IAssemblyResolver
-{
- internal static NoopAssemblyResolver Instance { get; } = new();
-
- public AssemblyDefinition? Resolve(AssemblyDescriptor assembly)
- {
- return null;
- }
-
- public void AddToCache(AssemblyDescriptor descriptor, AssemblyDefinition definition)
- {
- }
-
- public bool RemoveFromCache(AssemblyDescriptor descriptor)
- {
- return false;
- }
-
- public bool HasCached(AssemblyDescriptor descriptor)
- {
- return false;
- }
-
- public void ClearCache()
- {
- }
-}
diff --git a/BepInEx.AssemblyPublicizer/OriginalAttributesAttribute.cs b/BepInEx.AssemblyPublicizer/OriginalAttributesAttribute.cs
index 37b36b1..c49d08a 100644
--- a/BepInEx.AssemblyPublicizer/OriginalAttributesAttribute.cs
+++ b/BepInEx.AssemblyPublicizer/OriginalAttributesAttribute.cs
@@ -24,8 +24,8 @@ internal class OriginalAttributesAttribute
public OriginalAttributesAttribute(ModuleDefinition module)
{
var corLibScope = module.CorLibTypeFactory.CorLibScope;
- var attributeReference = corLibScope.CreateTypeReference("System", "Attribute").ImportWith(module.DefaultImporter);
- var baseConstructorReference = attributeReference.CreateMemberReference(".ctor", MethodSignature.CreateInstance(module.CorLibTypeFactory.Void)).ImportWith(module.DefaultImporter);
+ var attributeReference = corLibScope.CreateTypeReference("System", "Attribute");
+ var baseConstructorReference = attributeReference.CreateMemberReference(".ctor", MethodSignature.CreateInstance(module.CorLibTypeFactory.Void));
Type = new TypeDefinition(
"BepInEx.AssemblyPublicizer", "OriginalAttributesAttribute",
@@ -36,11 +36,11 @@ public OriginalAttributesAttribute(ModuleDefinition module)
foreach (var pair in _typeNames)
{
- var attributesType = _attributesTypes[pair.Key] = corLibScope.CreateTypeReference("System.Reflection", pair.Value).ImportWith(module.DefaultImporter).ToTypeSignature();
+ var attributesType = _attributesTypes[pair.Key] = corLibScope.CreateTypeReference("System.Reflection", pair.Value).ToTypeSignature(isValueType: true);
var constructorDefinition = new MethodDefinition(".ctor",
MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RuntimeSpecialName | MethodAttributes.Public,
- MethodSignature.CreateInstance(module.CorLibTypeFactory.Void, attributesType)
+ MethodSignature.CreateInstance(module.CorLibTypeFactory.Void, [attributesType])
);
Type.Methods.Add(constructorDefinition);