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직접 실행 호출자 또는 파생 클래스에 완전 신뢰 권한이 없는 경우이 throw 됩니다.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

ComponentISite를 가져오거나 설정합니다.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)

지정된 값의 이스케이프된 식별자를 만듭니다.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.

GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

지정된 CodeDOM(코드 문서 개체 모델) 멤버 선언에 대한 코드를 생성한 다음 지정된 옵션을 사용하여 지정된 텍스트 작성기에 해당 코드를 보냅니다.Generates code for the specified Code Document Object Model (CodeDOM) member declaration and sends it to the specified text writer, using the specified options.

(다음에서 상속됨 CodeDomProvider)
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()

Component의 이름이 포함된 String을 반환합니다(있는 경우).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)

적용 대상

추가 정보