mirror of
				https://github.com/DerTyp7/defrain-shooter-unity.git
				synced 2025-11-03 22:58:59 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			32 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
// tests use WeaveAssembler, which uses AssemblyBuilder to Build().
 | 
						|
// afterwards ILPostProcessor weaves the build.
 | 
						|
// this works on windows, but build() does not run ILPP on mac atm.
 | 
						|
// we need to manually invoke ILPP with an assembly from file.
 | 
						|
//
 | 
						|
// this is in Weaver folder becuase CompilationPipeline can only be accessed
 | 
						|
// from assemblies with the name "Unity.*.CodeGen"
 | 
						|
using System.IO;
 | 
						|
using Unity.CompilationPipeline.Common.ILPostProcessing;
 | 
						|
 | 
						|
namespace Mirror.Weaver
 | 
						|
{
 | 
						|
    public class CompiledAssemblyFromFile : ICompiledAssembly
 | 
						|
    {
 | 
						|
        readonly string assemblyPath;
 | 
						|
 | 
						|
        public string Name => Path.GetFileNameWithoutExtension(assemblyPath);
 | 
						|
        public string[] References { get; set; }
 | 
						|
        public string[] Defines { get; set; }
 | 
						|
        public InMemoryAssembly InMemoryAssembly { get; }
 | 
						|
 | 
						|
        public CompiledAssemblyFromFile(string assemblyPath)
 | 
						|
        {
 | 
						|
            this.assemblyPath = assemblyPath;
 | 
						|
            byte[] peData = File.ReadAllBytes(assemblyPath);
 | 
						|
            string pdbFileName = Path.GetFileNameWithoutExtension(assemblyPath) + ".pdb";
 | 
						|
            byte[] pdbData = File.ReadAllBytes(Path.Combine(Path.GetDirectoryName(assemblyPath), pdbFileName));
 | 
						|
            InMemoryAssembly = new InMemoryAssembly(peData, pdbData);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |