CSharpCodeProvider Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt toegang tot exemplaren van de C#-codegenerator en codecompilator.
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
- Overname
Voorbeelden
In het volgende voorbeeld wordt de C# of Visual Basic codeprovider gebruikt om een bronbestand te compileren. In het voorbeeld wordt de bestandsextensie voor invoer gecontroleerd en wordt de bijbehorende CSharpCodeProvider of VBCodeProvider compilatie gebruikt. Het invoerbestand wordt gecompileerd in een uitvoerbaar bestand en eventuele compilatiefouten worden weergegeven in de console.
Important
De methoden CompileAssemblyFrom* worden niet ondersteund op .NET Core en .NET 5+. Dit voorbeeld wordt alleen uitgevoerd op .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
Opmerkingen
Deze klasse biedt methoden die kunnen worden gebruikt om exemplaren van de C# ICodeGenerator en ICodeCompiler implementaties op te halen.
Note
Deze klasse bevat een koppelingsvraag en een overnamevraag op klasseniveau die van toepassing is op alle leden. Een SecurityException wordt geworpen wanneer de directe aanroeper of de afgeleide klasse geen volledig-vertrouwensmachtiging heeft.
Constructors
| Name | Description |
|---|---|
| CSharpCodeProvider() |
Initialiseert een nieuw exemplaar van de CSharpCodeProvider klasse. |
| CSharpCodeProvider(IDictionary<String,String>) |
Initialiseert een nieuw exemplaar van de CSharpCodeProvider klasse met behulp van de opgegeven provideropties. |
Eigenschappen
| Name | Description |
|---|---|
| CanRaiseEvents |
Hiermee wordt een waarde opgehaald die aangeeft of het onderdeel een gebeurtenis kan genereren. (Overgenomen van Component) |
| Container |
Hiermee haalt u het IContainer bestand op dat de Component. (Overgenomen van Component) |
| DesignMode |
Hiermee wordt een waarde opgehaald die aangeeft of de Component momenteel in de ontwerpmodus is. (Overgenomen van Component) |
| Events |
Hiermee haalt u de lijst met gebeurtenis-handlers op die aan dit Componentbestand zijn gekoppeld. (Overgenomen van Component) |
| FileExtension |
Hiermee haalt u de bestandsnaamextensie op die moet worden gebruikt bij het maken van broncodebestanden. |
| LanguageOptions |
Hiermee haalt u een taalfuncties-id op. (Overgenomen van CodeDomProvider) |
| Site |
Haalt of stelt de ISite van de Component. (Overgenomen van Component) |
Methoden
| Name | Description |
|---|---|
| CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[]) |
Compileert een assembly op basis van de System.CodeDom bomen in de opgegeven matrix met objecten, met behulp van CodeCompileUnit de opgegeven compilerinstellingen. (Overgenomen van CodeDomProvider) |
| CompileAssemblyFromFile(CompilerParameters, String[]) |
Compileert een assembly van de broncode in de opgegeven bestanden met behulp van de opgegeven compilerinstellingen. (Overgenomen van CodeDomProvider) |
| CompileAssemblyFromSource(CompilerParameters, String[]) |
Compileert een assembly van de opgegeven matrix met tekenreeksen die broncode bevatten, met behulp van de opgegeven compilerinstellingen. (Overgenomen van CodeDomProvider) |
| CreateCompiler() |
Verouderd.
Hiermee haalt u een exemplaar van de C#-codecompilator op. |
| CreateEscapedIdentifier(String) |
Hiermee maakt u een escape-id voor de opgegeven waarde. (Overgenomen van CodeDomProvider) |
| CreateGenerator() |
Verouderd.
Hiermee haalt u een exemplaar van de C#-codegenerator op. |
| CreateGenerator(String) |
Wanneer deze wordt overschreven in een afgeleide klasse, maakt u een nieuwe codegenerator met behulp van de opgegeven bestandsnaam voor uitvoer. (Overgenomen van CodeDomProvider) |
| CreateGenerator(TextWriter) |
Wanneer deze wordt overschreven in een afgeleide klasse, maakt u een nieuwe codegenerator met behulp van de opgegeven TextWriter voor uitvoer. (Overgenomen van CodeDomProvider) |
| CreateObjRef(Type) |
Hiermee maakt u een object dat alle relevante informatie bevat die nodig is om een proxy te genereren die wordt gebruikt om te communiceren met een extern object. (Overgenomen van MarshalByRefObject) |
| CreateParser() |
Verouderd.
Wanneer deze wordt overschreven in een afgeleide klasse, maakt u een nieuwe codeparser. (Overgenomen van CodeDomProvider) |
| CreateValidIdentifier(String) |
Hiermee maakt u een geldige id voor de opgegeven waarde. (Overgenomen van CodeDomProvider) |
| Dispose() |
Alle resources die worden gebruikt door de Component. (Overgenomen van Component) |
| Dispose(Boolean) |
Publiceert de niet-beheerde resources die worden gebruikt door de Component beheerde resources en brengt eventueel de beheerde resources vrij. (Overgenomen van Component) |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions) |
Genereert code voor de opgegeven Code Document Object Model -compilatie-eenheid (CodeDOM) en verzendt deze naar de opgegeven tekstschrijver met behulp van de opgegeven opties. (Overgenomen van CodeDomProvider) |
| GenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions) |
Genereert code voor de opgegeven Code Document Object Model-expressie (CodeDOM) en verzendt deze naar de opgegeven tekstschrijver met behulp van de opgegeven opties. (Overgenomen van CodeDomProvider) |
| GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions) |
Hiermee genereert u code voor het opgegeven klasselid met behulp van de opgegeven opties voor tekstschrijver en codegenerator. |
| GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions) |
Hiermee genereert u code voor de opgegeven Code Document Object Model -naamruimte (CodeDOM) en verzendt u deze naar de opgegeven tekstschrijver met behulp van de opgegeven opties. (Overgenomen van CodeDomProvider) |
| GenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions) |
Genereert code voor de opgegeven Code Document Object Model-instructie (CodeDOM) en verzendt deze naar de opgegeven tekstschrijver met behulp van de opgegeven opties. (Overgenomen van CodeDomProvider) |
| GenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions) |
Hiermee genereert u code voor de opgegeven codedocumentobjectmodeldeclaratie (CodeDOM) en verzendt u deze naar de opgegeven tekstschrijver met behulp van de opgegeven opties. (Overgenomen van CodeDomProvider) |
| GetConverter(Type) |
Hiermee haalt u een TypeConverter op voor het opgegeven type object. |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetLifetimeService() |
Hiermee haalt u het huidige levensduurserviceobject op waarmee het levensduurbeleid voor dit exemplaar wordt beheerd. (Overgenomen van MarshalByRefObject) |
| GetService(Type) |
Hiermee wordt een object geretourneerd dat een service vertegenwoordigt die wordt geleverd door of door de Component service Container. (Overgenomen van Component) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| GetTypeOutput(CodeTypeReference) |
Hiermee haalt u het type op dat wordt aangegeven door de opgegeven CodeTypeReference. (Overgenomen van CodeDomProvider) |
| InitializeLifetimeService() |
Hiermee haalt u een levensduurserviceobject op om het levensduurbeleid voor dit exemplaar te beheren. (Overgenomen van MarshalByRefObject) |
| IsValidIdentifier(String) |
Retourneert een waarde die aangeeft of de opgegeven waarde een geldige id is voor de huidige taal. (Overgenomen van CodeDomProvider) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| MemberwiseClone(Boolean) |
Hiermee maakt u een ondiepe kopie van het huidige MarshalByRefObject object. (Overgenomen van MarshalByRefObject) |
| Parse(TextReader) |
Compileert de code die wordt gelezen uit de opgegeven tekststroom naar een CodeCompileUnit. (Overgenomen van CodeDomProvider) |
| Supports(GeneratorSupport) |
Retourneert een waarde die aangeeft of de opgegeven ondersteuning voor het genereren van code wordt geboden. (Overgenomen van CodeDomProvider) |
| ToString() |
Retourneert een String met de naam van de Component, indien van toepassing. Deze methode mag niet worden overschreven. (Overgenomen van Component) |
gebeurtenis
| Name | Description |
|---|---|
| Disposed |
Treedt op wanneer het onderdeel wordt verwijderd door een aanroep naar de Dispose() methode. (Overgenomen van Component) |