fix: IL扫描忘记判断特性头了

This commit is contained in:
cneicy committed 2026-03-09 19:07:58 +08:00
1 parent 93bd33c59b
commit 8c6c464ae1
2 files changed
+39 -4

No files matched your search

+38 -3
View File
@@ -32,7 +32,31 @@ namespace ShrinkEventBus.CodeGen
var assemblyDefinition = AssemblyDefinitionFor(compiledAssembly);
var mainModule = assemblyDefinition.MainModule;
ImportReferences(mainModule);
bool needWeaving = false;
foreach (var type in mainModule.Types)
{
if (HasAttribute(type, "EventBusSubscriberAttribute") && InheritsFromMonoBehaviour(type))
{
needWeaving = true;
break;
}
}
if (!needWeaving) return null;
try
{
ImportReferences(mainModule);
}
catch (System.Exception ex)
{
_diagnostics.Add(new DiagnosticMessage
{
DiagnosticType = DiagnosticType.Error,
MessageData = $"[ShrinkEventBus] ILPostProcessor Error: {ex.Message}"
});
return GetResult(assemblyDefinition, _diagnostics);
}
foreach (var type in mainModule.Types)
{
@@ -172,7 +196,16 @@ namespace ShrinkEventBus.CodeGen
private void ImportReferences(ModuleDefinition module)
{
var runtimeModule = FindRuntimeModule(module);
var eventBusType = runtimeModule.GetAllTypes().First(t => t.Name == "EventBus");
if (runtimeModule == null)
{
throw new System.Exception("Cannot find ShrinkEventBus.Runtime module in assembly references.");
}
var eventBusType = runtimeModule.GetAllTypes().FirstOrDefault(t => t.Name == "EventBus");
if (eventBusType == null)
{
throw new System.Exception("Cannot find EventBus class in ShrinkEventBus.Runtime.");
}
_autoRegisterMethodRef = module.ImportReference(
eventBusType.Methods.First(m => m.Name == "AutoRegister"));
@@ -190,9 +223,11 @@ namespace ShrinkEventBus.CodeGen
private void SearchRecursive(AssemblyDefinition asm, ref ModuleDefinition found, HashSet<string> visited)
{
if (asm == null) return;
foreach (var mod in asm.Modules)
{
if (mod.Name == "ShrinkEventBus.Runtime.dll")
if (mod.Name == "ShrinkEventBus.Runtime.dll" || mod.Name == "ShrinkEventBus.Runtime")
{
found = mod;
return;
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "com.cneicy.shrink-eventbus",
"version": "1.1.3",
"version": "1.1.4",
"displayName": "ShrinkEventBus",
"description": "高性能、类型安全的 Unity 事件总线,支持优先级调度与自动注册。",
"unity": "2022.3",