public override bool Execute()
{
AppDomain domain = null;
bool success;
try
{
AppDomainSetup info = new AppDomainSetup
{
ApplicationBase = BuildTaskPath,
LoaderOptimization = LoaderOptimization.MultiDomainHost,
ShadowCopyFiles = "true"
};
string friendlyName = "AntlrClassGenerationDomain_" + Guid.NewGuid();
domain = AppDomain.CreateDomain(friendlyName, AppDomain.CurrentDomain.Evidence, info, new NamedPermissionSet("FullTrust"), new StrongName[0]);
AntlrClassGenerationTaskInternal wrapper = CreateBuildTaskWrapper(domain);
success = wrapper.Execute();
if (success)
{
_generatedCodeFiles.AddRange(wrapper.GeneratedCodeFiles.Select(file => (ITaskItem)new TaskItem(file)));
}
foreach (BuildMessage message in wrapper.BuildMessages)
{
ProcessBuildMessage(message);
}
}
catch (Exception exception)
{
if (IsFatalException(exception))
throw;
ProcessExceptionAsBuildMessage(exception);
success = false;
}
finally
{
if (domain != null)
AppDomain.Unload(domain);
}
return success;
}