67 lines
2.8 KiB
C#
67 lines
2.8 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
AppDomain.CurrentDomain.AssemblyResolve += (sender, resolveArgs) =>
|
|
{
|
|
var name = new AssemblyName(resolveArgs.Name).Name;
|
|
var searchDirs = new[]
|
|
{
|
|
@"d:\JDRelated\JD22SRC_Build\main\build\sharpmake\Tools\Helpers",
|
|
@"d:\JDRelated\JD22SRC_Build\main\build\sharpmake\sharpmake_1.8.0",
|
|
@"d:\JDRelated\JD22SRC_Build\main\build\sharpmake",
|
|
};
|
|
|
|
foreach (var dir in searchDirs)
|
|
{
|
|
var candidate = Path.Combine(dir, name + ".dll");
|
|
if (File.Exists(candidate))
|
|
{
|
|
return Assembly.LoadFrom(candidate);
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
|
|
Directory.SetCurrentDirectory(@"d:\JDRelated\JD22SRC_Build\main");
|
|
|
|
var asmSharpmake = Assembly.LoadFrom(@"d:\JDRelated\JD22SRC_Build\main\build\sharpmake\sharpmake_1.8.0\Sharpmake.dll");
|
|
var asmApp = Assembly.LoadFrom(@"d:\JDRelated\JD22SRC_Build\main\build\sharpmake\sharpmake_1.8.0\Sharpmake.Application.dll");
|
|
|
|
var genAllType = asmSharpmake.GetType("Sharpmake.BuildContext.GenerateAll");
|
|
// writeLog = true, writeGeneratedFiles = true!
|
|
var buildContext = Activator.CreateInstance(genAllType, new object[] { true, true });
|
|
|
|
var argType = asmApp.GetType("Sharpmake.Application.Program+Argument");
|
|
var inputType = asmApp.GetType("Sharpmake.Application.Program+Argument+InputType");
|
|
var arguments = Activator.CreateInstance(argType);
|
|
|
|
var fieldInput = argType.GetField("Input", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
|
|
var fieldSources = argType.GetField("Sources", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
|
|
|
|
fieldSources.SetValue(arguments, new string[] { @"d:\JDRelated\JD22SRC_Build\main\build\sharpmake\main.cs" });
|
|
fieldInput.SetValue(arguments, Enum.Parse(inputType, "File"));
|
|
|
|
var progType = asmApp.GetType("Sharpmake.Application.Program");
|
|
var createBuilderAndGenMethod = progType.GetMethod("CreateBuilderAndGenerate", BindingFlags.NonPublic | BindingFlags.Static);
|
|
|
|
Console.WriteLine("Invoking CreateBuilderAndGenerate (with writeGeneratedFiles=true)...");
|
|
try
|
|
{
|
|
createBuilderAndGenMethod.Invoke(null, new object[] { buildContext, arguments, false });
|
|
Console.WriteLine("Done successfully!");
|
|
}
|
|
catch (TargetInvocationException ex)
|
|
{
|
|
Console.WriteLine("TargetInvocationException: " + ex.InnerException);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine("Exception: " + ex);
|
|
}
|
|
}
|
|
}
|