CompilerParameters-Klasse
Stellt die zum Aufrufen eines Compilers verwendeten Parameter dar.
Namespace: System.CodeDom.Compiler
Assembly: System (in system.dll)
Syntax
'Declaration
<SerializableAttribute> _
Public Class CompilerParameters
'Usage
Dim instance As CompilerParameters
[SerializableAttribute]
public class CompilerParameters
[SerializableAttribute]
public ref class CompilerParameters
/** @attribute SerializableAttribute() */
public class CompilerParameters
SerializableAttribute
public class CompilerParameters
Hinweise
Ein CompilerParameters-Objekt stellt die Einstellungen und Optionen für eine ICodeCompiler-Schnittstelle dar.
Wenn Sie ein ausführbares Programm kompilieren, müssen Sie die GenerateExecutable-Eigenschaft auf true festlegen. Wenn GenerateExecutable auf false festgelegt ist, generiert der Compiler eine Klassenbibliothek. In der Standardeinstellung ist beim Initialisieren eines neuen CompilerParameters die GenerateExecutable-Eigenschaft auf false festgelegt. Wenn Sie eine ausführbare Datei aus einem CodeDOM-Diagramm kompilieren, muss im Diagramm eine CodeEntryPointMethod definiert sein. Wenn mehrere Codeeinstiegspunkte vorhanden sind, können Sie die Klasse angeben, die den zu verwendenden Einstiegspunkt definiert, indem Sie den Namen der Klasse auf die MainClass-Eigenschaft festlegen.
Sie können einen Dateinamen für die Ausgabeassembly in der OutputAssembly-Eigenschaft angeben. Andernfalls wird ein Standardname für die Ausgabedatei verwendet. Um Debuginformationen in eine generierte Assembly einzufügen, legen Sie die IncludeDebugInformation-Eigenschaft auf true fest. Wenn das Projekt Verweise auf Assemblys enthält, müssen Sie die Assemblynamen als Elemente in einer StringCollection angeben, die auf die ReferencedAssemblies-Eigenschaft des beim Aufruf der Kompilierung verwendeten CompilerParameters festgelegt ist.
Sie können eine Assembly kompilieren, die nicht auf den Datenträger, sondern in den Speicher geschrieben wird, indem Sie die GenerateInMemory-Eigenschaft auf true festlegen. Wenn eine Assembly im Speicher generiert wird, kann der Code aus der CompiledAssembly-Eigenschaft von CompilerResults einen Verweis auf die generierte Assembly abrufen. Wenn eine Assembly auf einen Datenträger geschrieben wird, können Sie aus der PathToAssembly-Eigenschaft von CompilerResults den Pfad zur generierten Assembly abrufen.
Wenn Sie eine Warnstufe angeben möchten, bei der die Kompilierung unterbrochen werden soll, legen Sie die WarningLevel-Eigenschaft auf eine ganze Zahl fest, die die Warnstufe zum Unterbrechen der Kompilierung darstellt. Sie können den Compiler auch für die Unterbrechung der Kompilierung beim Auftreten von Warnungen konfigurieren, indem Sie die TreatWarningsAsErrors-Eigenschaft auf true festlegen.
Um eine benutzerdefinierte Zeichenfolge für Befehlszeilenargumente anzugeben, die beim Aufrufen der Kompilierung verwendet werden soll, legen Sie die Zeichenfolge in der CompilerOptions-Eigenschaft fest. Wenn für den Aufruf des Compilerprozesses ein Win32-Sicherheitstoken erforderlich ist, geben Sie das Token in der UserToken-Eigenschaft an. Um in die kompilierte Assembly .NET Framework-Ressourcendateien einzufügen, fügen Sie die Namen der Ressourcendateien in der EmbeddedResources-Eigenschaft hinzu. Um in einer anderen Assembly auf die .NET Framework-Ressourcen zu verweisen, fügen Sie die Namen der Ressourcendateien in der LinkedResources-Eigenschaft hinzu. Um in der kompilierten Assembly eine Win32-Ressourcendatei einzufügen, geben Sie den Namen der Win32-Ressourcendatei in der Win32Resource-Eigenschaft an.
Hinweis
Diese Klasse enthält auf Klassenebene einen Verknüpfungsaufruf und eine Vererbungsforderung, die für alle Member gelten. Eine SecurityException wird ausgelöst, wenn der direkte Aufrufer bzw. die abgeleitete Klasse nicht über voll vertrauenswürdige Berechtigung verfügen. Ausführliche Informationen über Sicherheitsforderungen finden Sie unter Verknüpfungsaufrufe und Vererbungsforderungen.
Beispiel
Im folgenden Beispiel wird veranschaulicht, wie mithilfe von CompilerParameters verschiedene Compilereinstellungen und -optionen angegeben werden.
Public Shared Function CompileCode(provider As CodeDomProvider, _
sourceFile As String, exeFile As String) As Boolean
Dim cp As New CompilerParameters()
' Generate an executable instead of
' a class library.
cp.GenerateExecutable = True
' Set the assembly file name to generate.
cp.OutputAssembly = exeFile
' Generate debug information.
cp.IncludeDebugInformation = True
' Add an assembly reference.
cp.ReferencedAssemblies.Add("System.dll")
' Save the assembly as a physical file.
cp.GenerateInMemory = False
' Set the level at which the compiler
' should start displaying warnings.
cp.WarningLevel = 3
' Set whether to treat all warnings as errors.
cp.TreatWarningsAsErrors = False
' Set compiler argument to optimize output.
cp.CompilerOptions = "/optimize"
' Set a temporary files collection.
' The TempFileCollection stores the temporary files
' generated during a build in the current directory,
' and does not delete them after compilation.
cp.TempFiles = New TempFileCollection(".", True)
If provider.Supports(GeneratorSupport.EntryPointMethod) Then
' Specify the class that contains
' the main method of the executable.
cp.MainClass = "Samples.Class1"
End If
If provider.Supports(GeneratorSupport.Resources) Then
' Set the embedded resource file of the assembly.
' This is useful for culture-neutral resources,
' or default (fallback) resources.
cp.EmbeddedResources.Add("Default.resources")
' Set the linked resource reference files of the assembly.
' These resources are included in separate assembly files,
' typically localized for a specific language and culture.
cp.LinkedResources.Add("nb-no.resources")
End If
' Invoke compilation.
Dim cr As CompilerResults = _
provider.CompileAssemblyFromFile(cp, sourceFile)
If cr.Errors.Count > 0 Then
' Display compilation errors.
Console.WriteLine("Errors building {0} into {1}", _
sourceFile, cr.PathToAssembly)
Dim ce As CompilerError
For Each ce In cr.Errors
Console.WriteLine(" {0}", ce.ToString())
Console.WriteLine()
Next ce
Else
Console.WriteLine("Source {0} built into {1} successfully.", _
sourceFile, cr.PathToAssembly)
Console.WriteLine("{0} temporary files created during the compilation.", _
cp.TempFiles.Count.ToString())
End If
' Return the results of compilation.
If cr.Errors.Count > 0 Then
Return False
Else
Return True
End If
End Function 'CompileCode
public static bool CompileCode(CodeDomProvider provider,
String sourceFile,
String exeFile)
{
CompilerParameters cp = new CompilerParameters();
// Generate an executable instead of
// a class library.
cp.GenerateExecutable = true;
// Set the assembly file name to generate.
cp.OutputAssembly = exeFile;
// Generate debug information.
cp.IncludeDebugInformation = true;
// Add an assembly reference.
cp.ReferencedAssemblies.Add( "System.dll" );
// Save the assembly as a physical file.
cp.GenerateInMemory = false;
// Set the level at which the compiler
// should start displaying warnings.
cp.WarningLevel = 3;
// Set whether to treat all warnings as errors.
cp.TreatWarningsAsErrors = false;
// Set compiler argument to optimize output.
cp.CompilerOptions = "/optimize";
// Set a temporary files collection.
// The TempFileCollection stores the temporary files
// generated during a build in the current directory,
// and does not delete them after compilation.
cp.TempFiles = new TempFileCollection(".", true);
if (provider.Supports(GeneratorSupport.EntryPointMethod))
{
// Specify the class that contains
// the main method of the executable.
cp.MainClass = "Samples.Class1";
}
if (provider.Supports(GeneratorSupport.Resources))
{
// Set the embedded resource file of the assembly.
// This is useful for culture-neutral resources,
// or default (fallback) resources.
cp.EmbeddedResources.Add("Default.resources");
// Set the linked resource reference files of the assembly.
// These resources are included in separate assembly files,
// typically localized for a specific language and culture.
cp.LinkedResources.Add("nb-no.resources");
}
// Invoke compilation.
CompilerResults cr = provider.CompileAssemblyFromFile(cp, sourceFile);
if(cr.Errors.Count > 0)
{
// Display compilation errors.
Console.WriteLine("Errors building {0} into {1}",
sourceFile, cr.PathToAssembly);
foreach(CompilerError ce in cr.Errors)
{
Console.WriteLine(" {0}", ce.ToString());
Console.WriteLine();
}
}
else
{
Console.WriteLine("Source {0} built into {1} successfully.",
sourceFile, cr.PathToAssembly);
Console.WriteLine("{0} temporary files created during the compilation.",
cp.TempFiles.Count.ToString());
}
// Return the results of compilation.
if (cr.Errors.Count > 0)
{
return false;
}
else
{
return true;
}
}
static bool CompileCode( CodeDomProvider^ provider,
String^ sourceFile,
String^ exeFile )
{
CompilerParameters^ cp = gcnew CompilerParameters;
if ( !cp)
{
return false;
}
// Generate an executable instead of
// a class library.
cp->GenerateExecutable = true;
// Set the assembly file name to generate.
cp->OutputAssembly = exeFile;
// Generate debug information.
cp->IncludeDebugInformation = true;
// Add an assembly reference.
cp->ReferencedAssemblies->Add( "System.dll" );
// Save the assembly as a physical file.
cp->GenerateInMemory = false;
// Set the level at which the compiler
// should start displaying warnings.
cp->WarningLevel = 3;
// Set whether to treat all warnings as errors.
cp->TreatWarningsAsErrors = false;
// Set compiler argument to optimize output.
cp->CompilerOptions = "/optimize";
// Set a temporary files collection.
// The TempFileCollection stores the temporary files
// generated during a build in the current directory,
// and does not delete them after compilation.
cp->TempFiles = gcnew TempFileCollection( ".",true );
if ( provider->Supports( GeneratorSupport::EntryPointMethod ) )
{
// Specify the class that contains
// the main method of the executable.
cp->MainClass = "Samples.Class1";
}
if ( provider->Supports( GeneratorSupport::Resources ) )
{
// Set the embedded resource file of the assembly.
// This is useful for culture-neutral resources,
// or default (fallback) resources.
cp->EmbeddedResources->Add( "Default.resources" );
// Set the linked resource reference files of the assembly.
// These resources are included in separate assembly files,
// typically localized for a specific language and culture.
cp->LinkedResources->Add( "nb-no.resources" );
}
// Invoke compilation.
CompilerResults^ cr = provider->CompileAssemblyFromFile( cp, sourceFile );
if ( cr->Errors->Count > 0 )
{
// Display compilation errors.
Console::WriteLine( "Errors building {0} into {1}",
sourceFile, cr->PathToAssembly );
for each ( CompilerError^ ce in cr->Errors )
{
Console::WriteLine( " {0}", ce->ToString() );
Console::WriteLine();
}
}
else
{
Console::WriteLine( "Source {0} built into {1} successfully.",
sourceFile, cr->PathToAssembly );
}
// Return the results of compilation.
if ( cr->Errors->Count > 0 )
{
return false;
}
else
{
return true;
}
}
.NET Framework-Sicherheit
- SecurityPermission zum Aufrufen von CompilerParameters-Membern. Anforderungswert: LinkDemand, Benannte Berechtigungssätze: FullTrust.
- SecurityPermission für eine Ableitung von der CompilerParameters-Klasse. Anforderungswert: InheritanceDemand, Benannte Berechtigungssätze: FullTrust.
Vererbungshierarchie
System.Object
System.CodeDom.Compiler.CompilerParameters
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0