CompilationPass2Task.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / XamlBuildTask / Microsoft / Build / Tasks / Xaml / CompilationPass2Task.cs / 1305376 / CompilationPass2Task.cs

                            //------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------

namespace Microsoft.Build.Tasks.Xaml 
{
    using System; 
    using System.Collections.Generic; 
    using Microsoft.Build.Framework;
    using Microsoft.Build.Utilities; 
    using System.Reflection;
    using System.Runtime;

    [Fx.Tag.XamlVisible(true)] 
    public class CompilationPass2Task : Task
    { 
        public CompilationPass2Task() 
        {
        } 

        [Fx.Tag.KnownXamlExternal]
        public ITaskItem[] ApplicationMarkup { get; set; }
 
        public string AssemblyName
        { get; set; } 
 
        [Fx.Tag.KnownXamlExternal]
        public ITaskItem[] References { get; set; } 

        public string LocalAssemblyReference
        { get; set; }
 
        public string RootNamespace
        { get; set; } 
 
        public string BuildTaskPath
        { get; set; } 

        public override bool Execute()
        {
            AppDomain appDomain = null; 

            try 
            { 
                appDomain = XamlBuildTaskServices.CreateAppDomain("CompilationPass2AppDomain_" + Guid.NewGuid(), BuildTaskPath);
 
                CompilationPass2TaskInternal wrapper = (CompilationPass2TaskInternal)appDomain.CreateInstanceAndUnwrap(
                    Assembly.GetExecutingAssembly().FullName,
                    typeof(CompilationPass2TaskInternal).FullName);
 
                PopulateBuildArtifacts(wrapper);
 
                bool ret = wrapper.Execute(); 

                if (!ret) 
                {
                    foreach (LogData logData in wrapper.LogData)
                    {
                        XamlBuildTaskServices.LogException( 
                            this,
                            logData.Message, 
                            logData.FileName, 
                            logData.LineNumber,
                            logData.LinePosition); 
                    }
                }

                return ret; 
            }
            catch (Exception e) 
            { 
                if (Fx.IsFatal(e))
                { 
                    throw;
                }

                XamlBuildTaskServices.LogException(this, e.Message); 
                return false;
            } 
            finally 
            {
                if (appDomain != null) 
                {
                    AppDomain.Unload(appDomain);
                }
            } 
        }
 
        void PopulateBuildArtifacts(CompilationPass2TaskInternal wrapper) 
        {
            IList applicationMarkup = new List(this.ApplicationMarkup.Length); 
            foreach (ITaskItem taskItem in this.ApplicationMarkup)
            {
                applicationMarkup.Add(taskItem.ItemSpec);
            } 
            wrapper.ApplicationMarkup = applicationMarkup;
 
            IList references = new List(this.References.Length); 
            foreach (ITaskItem reference in this.References)
            { 
                references.Add(reference.ItemSpec);
            }
            wrapper.References = references;
 
            wrapper.LocalAssemblyReference = this.LocalAssemblyReference;
 
            wrapper.AssemblyName = this.AssemblyName; 

            wrapper.RootNamespace = this.RootNamespace; 
        }
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------

namespace Microsoft.Build.Tasks.Xaml 
{
    using System; 
    using System.Collections.Generic; 
    using Microsoft.Build.Framework;
    using Microsoft.Build.Utilities; 
    using System.Reflection;
    using System.Runtime;

    [Fx.Tag.XamlVisible(true)] 
    public class CompilationPass2Task : Task
    { 
        public CompilationPass2Task() 
        {
        } 

        [Fx.Tag.KnownXamlExternal]
        public ITaskItem[] ApplicationMarkup { get; set; }
 
        public string AssemblyName
        { get; set; } 
 
        [Fx.Tag.KnownXamlExternal]
        public ITaskItem[] References { get; set; } 

        public string LocalAssemblyReference
        { get; set; }
 
        public string RootNamespace
        { get; set; } 
 
        public string BuildTaskPath
        { get; set; } 

        public override bool Execute()
        {
            AppDomain appDomain = null; 

            try 
            { 
                appDomain = XamlBuildTaskServices.CreateAppDomain("CompilationPass2AppDomain_" + Guid.NewGuid(), BuildTaskPath);
 
                CompilationPass2TaskInternal wrapper = (CompilationPass2TaskInternal)appDomain.CreateInstanceAndUnwrap(
                    Assembly.GetExecutingAssembly().FullName,
                    typeof(CompilationPass2TaskInternal).FullName);
 
                PopulateBuildArtifacts(wrapper);
 
                bool ret = wrapper.Execute(); 

                if (!ret) 
                {
                    foreach (LogData logData in wrapper.LogData)
                    {
                        XamlBuildTaskServices.LogException( 
                            this,
                            logData.Message, 
                            logData.FileName, 
                            logData.LineNumber,
                            logData.LinePosition); 
                    }
                }

                return ret; 
            }
            catch (Exception e) 
            { 
                if (Fx.IsFatal(e))
                { 
                    throw;
                }

                XamlBuildTaskServices.LogException(this, e.Message); 
                return false;
            } 
            finally 
            {
                if (appDomain != null) 
                {
                    AppDomain.Unload(appDomain);
                }
            } 
        }
 
        void PopulateBuildArtifacts(CompilationPass2TaskInternal wrapper) 
        {
            IList applicationMarkup = new List(this.ApplicationMarkup.Length); 
            foreach (ITaskItem taskItem in this.ApplicationMarkup)
            {
                applicationMarkup.Add(taskItem.ItemSpec);
            } 
            wrapper.ApplicationMarkup = applicationMarkup;
 
            IList references = new List(this.References.Length); 
            foreach (ITaskItem reference in this.References)
            { 
                references.Add(reference.ItemSpec);
            }
            wrapper.References = references;
 
            wrapper.LocalAssemblyReference = this.LocalAssemblyReference;
 
            wrapper.AssemblyName = this.AssemblyName; 

            wrapper.RootNamespace = this.RootNamespace; 
        }
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK