Skip to content

Commit 97dbdda

Browse files
authored
Add custom assembly to generate classes (#9)
* move samples into Package/Samples~ * able to generate classes into custom assembly.
1 parent b6118cd commit 97dbdda

File tree

75 files changed

+701
-35
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+701
-35
lines changed

Assets/_

Whitespace-only changes.

Assets/_.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Packages/generic-serialize-reference/Editor/AssemblyCSharpPostProcessor.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,38 @@
22
using System.Collections.Generic;
33
using System.IO;
44
using System.Linq;
5-
using JetBrains.Annotations;
65
using Mono.Cecil;
76
using Mono.Cecil.Cil;
87
using Mono.Cecil.Rocks;
98
using Unity.CompilationPipeline.Common.Diagnostics;
109
using Unity.CompilationPipeline.Common.ILPostProcessing;
11-
using UnityEngine;
1210

1311
namespace GenericSerializeReference
1412
{
1513
public class AssemblyCSharpPostProcessor : ILPostProcessor
1614
{
15+
private const string _overrideAssemblyCSharp = "GenericSerializeReference.OverrideAssemblyCSharp";
16+
1717
public override ILPostProcessor GetInstance()
1818
{
1919
return this;
2020
}
2121

2222
public override bool WillProcess(ICompiledAssembly compiledAssembly)
2323
{
24-
return compiledAssembly.Name == "Assembly-CSharp";
24+
if (compiledAssembly.Name == _overrideAssemblyCSharp) return true;
25+
var overrideDll = $"{_overrideAssemblyCSharp}.dll";
26+
var hasOverride = compiledAssembly.References.Any(@ref => @ref.EndsWith(overrideDll));
27+
return compiledAssembly.Name == "Assembly-CSharp" && !hasOverride;
2528
}
2629

2730
public override ILPostProcessResult Process(ICompiledAssembly compiledAssembly)
2831
{
29-
var logger = new ILPostProcessorLogger(new List<DiagnosticMessage>());
3032
using var resolver = new PostProcessorAssemblyResolver(compiledAssembly.References);
3133
using var assembly = compiledAssembly.LoadAssembly(resolver);
3234
var referenceAssemblies = compiledAssembly.LoadLibraryAssemblies(resolver).ToArray();
35+
var logger = assembly.CreateLogger();
36+
logger.Info($"process GenericSerializeReference.AssemblyCSharp on {assembly.Name.Name}({string.Join(",", compiledAssembly.References.Where(r => r.StartsWith("Library")))})");
3337

3438
try
3539
{
@@ -93,14 +97,13 @@ where IsAssemblyCSharpMode(attribute)
9397
var generated = CreateDerived(wrapper, derived, baseInterface);
9498
if (generated != null)
9599
{
100+
logger.Debug($"generate {derived.FullName}");
96101
wrapper.NestedTypes.Add(generated);
97102
modified = true;
98103
}
99104
}
100105
}
101106
module.Types.Add(wrapper);
102-
103-
modified = true;
104107
}
105108
return modified;
106109

File renamed without changes.

Assets/Sample/Library/Implement/GenericSerializeReference.Sample.Library.Implement.asmdef renamed to Packages/generic-serialize-reference/Samples~/AssemblyCSharp/AutoReferenced/GenericSerializeReference.Sample.AssemblyCSharp.Referenced.asmdef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "GenericSerializeReference.Sample.Library.Implement",
2+
"name": "GenericSerializeReference.Sample.AssemblyCSharp.Referenced",
33
"rootNamespace": "",
44
"references": [
55
"GUID:bb7127c6ea4789d41b77cdef13d93652"
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)