public override bool Execute() { AppDomain appDomain = null; try { ValidateRequiredDev11Properties(); appDomain = XamlBuildTaskServices.CreateAppDomain("CompilationPass2AppDomain_" + Guid.NewGuid(), BuildTaskPath); CompilationPass2TaskInternal wrapper = (CompilationPass2TaskInternal)appDomain.CreateInstanceAndUnwrap( Assembly.GetExecutingAssembly().FullName, typeof(CompilationPass2TaskInternal).FullName); PopulateBuildArtifacts(wrapper); bool ret = wrapper.Execute(); ExtractBuiltArtifacts(wrapper); if (!ret) { foreach (LogData logData in wrapper.LogData) { XamlBuildTaskServices.LogException( this.Log, logData.Message, logData.FileName, logData.LineNumber, logData.LinePosition); } } return(ret); } catch (Exception e) { if (Fx.IsFatal(e)) { throw; } XamlBuildTaskServices.LogException(this.Log, e.Message); return(false); } finally { if (appDomain != null) { AppDomain.Unload(appDomain); } } }
AppDomain CreateNewAppDomain() { return(XamlBuildTaskServices.CreateAppDomain("PartialClassAppDomain_" + Guid.NewGuid(), BuildTaskPath)); }