Aracılığıyla paylaş


CSharpCodeProvider Sınıf

Tanım

C# kod oluşturucu ve kod derleyicisi örneklerine erişim sağlar.

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
Devralma

Örnekler

Aşağıdaki örnek, kaynak dosyayı derlemek için C# veya Visual Basic kod sağlayıcısını kullanır. Örnek, giriş dosyası uzantısını denetler ve karşılık gelen CSharpCodeProvider veya VBCodeProvider derleme için kullanır. Giriş dosyası yürütülebilir bir dosyada derlenir ve tüm derleme hataları konsolda görüntülenir.

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

Açıklamalar

Bu sınıf, C# ICodeGenerator ve ICodeCompiler uygulamalarının örneklerini almak için kullanılabilecek yöntemler sağlar.

Not

Bu sınıf, bir bağlantı talebi ve tüm üyeler için geçerli olan sınıf düzeyinde devralma talebi içerir. Hemen SecurityException çağıranın veya türetilen sınıfın tam güven izni olmadığında bir oluşturulur.

Oluşturucular

CSharpCodeProvider()

CSharpCodeProvider sınıfının yeni bir örneğini başlatır.

CSharpCodeProvider(IDictionary<String,String>)

Belirtilen sağlayıcı seçeneklerini kullanarak sınıfının yeni bir örneğini CSharpCodeProvider başlatır.

Özellikler

CanRaiseEvents

Bileşenin bir olay oluşturup oluşturamayacağını belirten bir değer alır.

(Devralındığı yer: Component)
Container

öğesini IContainer içeren öğesini Componentalır.

(Devralındığı yer: Component)
DesignMode

öğesinin şu anda tasarım modunda olup olmadığını Component gösteren bir değer alır.

(Devralındığı yer: Component)
Events

Bu Componentöğesine eklenen olay işleyicilerinin listesini alır.

(Devralındığı yer: Component)
FileExtension

Kaynak kod dosyaları oluştururken kullanılacak dosya adı uzantısını alır.

LanguageOptions

Dil özellikleri tanımlayıcısı alır.

(Devralındığı yer: CodeDomProvider)
Site

öğesini alır veya ayarlar ISiteComponent.

(Devralındığı yer: Component)

Yöntemler

CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[])

Belirtilen derleyici ayarlarını kullanarak belirtilen nesne dizisinde CodeCompileUnit yer alan ağaçlara dayalı System.CodeDom bir derleme derler.

(Devralındığı yer: CodeDomProvider)
CompileAssemblyFromFile(CompilerParameters, String[])

Belirtilen derleyici ayarlarını kullanarak, belirtilen dosyalardaki kaynak kodundan bir derleme derler.

(Devralındığı yer: CodeDomProvider)
CompileAssemblyFromSource(CompilerParameters, String[])

Belirtilen derleyici ayarlarını kullanarak kaynak kodu içeren belirtilen dize dizisinden bir derleme derler.

(Devralındığı yer: CodeDomProvider)
CreateCompiler()
Geçersiz.
Geçersiz.

C# kod derleyicisinin bir örneğini alır.

CreateEscapedIdentifier(String)

Belirtilen değer için kaçış tanımlayıcısı oluşturur.

(Devralındığı yer: CodeDomProvider)
CreateGenerator()
Geçersiz.
Geçersiz.

C# kod oluşturucusunun bir örneğini alır.

CreateGenerator(String)

Türetilmiş bir sınıfta geçersiz kılındığında, çıktı için belirtilen dosya adını kullanarak yeni bir kod oluşturucu oluşturur.

(Devralındığı yer: CodeDomProvider)
CreateGenerator(TextWriter)

Türetilmiş bir sınıfta geçersiz kılındığında, çıktı için belirtilen TextWriter öğesini kullanarak yeni bir kod oluşturucu oluşturur.

(Devralındığı yer: CodeDomProvider)
CreateObjRef(Type)

Uzak bir nesneyle iletişim kurmak için kullanılan bir ara sunucu oluşturmak için gereken tüm ilgili bilgileri içeren bir nesne oluşturur.

(Devralındığı yer: MarshalByRefObject)
CreateParser()
Geçersiz.
Geçersiz.

Türetilmiş bir sınıfta geçersiz kılındığında, yeni bir kod ayrıştırıcısı oluşturur.

(Devralındığı yer: CodeDomProvider)
CreateValidIdentifier(String)

Belirtilen değer için geçerli bir tanımlayıcı oluşturur.

(Devralındığı yer: CodeDomProvider)
Dispose()

Component tarafından kullanılan tüm kaynakları serbest bırakır.

(Devralındığı yer: Component)
Dispose(Boolean)

Component tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve yönetilen kaynakları isteğe bağlı olarak serbest bırakır.

(Devralındığı yer: Component)
Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions)

Belirtilen Kod Belgesi Nesne Modeli (CodeDOM) derleme birimi için kod oluşturur ve belirtilen seçenekleri kullanarak bunu belirtilen metin yazıcıya gönderir.

(Devralındığı yer: CodeDomProvider)
GenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions)

Belirtilen Kod Belgesi Nesne Modeli (CodeDOM) ifadesi için kod oluşturur ve belirtilen seçenekleri kullanarak bunu belirtilen metin yazıcıya gönderir.

(Devralındığı yer: CodeDomProvider)
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

Belirtilen metin yazıcı ve kod oluşturucu seçeneklerini kullanarak belirtilen sınıf üyesi için kod oluşturur.

GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

Belirtilen Kod Belgesi Nesne Modeli (CodeDOM) üye bildirimi için kod oluşturur ve belirtilen seçenekleri kullanarak belirtilen metin yazıcıya gönderir.

(Devralındığı yer: CodeDomProvider)
GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions)

Belirtilen Kod Belgesi Nesne Modeli (CodeDOM) ad alanı için kod oluşturur ve belirtilen seçenekleri kullanarak bunu belirtilen metin yazıcıya gönderir.

(Devralındığı yer: CodeDomProvider)
GenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions)

Belirtilen Kod Belgesi Nesne Modeli (CodeDOM) deyimi için kod oluşturur ve belirtilen seçenekleri kullanarak bunu belirtilen metin yazıcıya gönderir.

(Devralındığı yer: CodeDomProvider)
GenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions)

Belirtilen Kod Belgesi Nesne Modeli (CodeDOM) türü bildirimi için kod oluşturur ve belirtilen seçenekleri kullanarak bunu belirtilen metin yazıcıya gönderir.

(Devralındığı yer: CodeDomProvider)
GetConverter(Type)

Belirtilen nesne türü için bir TypeConverter alır.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetLifetimeService()
Geçersiz.

Bu örnek için yaşam süresi ilkesini denetleen geçerli yaşam süresi hizmet nesnesini alır.

(Devralındığı yer: MarshalByRefObject)
GetService(Type)

veya tarafından ComponentContainersağlanan bir hizmeti temsil eden bir nesnesi döndürür.

(Devralındığı yer: Component)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
GetTypeOutput(CodeTypeReference)

Belirtilen CodeTypeReferencetarafından belirtilen türü alır.

(Devralındığı yer: CodeDomProvider)
InitializeLifetimeService()
Geçersiz.

Bu örneğin yaşam süresi ilkesini denetlemek için bir yaşam süresi hizmet nesnesi alır.

(Devralındığı yer: MarshalByRefObject)
IsValidIdentifier(String)

Belirtilen değerin geçerli dil için geçerli bir tanımlayıcı olup olmadığını gösteren bir değer döndürür.

(Devralındığı yer: CodeDomProvider)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
MemberwiseClone(Boolean)

Geçerli MarshalByRefObject nesnenin sığ bir kopyasını oluşturur.

(Devralındığı yer: MarshalByRefObject)
Parse(TextReader)

Belirtilen metin akışından okunan kodu içine derler CodeCompileUnit.

(Devralındığı yer: CodeDomProvider)
Supports(GeneratorSupport)

Belirtilen kod oluşturma desteğinin sağlanıp sağlanmadığını belirten bir değer döndürür.

(Devralındığı yer: CodeDomProvider)
ToString()

Varsa, adını Componentiçeren bir String döndürür. Bu yöntem geçersiz kılınmamalıdır.

(Devralındığı yer: Component)

Ekinlikler

Disposed

Bileşen yöntemine Dispose() yapılan bir çağrı tarafından atıldığında gerçekleşir.

(Devralındığı yer: Component)

Şunlara uygulanır

Ayrıca bkz.