Bagikan melalui


CSharpCodeProvider Kelas

Definisi

Menyediakan akses ke instans generator kode C# dan pengkompilasi kode.

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
Warisan

Contoh

Contoh berikut menggunakan penyedia kode C# atau Visual Basic untuk mengkompilasi file sumber. Contohnya memeriksa ekstensi file input dan menggunakan yang sesuai CSharpCodeProvider atau VBCodeProvider untuk kompilasi. File input dikompilasi ke dalam file yang dapat dieksekusi, dan kesalahan kompilasi apa pun ditampilkan ke konsol.

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

Keterangan

Kelas ini menyediakan metode yang dapat digunakan untuk mengambil instans C# ICodeGenerator dan ICodeCompiler implementasi.

Catatan

Kelas ini berisi permintaan tautan dan permintaan warisan di tingkat kelas yang berlaku untuk semua anggota. SecurityException dilemparkan ketika pemanggil langsung atau kelas turunan tidak memiliki izin kepercayaan penuh.

Konstruktor

CSharpCodeProvider()

Menginisialisasi instans baru kelas CSharpCodeProvider.

CSharpCodeProvider(IDictionary<String,String>)

Menginisialisasi instans CSharpCodeProvider baru kelas dengan menggunakan opsi penyedia yang ditentukan.

Properti

CanRaiseEvents

Mendapatkan nilai yang menunjukkan apakah komponen dapat menaikkan peristiwa.

(Diperoleh dari Component)
Container

IContainer Mendapatkan yang berisi Component.

(Diperoleh dari Component)
DesignMode

Mendapatkan nilai yang menunjukkan apakah Component saat ini dalam mode desain.

(Diperoleh dari Component)
Events

Mendapatkan daftar penanganan aktivitas yang dilampirkan ke ini Component.

(Diperoleh dari Component)
FileExtension

Mendapatkan ekstensi nama file untuk digunakan saat membuat file kode sumber.

LanguageOptions

Mendapatkan pengidentifikasi fitur bahasa.

(Diperoleh dari CodeDomProvider)
Site

Mendapatkan atau mengatur ISite dari Component.

(Diperoleh dari Component)

Metode

CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[])

Mengkompilasi rakitan berdasarkan System.CodeDom pohon yang terkandung dalam array CodeCompileUnit objek yang ditentukan, menggunakan pengaturan pengkompilasi yang ditentukan.

(Diperoleh dari CodeDomProvider)
CompileAssemblyFromFile(CompilerParameters, String[])

Mengkompilasi rakitan dari kode sumber yang terkandung dalam file yang ditentukan, menggunakan pengaturan pengkompilasi yang ditentukan.

(Diperoleh dari CodeDomProvider)
CompileAssemblyFromSource(CompilerParameters, String[])

Mengkompilasi rakitan dari array string yang ditentukan yang berisi kode sumber, menggunakan pengaturan pengkompilasi yang ditentukan.

(Diperoleh dari CodeDomProvider)
CreateCompiler()
Kedaluwarsa.
Kedaluwarsa.

Mendapatkan instans pengkompilasi kode C#.

CreateEscapedIdentifier(String)

Membuat pengidentifikasi escape untuk nilai yang ditentukan.

(Diperoleh dari CodeDomProvider)
CreateGenerator()
Kedaluwarsa.
Kedaluwarsa.

Mendapatkan instans generator kode C#.

CreateGenerator(String)

Saat ditimpa di kelas turunan, buat generator kode baru menggunakan nama file yang ditentukan untuk output.

(Diperoleh dari CodeDomProvider)
CreateGenerator(TextWriter)

Saat ditimpa di kelas turunan, buat generator kode baru menggunakan yang ditentukan TextWriter untuk output.

(Diperoleh dari CodeDomProvider)
CreateObjRef(Type)

Membuat objek yang berisi semua informasi relevan yang diperlukan untuk menghasilkan proksi yang digunakan untuk berkomunikasi dengan objek jarak jauh.

(Diperoleh dari MarshalByRefObject)
CreateParser()
Kedaluwarsa.
Kedaluwarsa.

Saat ditimpa di kelas turunan, membuat pengurai kode baru.

(Diperoleh dari CodeDomProvider)
CreateValidIdentifier(String)

Membuat pengidentifikasi yang valid untuk nilai yang ditentukan.

(Diperoleh dari CodeDomProvider)
Dispose()

Merilis semua sumber daya yang Componentdigunakan oleh .

(Diperoleh dari Component)
Dispose(Boolean)

Merilis sumber daya tidak terkelola yang digunakan oleh Component dan secara opsional merilis sumber daya terkelola.

(Diperoleh dari Component)
Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions)

Menghasilkan kode untuk unit kompilasi Code Document Object Model (CodeDOM) yang ditentukan dan mengirimkannya ke penulis teks yang ditentukan, menggunakan opsi yang ditentukan.

(Diperoleh dari CodeDomProvider)
GenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions)

Menghasilkan kode untuk ekspresi Code Document Object Model (CodeDOM) yang ditentukan dan mengirimkannya ke penulis teks yang ditentukan, menggunakan opsi yang ditentukan.

(Diperoleh dari CodeDomProvider)
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

Menghasilkan kode untuk anggota kelas yang ditentukan menggunakan opsi penulis teks dan generator kode yang ditentukan.

GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

Menghasilkan kode untuk deklarasi anggota Code Document Object Model (CodeDOM) yang ditentukan dan mengirimkannya ke penulis teks yang ditentukan, menggunakan opsi yang ditentukan.

(Diperoleh dari CodeDomProvider)
GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions)

Menghasilkan kode untuk namespace Layanan Code Document Object Model (CodeDOM) yang ditentukan dan mengirimkannya ke penulis teks yang ditentukan, menggunakan opsi yang ditentukan.

(Diperoleh dari CodeDomProvider)
GenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions)

Menghasilkan kode untuk pernyataan Code Document Object Model (CodeDOM) yang ditentukan dan mengirimkannya ke penulis teks yang ditentukan, menggunakan opsi yang ditentukan.

(Diperoleh dari CodeDomProvider)
GenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions)

Menghasilkan kode untuk deklarasi jenis Code Document Object Model (CodeDOM) yang ditentukan dan mengirimkannya ke penulis teks yang ditentukan, menggunakan opsi yang ditentukan.

(Diperoleh dari CodeDomProvider)
GetConverter(Type)

TypeConverter Mendapatkan untuk jenis objek yang ditentukan.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetLifetimeService()
Kedaluwarsa.

Mengambil objek layanan seumur hidup saat ini yang mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
GetService(Type)

Mengembalikan objek yang mewakili layanan yang disediakan oleh Component atau oleh Container.

(Diperoleh dari Component)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
GetTypeOutput(CodeTypeReference)

Mendapatkan jenis yang ditunjukkan oleh yang ditentukan CodeTypeReference.

(Diperoleh dari CodeDomProvider)
InitializeLifetimeService()
Kedaluwarsa.

Mendapatkan objek layanan seumur hidup untuk mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
IsValidIdentifier(String)

Mengembalikan nilai yang menunjukkan apakah nilai yang ditentukan adalah pengidentifikasi yang valid untuk bahasa saat ini.

(Diperoleh dari CodeDomProvider)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
MemberwiseClone(Boolean)

Membuat salinan dangkal objek saat ini MarshalByRefObject .

(Diperoleh dari MarshalByRefObject)
Parse(TextReader)

Mengkompilasi kode yang dibaca dari aliran teks yang ditentukan ke dalam CodeCompileUnit.

(Diperoleh dari CodeDomProvider)
Supports(GeneratorSupport)

Mengembalikan nilai yang menunjukkan apakah dukungan pembuatan kode yang ditentukan disediakan.

(Diperoleh dari CodeDomProvider)
ToString()

Mengembalikan yang String berisi nama Component, jika ada. Metode ini tidak boleh ditimpa.

(Diperoleh dari Component)

Acara

Disposed

Terjadi ketika komponen dibuang oleh panggilan ke Dispose() metode .

(Diperoleh dari Component)

Berlaku untuk

Lihat juga