CompilerResults.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / CompMod / System / CodeDOM / Compiler / CompilerResults.cs / 1 / CompilerResults.cs

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

namespace System.CodeDom.Compiler { 
    using System; 
    using System.CodeDom;
    using System.Reflection; 
    using System.Collections;
    using System.Collections.Specialized;
    using System.Security;
    using System.Security.Permissions; 
    using System.Security.Policy;
    using System.Runtime.Serialization; 
    using System.Runtime.Serialization.Formatters.Binary; 
    using System.IO;
 

    /// 
    ///    
    ///       Represents the results 
    ///       of compilation from the compiler.
    ///     
    ///  
    [Serializable()]
    [PermissionSet(SecurityAction.InheritanceDemand, Name="FullTrust")] 
    public class CompilerResults {
        private CompilerErrorCollection errors = new CompilerErrorCollection();
        private StringCollection output = new StringCollection();
        private Assembly compiledAssembly; 
        private string pathToAssembly;
        private int nativeCompilerReturnValue; 
        private TempFileCollection tempFiles; 
        private Evidence evidence;
 
        /// 
        ///    
        ///       Initializes a new instance of 
        ///       that uses the specified 
        ///       temporary files.
        ///     
        ///  
        [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")]
        public CompilerResults(TempFileCollection tempFiles) { 
            this.tempFiles = tempFiles;
        }

        ///  
        ///    
        ///       Gets or sets the temporary files to use. 
        ///     
        /// 
        public TempFileCollection TempFiles { 
            [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")]
            get {
                return tempFiles;
            } 

            [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")] 
            set { 
                tempFiles = value;
            } 
        }

        /// 
        ///     
        ///       Set the evidence for partially trusted scenarios.
        ///     
        ///  
        public Evidence Evidence {
            [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")] 
            get {
                Evidence e = null;
                if (evidence != null)
                    e = CloneEvidence(evidence); 
                return e;
            } 
 
            [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")]
            [SecurityPermissionAttribute( SecurityAction.Demand, ControlEvidence = true )] 
            set {
                if (value != null)
                    evidence = CloneEvidence(value);
                else 
                    evidence = null;
            } 
        } 

        ///  
        ///    
        ///       The compiled assembly.
        ///    
        ///  
        public Assembly CompiledAssembly {
            [SecurityPermissionAttribute(SecurityAction.Assert, Flags=SecurityPermissionFlag.ControlEvidence)] 
            get { 
                if (compiledAssembly == null && pathToAssembly != null) {
                    AssemblyName assemName = new AssemblyName(); 
                    assemName.CodeBase = pathToAssembly;
                    compiledAssembly = Assembly.Load(assemName,evidence);
                }
                return compiledAssembly; 
            }
 
            [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")] 
            set {
                compiledAssembly = value; 
            }
        }

        ///  
        ///    
        ///       Gets or sets the collection of compiler errors. 
        ///     
        /// 
        public CompilerErrorCollection Errors { 
            get {
                return errors;
            }
        } 

        ///  
        ///     
        ///       Gets or sets the compiler output messages.
        ///     
        /// 
        public StringCollection Output {
            [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")]
            get { 
                return output;
            } 
        } 

        ///  
        ///    
        ///       Gets or sets the path to the assembly.
        ///    
        ///  
        public string PathToAssembly {
            [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")] 
            get { 
                return pathToAssembly;
            } 

            [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")]
            set {
                pathToAssembly = value; 
            }
        } 
 
        /// 
        ///     
        ///       Gets or sets the compiler's return value.
        ///    
        /// 
        public int NativeCompilerReturnValue { 
            get {
                return nativeCompilerReturnValue; 
            } 

            [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")] 
            set {
                nativeCompilerReturnValue = value;
            }
        } 

        internal static Evidence CloneEvidence(Evidence ev) { 
            new PermissionSet( PermissionState.Unrestricted ).Assert(); 

            MemoryStream stream = new MemoryStream(); 

            BinaryFormatter formatter = new BinaryFormatter();

            formatter.Serialize( stream, ev ); 

            stream.Position = 0; 
 
            return (Evidence)formatter.Deserialize( stream );
        } 
    }
}



                        

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