CSharpCodeProvider Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje přístup k instancím generátoru kódu jazyka C# a kompilátoru kódu.
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
- Dědičnost
Příklady
Následující příklad používá ke kompilaci zdrojového souboru zprostředkovatele kódu jazyka C# nebo Visual Basic. Příklad zkontroluje příponu vstupního souboru a použije odpovídající CSharpCodeProvider nebo VBCodeProvider pro kompilaci. Vstupní soubor je zkompilován do spustitelného souboru a všechny chyby kompilace se zobrazí v konzole.
Important
Metody CompileAssemblyFrom* se nepodporují v .NET Core a .NET 5 nebo novější. Tento příklad se spouští pouze v .NET Frameworku.
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
Poznámky
Tato třída poskytuje metody, které lze použít k načtení instancí jazyka C# ICodeGenerator a ICodeCompiler implementací.
Note
Tato třída obsahuje požadavek na propojení a poptávku dědičnosti na úrovni třídy, která se vztahuje na všechny členy. Vyvolá se SecurityException, pokud buď bezprostřední volající, nebo odvozená třída nemá oprávnění plné důvěryhodnosti.
Konstruktory
| Name | Description |
|---|---|
| CSharpCodeProvider() |
Inicializuje novou instanci CSharpCodeProvider třídy. |
| CSharpCodeProvider(IDictionary<String,String>) |
Inicializuje novou instanci CSharpCodeProvider třídy pomocí zadaných možností zprostředkovatele. |
Vlastnosti
| Name | Description |
|---|---|
| CanRaiseEvents |
Získá hodnotu určující, zda komponenta může vyvolat událost. (Zděděno od Component) |
| Container |
Získá ten IContainer , který obsahuje Component. (Zděděno od Component) |
| DesignMode |
Získá hodnotu, která označuje, zda Component je aktuálně v režimu návrhu. (Zděděno od Component) |
| Events |
Získá seznam obslužných rutin událostí, které jsou připojeny k tomuto Component. (Zděděno od Component) |
| FileExtension |
Získá příponu názvu souboru, která se má použít při vytváření souborů zdrojového kódu. |
| LanguageOptions |
Získá identifikátor funkcí jazyka. (Zděděno od CodeDomProvider) |
| Site |
Získá nebo nastaví ISite objektu Component. (Zděděno od Component) |
Metody
| Name | Description |
|---|---|
| CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[]) |
Zkompiluje sestavení založené na System.CodeDom stromech obsažených CodeCompileUnit v zadaném poli objektů pomocí zadaného nastavení kompilátoru. (Zděděno od CodeDomProvider) |
| CompileAssemblyFromFile(CompilerParameters, String[]) |
Zkompiluje sestavení ze zdrojového kódu obsaženého v zadaných souborech pomocí zadaného nastavení kompilátoru. (Zděděno od CodeDomProvider) |
| CompileAssemblyFromSource(CompilerParameters, String[]) |
Zkompiluje sestavení ze zadaného pole řetězců obsahujících zdrojový kód pomocí zadaného nastavení kompilátoru. (Zděděno od CodeDomProvider) |
| CreateCompiler() |
Zastaralé.
Zastaralé.
Získá instanci kompilátoru kódu jazyka C#. |
| CreateEscapedIdentifier(String) |
Vytvoří řídicí identifikátor pro zadanou hodnotu. (Zděděno od CodeDomProvider) |
| CreateGenerator() |
Zastaralé.
Zastaralé.
Získá instanci generátoru kódu jazyka C#. |
| CreateGenerator(String) |
Při přepsání v odvozené třídě vytvoří nový generátor kódu pomocí zadaného názvu souboru pro výstup. (Zděděno od CodeDomProvider) |
| CreateGenerator(TextWriter) |
Při přepsání v odvozené třídě vytvoří nový generátor kódu pomocí zadaného TextWriter výstupu. (Zděděno od CodeDomProvider) |
| CreateObjRef(Type) |
Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužícího ke komunikaci se vzdáleným objektem. (Zděděno od MarshalByRefObject) |
| CreateParser() |
Zastaralé.
Zastaralé.
Při přepsání v odvozené třídě vytvoří nový analyzátor kódu. (Zděděno od CodeDomProvider) |
| CreateValidIdentifier(String) |
Vytvoří platný identifikátor pro zadanou hodnotu. (Zděděno od CodeDomProvider) |
| Dispose() |
Uvolní všechny prostředky používané nástrojem Component. (Zděděno od Component) |
| Dispose(Boolean) |
Uvolní nespravované prostředky používané Component a volitelně uvolní spravované prostředky. (Zděděno od Component) |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions) |
Vygeneruje kód pro zadanou kompilační jednotku codeDOM (CodeDOM) a odešle ho zadanému textovému zapisovači pomocí zadaných možností. (Zděděno od CodeDomProvider) |
| GenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions) |
Vygeneruje kód pro zadaný výraz Code DOCUMENT Object Model (CodeDOM) a odešle ho zadanému textovému zapisovači pomocí zadaných možností. (Zděděno od CodeDomProvider) |
| GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions) |
Vygeneruje kód pro zadaný člen třídy pomocí zadaného textového zapisovače a možností generátoru kódu. |
| GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions) |
Generuje kód pro zadaný obor názvů Code DOCUMENT Object Model (CodeDOM) a odešle ho zadanému textovému zapisovači pomocí zadaných možností. (Zděděno od CodeDomProvider) |
| GenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions) |
Vygeneruje kód pro zadaný příkaz Code Document Object Model (CodeDOM) a odešle ho zadanému textovému zapisovači pomocí zadaných možností. (Zděděno od CodeDomProvider) |
| GenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions) |
Vygeneruje kód pro zadanou deklaraci typu CodeDOM (CodeDOM) a odešle ho zadanému textovému zapisovači pomocí zadaných možností. (Zděděno od CodeDomProvider) |
| GetConverter(Type) |
TypeConverter Získá pro zadaný typ objektu. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetLifetimeService() |
Zastaralé.
Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
| GetService(Type) |
Vrátí objekt, který představuje službu poskytovanou objektem Component nebo jeho Container. (Zděděno od Component) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| GetTypeOutput(CodeTypeReference) |
Získá typ označený zadaným CodeTypeReference. (Zděděno od CodeDomProvider) |
| InitializeLifetimeService() |
Zastaralé.
Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
| IsValidIdentifier(String) |
Vrátí hodnotu, která určuje, zda je zadaná hodnota platným identifikátorem pro aktuální jazyk. (Zděděno od CodeDomProvider) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| MemberwiseClone(Boolean) |
Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu. (Zděděno od MarshalByRefObject) |
| Parse(TextReader) |
Zkompiluje kód přečtený ze zadaného textového streamu do objektu CodeCompileUnit. (Zděděno od CodeDomProvider) |
| Supports(GeneratorSupport) |
Vrátí hodnotu určující, zda je zadána podpora generování zadaného kódu. (Zděděno od CodeDomProvider) |
| ToString() |
String Vrátí hodnotu obsahující název Component, pokud existuje. Tato metoda by neměla být přepsána. (Zděděno od Component) |
Událost
| Name | Description |
|---|---|
| Disposed |
Nastane, když komponenta je uvolněna voláním Dispose() metody. (Zděděno od Component) |