CSharpCodeProvider Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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. Contoh 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.
Important
Metode CompileAssemblyFrom* tidak didukung pada .NET Core dan .NET 5+. Contoh ini hanya berjalan pada .NET Framework.
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.
Note
Kelas ini berisi permintaan tautan dan permintaan warisan di tingkat kelas yang berlaku untuk semua anggota. Dilemparkan SecurityException ketika pemanggil langsung atau kelas turunan tidak memiliki izin kepercayaan penuh.
Konstruktor
| Nama | Deskripsi |
|---|---|
| CSharpCodeProvider() |
Menginisialisasi instans baru dari kelas CSharpCodeProvider. |
| CSharpCodeProvider(IDictionary<String,String>) |
Menginisialisasi instans CSharpCodeProvider baru kelas dengan menggunakan opsi penyedia yang ditentukan. |
Properti
| Nama | Deskripsi |
|---|---|
| CanRaiseEvents |
Mendapatkan nilai yang menunjukkan apakah komponen dapat menaikkan peristiwa. (Diperoleh dari Component) |
| Container |
Mendapatkan IContainer 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 Componentini. (Diperoleh dari Component) |
| FileExtension |
Mendapatkan ekstensi nama file untuk digunakan saat membuat file kode sumber. |
| LanguageOptions |
Mendapatkan pengidentifikasi fitur bahasa. (Diperoleh dari CodeDomProvider) |
| Site |
Mengambil atau menetapkan ISite dari Component. (Diperoleh dari Component) |
Metode
| Nama | Deskripsi |
|---|---|
| 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 kompilator yang ditentukan. (Diperoleh dari CodeDomProvider) |
| CreateCompiler() |
Kedaluwarsa.
Kedaluwarsa.
Mendapatkan instans pengkompilasi kode C#. |
| CreateEscapedIdentifier(String) |
Membuat pengidentifikasi yang lolos 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, membuat 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 digunakan oleh Component. (Diperoleh dari Component) |
| Dispose(Boolean) |
Merilis sumber daya yang tidak dikelola yang Component digunakan oleh 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. |
| 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 Type instans 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 Objectsaat ini. (Diperoleh dari Object) |
| MemberwiseClone(Boolean) |
Membuat salinan dangkal objek MarshalByRefObject saat ini. (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
| Nama | Deskripsi |
|---|---|
| Disposed |
Terjadi ketika komponen dibuang oleh panggilan ke metode Dispose(). (Diperoleh dari Component) |