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á zprostředkovatele kódu jazyka C# nebo Visual Basic ke kompilaci zdrojového souboru. Příklad zkontroluje příponu vstupního souboru a použije odpovídající CSharpCodeProvider nebo VBCodeProvider ke kompilaci. Vstupní soubor se zkompiluje do spustitelného souboru a všechny chyby kompilace se zobrazí v konzole nástroje .
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í.
Poznámka
Tato třída obsahuje požadavek na propojení a požadavek dědičnosti na úrovni třídy, který se vztahuje na všechny členy. Je SecurityException vyvolán, pokud bezprostředně volající nebo odvozená třída nemá oprávnění k úplnému vztahu důvěryhodnosti.
Konstruktory
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
CanRaiseEvents |
Získá hodnotu označující, zda komponenta může vyvolat událost. (Zděděno od Component) |
Container |
Získá objekt IContainer , který obsahuje Component. (Zděděno od Component) |
DesignMode |
Získá hodnotu, která označuje, zda je aktuálně v režimu návrhu Component . (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 z Component. (Zděděno od Component) |
Metody
CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[]) |
Zkompiluje sestavení na System.CodeDom základě stromů obsažených v zadaném CodeCompileUnit 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ří identifikátor s řídicím znakem 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 s použitím 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 pro výstup. (Zděděno od CodeDomProvider) |
CreateObjRef(Type) |
Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy sloužící 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é nástrojem Component a volitelně uvolní spravované prostředky. (Zděděno od Component) |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions) |
Vygeneruje kód pro zadanou jednotku kompilace CodeDOM (CodeDOM) a odešle jej zadanému zapisovači textu 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 zapisovači textu pomocí zadaných možností. (Zděděno od CodeDomProvider) |
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions) |
Generuje kód pro zadaný člen třídy pomocí zadaného zapisovače textu a možnosti generátoru kódu. |
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions) |
Vygeneruje kód pro zadanou deklaraci člena CodeDOM (CodeDOM) a odešle jej zadanému zapisovači textu pomocí zadaných možností. (Zděděno od CodeDomProvider) |
GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions) |
Vygeneruje kód pro zadaný obor názvů CodeDOM (Code DOCUMENT Object Model) a odešle ho zadanému zapisovači textu 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 zapisovači textu 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 jej zadanému zapisovači textu pomocí zadaných možností. (Zděděno od CodeDomProvider) |
GetConverter(Type) |
TypeConverter Získá pro zadaný typ objektu. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetLifetimeService() |
Zastaralé.
Načte aktuální životnost objektu služby, 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 .Container (Zděděno od Component) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
GetTypeOutput(CodeTypeReference) |
Získá typ označený zadaným CodeTypeReferenceobjektem . (Zděděno od CodeDomProvider) |
InitializeLifetimeService() |
Zastaralé.
Získá životnost objektu služby, který řídí zásady životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
IsValidIdentifier(String) |
Vrátí hodnotu, která označ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 Objectsouboru . (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 .CodeCompileUnit (Zděděno od CodeDomProvider) |
Supports(GeneratorSupport) |
Vrátí hodnotu označující, zda je poskytována podpora zadaného generování kódu. (Zděděno od CodeDomProvider) |
ToString() |
String Vrátí hodnotu obsahující název , Componentpokud existuje. Tato metoda by neměla být přepsána. (Zděděno od Component) |
Událost
Disposed |
Vyvolá se, když je komponenta uvolněna voláním Dispose() metody . (Zděděno od Component) |