CSharpCodeProvider Класс

Определение

Предоставляет доступ к экземплярам генератора и компилятора кода C#.Provides access to instances of the C# code generator and code compiler.

public ref class CSharpCodeProvider : System::CodeDom::Compiler::CodeDomProvider
public class CSharpCodeProvider : System.CodeDom.Compiler.CodeDomProvider
type CSharpCodeProvider = class
    inherit CodeDomProvider
Public Class CSharpCodeProvider
Inherits CodeDomProvider
Наследование

Примеры

В следующем примере используется поставщик кода C# или Visual Basic для компиляции исходного файла.The following example uses either the C# or Visual Basic code provider to compile a source file. В примере проверяется расширение входного файла и используется соответствующий CSharpCodeProvider или VBCodeProvider для компиляции.The example checks the input file extension and uses the corresponding CSharpCodeProvider or VBCodeProvider for compilation. Входной файл компилируется в исполняемый файл, и на консоль выводятся все ошибки компиляции.The input file is compiled into an executable file, and any compilation errors are displayed to the console.

using System;
using System.IO;
using System.Globalization;
using System.CodeDom.Compiler;
using System.Text;
using Microsoft.CSharp;
using Microsoft.VisualBasic;

namespace CodeProviders
{
    class CompileSample
    {
        [STAThread]
        static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                //  First parameter is the source file name.
                if (File.Exists(args[0]))
                {
                    CompileExecutable(args[0]);
                }
                else 
                {
                    Console.WriteLine("Input source file not found - {0}",
                        args[0]);
                }
            }
            else 
            {
                Console.WriteLine("Input source file not specified on command line!");
            }
        }

        public static bool CompileExecutable(String sourceName)
        {
            FileInfo sourceFile = new FileInfo(sourceName);
            CodeDomProvider provider = null;
            bool compileOk = false;

            // Select the code provider based on the input file extension.
            if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".CS")
            {
                provider = CodeDomProvider.CreateProvider("CSharp");
            }
            else if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".VB")
            {
                provider = CodeDomProvider.CreateProvider("VisualBasic");
            }
            else 
            {
                Console.WriteLine("Source file must have a .cs or .vb extension");
            }

            if (provider != null)
            {

                // Format the executable file name.
                // Build the output assembly path using the current directory
                // and <source>_cs.exe or <source>_vb.exe.
 
                String exeName = String.Format(@"{0}\{1}.exe", 
                    System.Environment.CurrentDirectory, 
                    sourceFile.Name.Replace(".", "_"));

                CompilerParameters cp = new CompilerParameters();

                // Generate an executable instead of 
                // a class library.
                cp.GenerateExecutable = true;

                // Specify the assembly file name to generate.
                cp.OutputAssembly = exeName;
    
                // Save the assembly as a physical file.
                cp.GenerateInMemory = false;
    
                // Set whether to treat all warnings as errors.
                cp.TreatWarningsAsErrors = false;
 
                // Invoke compilation of the source file.
                CompilerResults cr = provider.CompileAssemblyFromFile(cp, 
                    sourceName);
    
                if(cr.Errors.Count > 0)
                {
                    // Display compilation errors.
                    Console.WriteLine("Errors building {0} into {1}",  
                        sourceName, cr.PathToAssembly);
                    foreach(CompilerError ce in cr.Errors)
                    {
                        Console.WriteLine("  {0}", ce.ToString());
                        Console.WriteLine();
                    }
                }
                else
                {
                    // Display a successful compilation message.
                    Console.WriteLine("Source {0} built into {1} successfully.",
                        sourceName, cr.PathToAssembly);
                }
              
                // Return the results of the compilation.
                if (cr.Errors.Count > 0)
                {
                    compileOk = false;
                }
                else 
                {
                    compileOk = true;
                }
            }
            return compileOk;
        }
    }
}
Imports System.IO
Imports System.Globalization
Imports System.CodeDom.Compiler
Imports System.Text
Imports Microsoft.CSharp

Namespace CodeProviders
    Class CompileSample
        <STAThread()>  _
        Public Shared Sub Main(args() As String)

            If args.Length > 0
                ' First parameter is the source file name.
                If File.Exists(args(0))
                    CompileExecutable(args(0))
                Else 
                    Console.WriteLine("Input source file not found - {0}", _
                        args(0))
                End If
            
            Else
                Console.WriteLine("Input source file not specified on command line!")
            End If
        End Sub

        Public Shared Function CompileExecutable(sourceName As String) As Boolean
            Dim sourceFile As FileInfo = New FileInfo(sourceName)
            Dim provider As CodeDomProvider = Nothing
            Dim compileOk As Boolean = False

            ' Select the code provider based on the input file extension.
            If sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) = ".CS"

                provider = CodeDomProvider.CreateProvider("CSharp")

            ElseIf sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) = ".VB"

                provider = CodeDomProvider.CreateProvider("VisualBasic")

            Else
                Console.WriteLine("Source file must have a .cs or .vb extension")
            End If

            If Not provider Is Nothing

                ' Format the executable file name.
                ' Build the output assembly path using the current directory
                ' and <source>_cs.exe or <source>_vb.exe.

                Dim exeName As String = String.Format("{0}\{1}.exe", _
                    System.Environment.CurrentDirectory, _
                    sourceFile.Name.Replace(".", "_"))

                Dim cp As CompilerParameters = new CompilerParameters()

                ' Generate an executable instead of 
                ' a class library.
                cp.GenerateExecutable = True

                ' Specify the assembly file name to generate.
                cp.OutputAssembly = exeName
    
                ' Save the assembly as a physical file.
                cp.GenerateInMemory = False
    
                ' Set whether to treat all warnings as errors.
                cp.TreatWarningsAsErrors = False
 
                ' Invoke compilation of the source file.
                Dim cr As CompilerResults = provider.CompileAssemblyFromFile(cp, _
                    sourceName)
    
                If cr.Errors.Count > 0
                    ' Display compilation errors.
                    Console.WriteLine("Errors building {0} into {1}", _
                        sourceName, cr.PathToAssembly)

                    Dim ce As CompilerError
                    For Each ce In cr.Errors
                        Console.WriteLine("  {0}", ce.ToString())
                        Console.WriteLine()
                    Next ce
                Else
                    ' Display a successful compilation message.
                    Console.WriteLine("Source {0} built into {1} successfully.", _
                        sourceName, cr.PathToAssembly)
                End If
              
                ' Return the results of the compilation.
                If cr.Errors.Count > 0
                    compileOk = False
                Else 
                    compileOk = True
                End If
            End If
            return compileOk

        End Function
    End Class
End Namespace

Комментарии

Этот класс предоставляет методы, которые можно использовать для получения экземпляров C# ICodeGenerator реализаций и ICodeCompiler .This class provides methods that can be used to retrieve instances of the C# ICodeGenerator and ICodeCompiler implementations.

Примечание

Этот класс содержит требования связывания и наследования на уровне класса, которые применяются ко всем элементам.This class contains a link demand and an inheritance demand at the class level that applies to all members. Если непосредственно вызывающий оператор или производный класс не имеет разрешения полного доверия, возникает исключение SecurityException.A SecurityException is thrown when either the immediate caller or the derived class does not have full-trust permission.

Конструкторы

CSharpCodeProvider()

Инициализирует новый экземпляр класса CSharpCodeProvider.Initializes a new instance of the CSharpCodeProvider class.

CSharpCodeProvider(IDictionary<String,String>)

Инициализирует новый экземпляр класса CSharpCodeProvider с помощью указанных параметров поставщика.Initializes a new instance of the CSharpCodeProvider class by using the specified provider options.

Свойства

CanRaiseEvents

Возвращает значение, показывающее, может ли компонент вызывать событие.Gets a value indicating whether the component can raise an event.

(Унаследовано от Component)
Container

Возвращает контейнер IContainer, содержащий компонент Component.Gets the IContainer that contains the Component.

(Унаследовано от Component)
DesignMode

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.Gets a value that indicates whether the Component is currently in design mode.

(Унаследовано от Component)
Events

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.Gets the list of event handlers that are attached to this Component.

(Унаследовано от Component)
FileExtension

Получает расширение имени файла, используемое при создании файлов исходного кода.Gets the file name extension to use when creating source code files.

LanguageOptions

Получает идентификатор особенностей языка.Gets a language features identifier.

(Унаследовано от CodeDomProvider)
Site

Возвращает или задает ISite объекта Component.Gets or sets the ISite of the Component.

(Унаследовано от Component)

Методы

CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[])

Компилирует сборку на основе деревьев System.CodeDom, содержащихся в указанном массиве объектов CodeCompileUnit, используя указанные параметры компилятора.Compiles an assembly based on the System.CodeDom trees contained in the specified array of CodeCompileUnit objects, using the specified compiler settings.

(Унаследовано от CodeDomProvider)
CompileAssemblyFromFile(CompilerParameters, String[])

Компилирует сборку из исходного кода, содержащегося в указанных файлах, используя указанные параметры компилятора.Compiles an assembly from the source code contained in the specified files, using the specified compiler settings.

(Унаследовано от CodeDomProvider)
CompileAssemblyFromSource(CompilerParameters, String[])

Компилирует сборку из указанного массива строк, содержащего исходный код, используя указанные параметры компилятора.Compiles an assembly from the specified array of strings containing source code, using the specified compiler settings.

(Унаследовано от CodeDomProvider)
CreateCompiler()

Получает экземпляр компилятора кода C#.Gets an instance of the C# code compiler.

CreateEscapedIdentifier(String)

Создает Escape-идентификатор для заданного значения.Creates an escaped identifier for the specified value.

(Унаследовано от CodeDomProvider)
CreateGenerator()

Получает экземпляр генератора кода C#.Gets an instance of the C# code generator.

CreateGenerator(String)

При переопределении в производном классе создает новый генератор кода, используя указанное имя файла для выходных данных.When overridden in a derived class, creates a new code generator using the specified file name for output.

(Унаследовано от CodeDomProvider)
CreateGenerator(TextWriter)

При переопределении в производном классе создает новый генератор кода, используя для вывода указанный объект TextWriter.When overridden in a derived class, creates a new code generator using the specified TextWriter for output.

(Унаследовано от CodeDomProvider)
CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Унаследовано от MarshalByRefObject)
CreateParser()

При переопределении в производном классе создает новый анализатор кода.When overridden in a derived class, creates a new code parser.

(Унаследовано от CodeDomProvider)
CreateValidIdentifier(String)

Создает допустимый идентификатор для указанного значения.Creates a valid identifier for the specified value.

(Унаследовано от CodeDomProvider)
Dispose()

Освобождает все ресурсы, занятые модулем Component.Releases all resources used by the Component.

(Унаследовано от Component)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом Component, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the Component and optionally releases the managed resources.

(Унаследовано от Component)
Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions)

Создает код для указанной единицы компиляции объектной модели документов кода (CodeDOM) и направляет его указанному модулю записи текста, используя заданные параметры.Generates code for the specified Code Document Object Model (CodeDOM) compilation unit and sends it to the specified text writer, using the specified options.

(Унаследовано от CodeDomProvider)
GenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions)

Создает код для указанного выражения объектной модели документов кода (CodeDOM) и направляет его указанному модулю записи текста, используя заданные параметры.Generates code for the specified Code Document Object Model (CodeDOM) expression and sends it to the specified text writer, using the specified options.

(Унаследовано от CodeDomProvider)
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

Создает код для заданного члена класса, используя заданные параметры модуля записи текста и генератора кода.Generates code for the specified class member using the specified text writer and code generator options.

GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions)

Создает код для указанного пространства имен объектной модели документов кода (CodeDOM) и направляет его указанному модулю записи текста, используя заданные параметры.Generates code for the specified Code Document Object Model (CodeDOM) namespace and sends it to the specified text writer, using the specified options.

(Унаследовано от CodeDomProvider)
GenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions)

Создает код для указанного оператора языка объектной модели документов кода (CodeDOM) и направляет его указанному модулю записи текста, используя заданные параметры.Generates code for the specified Code Document Object Model (CodeDOM) statement and sends it to the specified text writer, using the specified options.

(Унаследовано от CodeDomProvider)
GenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions)

Создает код для указанного объявления типа объектной модели документов кода (CodeDOM) и направляет его указанному модулю записи текста, используя заданные параметры.Generates code for the specified Code Document Object Model (CodeDOM) type declaration and sends it to the specified text writer, using the specified options.

(Унаследовано от CodeDomProvider)
GetConverter(Type)

Получает TypeConverter для заданного типа объекта.Gets a TypeConverter for the specified type of object.

GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject)
GetService(Type)

Возвращает объект, представляющий службу, обеспечиваемую компонентом Component или его контейнером Container.Returns an object that represents a service provided by the Component or by its Container.

(Унаследовано от Component)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
GetTypeOutput(CodeTypeReference)

Получает тип, на который указывает заданный объект CodeTypeReference.Gets the type indicated by the specified CodeTypeReference.

(Унаследовано от CodeDomProvider)
InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject)
IsValidIdentifier(String)

Возвращает значение, показывающее, является ли указанное значение допустимым идентификатором для текущего языка.Returns a value that indicates whether the specified value is a valid identifier for the current language.

(Унаследовано от CodeDomProvider)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Унаследовано от MarshalByRefObject)
Parse(TextReader)

Компилирует код, прочитанный из заданного текстового потока, в объект CodeCompileUnit.Compiles the code read from the specified text stream into a CodeCompileUnit.

(Унаследовано от CodeDomProvider)
Supports(GeneratorSupport)

Возвращает значение, показывающее, обеспечивается ли указанная поддержка создания кода.Returns a value indicating whether the specified code generation support is provided.

(Унаследовано от CodeDomProvider)
ToString()

Возвращает объект String, содержащий имя Component, если оно есть.Returns a String containing the name of the Component, if any. Этот метод не следует переопределять.This method should not be overridden.

(Унаследовано от Component)

События

Disposed

Происходит при удалении компонента вызовом метода Dispose().Occurs when the component is disposed by a call to the Dispose() method.

(Унаследовано от Component)

Безопасность

LinkDemand
Полный уровень доверия для непосредственного вызывающего.for full trust for the immediate caller. Этот класс нельзя использовать в частично доверенном коде.This class cannot be used by partially trusted code.

InheritanceDemand
Полный уровень доверия для разработчиков производных классов.for full trust for inheritors. Этот класс не может наследоваться частично доверенным кодом.This class cannot be inherited by partially trusted code.

Применяется к

Дополнительно