public void DoLoad() { engine = new Engine(); string pth = Path.Combine(framework.FrameworkDirectory.FullName, "Microsoft.Build.Engine.dll"); if (File.Exists(pth)) { engine._a = Assembly.LoadFile(pth); } else { //frameworks 3.0 and 3.5 do not copy its assemblies into filesystem. They reside just in assembly cache (GAC) //Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a AssemblyName an = new AssemblyName("Microsoft.Build.Engine"); an.Version = new Version(framework.Version.Major, framework.Version.Minor, 0, 0); an.CultureInfo = System.Globalization.CultureInfo.InvariantCulture; an.SetPublicKeyToken(new byte[] { 0xb0, 0x3f, 0x5f, 0x7f, 0x11, 0xd5, 0x0a, 0x3a }); engine._a = Assembly.Load(an); //load from GAC } engine._t = engine._a.GetType("Microsoft.Build.BuildEngine.Engine"); engine._obj = Activator.CreateInstance(engine._t); //2.0 if (engine._a.GetName().Version.Major == 2) { engine._t.GetProperty("BinPath").SetValue(engine._obj, framework.FrameworkDirectory.FullName, null); } }
public Project(Engine engine) { _t = engine.Assembly.GetType("Microsoft.Build.BuildEngine.Project"); _obj = Activator.CreateInstance(_t, engine.Object); }