CSharpCodeProvider Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece acesso às instâncias do gerador de código e do compilador de código C#.
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
- Herança
Exemplos
O exemplo a seguir usa o provedor de código C# ou Visual Basic para compilar um arquivo de origem. O exemplo verifica a extensão de arquivo de entrada e usa o correspondente CSharpCodeProvider ou VBCodeProvider para compilação. O arquivo de entrada é compilado em um arquivo executável e todos os erros de compilação são exibidos no console.
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
Comentários
Essa classe fornece métodos que podem ser usados para recuperar instâncias do C# ICodeGenerator e ICodeCompiler implementações.
Observação
Esta classe contém uma demanda de link e uma demanda de herança no nível de classe que se aplica a todos os membros. Um SecurityException é lançado quando o chamador imediato ou a classe derivada não tem permissão de confiança total.
Construtores
CSharpCodeProvider() |
Inicializa uma nova instância da classe CSharpCodeProvider. |
CSharpCodeProvider(IDictionary<String,String>) |
Inicializa uma nova instância da classe CSharpCodeProvider usando as opções de provedor especificadas. |
Propriedades
CanRaiseEvents |
Obtém um valor que indica se o componente pode acionar um evento. (Herdado de Component) |
Container |
Obtém o IContainer que contém o Component. (Herdado de Component) |
DesignMode |
Obtém um valor que indica se o Component está no modo de design no momento. (Herdado de Component) |
Events |
Obtém a lista de manipuladores de eventos que estão anexados a este Component. (Herdado de Component) |
FileExtension |
Obtém a extensão de nome de arquivo a ser usada ao criar arquivos de código-fonte. |
LanguageOptions |
Obtém um identificador de recursos de idioma. (Herdado de CodeDomProvider) |
Site |
Obtém ou define o ISite do Component. (Herdado de Component) |
Métodos
CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[]) |
Compila um assembly com base nas árvores System.CodeDom contidas na matriz especificada de objetos CodeCompileUnit, usando as configurações de compilador especificadas. (Herdado de CodeDomProvider) |
CompileAssemblyFromFile(CompilerParameters, String[]) |
Compila um assembly do código-fonte contido nos arquivos especificados, usando as configurações de compilador especificadas. (Herdado de CodeDomProvider) |
CompileAssemblyFromSource(CompilerParameters, String[]) |
Compila um assembly da matriz especificada de cadeias de caracteres que contém o código-fonte, usando as configurações do compilador especificadas. (Herdado de CodeDomProvider) |
CreateCompiler() |
Obsoleto.
Obsoleto.
Obtém uma instância do compilador de código C#. |
CreateEscapedIdentifier(String) |
Cria um identificador de escape para o valor especificado. (Herdado de CodeDomProvider) |
CreateGenerator() |
Obsoleto.
Obsoleto.
Obtém uma instância do gerador de código C#. |
CreateGenerator(String) |
Quando substituído em uma classe derivada, cria um novo gerador de código usando o nome do arquivo especificado para saída. (Herdado de CodeDomProvider) |
CreateGenerator(TextWriter) |
Quando substituído em uma classe derivada, cria um novo gerador de código usando o TextWriter especificado para saída. (Herdado de CodeDomProvider) |
CreateObjRef(Type) |
Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
CreateParser() |
Obsoleto.
Obsoleto.
Quando substituído em uma classe derivada, cria um novo analisador de código. (Herdado de CodeDomProvider) |
CreateValidIdentifier(String) |
Cria um identificador válido para o valor especificado. (Herdado de CodeDomProvider) |
Dispose() |
Libera todos os recursos usados pelo Component. (Herdado de Component) |
Dispose(Boolean) |
Libera os recursos não gerenciados usados pelo Component e opcionalmente libera os recursos gerenciados. (Herdado de Component) |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions) |
Gera código para a unidade de compilação CodeDOM (Modelo de Objeto do Documento de Código) especificada e envia-a para o text writer especificado, usando as opções especificadas. (Herdado de CodeDomProvider) |
GenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions) |
Gera código para a expressão CodeDOM (Modelo de Objeto do Documento de Código) especificada e o envia para o text writer especificado, usando as opções especificadas. (Herdado de CodeDomProvider) |
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions) |
Gera um código para o membro de classe especificado usando as opções do gerador de código e do text writer especificadas. |
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions) |
Gera código para a declaração de membro CodeDOM (Modelo de Objeto do Documento de Código) especificada e o envia para o text writer especificado, usando as opções especificadas. (Herdado de CodeDomProvider) |
GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions) |
Gera código para o namespace CodeDOM (Modelo de Objeto do Documento de Código) especificado e envia-o para o text writer especificado, usando as opções especificadas. (Herdado de CodeDomProvider) |
GenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions) |
Gera código para a instrução CodeDOM (Modelo de Objeto do Documento de Código) especificada e envia-o para o text writer especificado, usando as opções especificadas. (Herdado de CodeDomProvider) |
GenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions) |
Gera código para a declaração de tipo CodeDOM (Modelo de Objeto do Documento de Código) especificada e envia-o para o text writer especificado, usando as opções especificadas. (Herdado de CodeDomProvider) |
GetConverter(Type) |
Obtém um TypeConverter para o tipo de objeto especificado. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetLifetimeService() |
Obsoleto.
Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância. (Herdado de MarshalByRefObject) |
GetService(Type) |
Retorna um objeto que representa um serviço fornecido pelo Component ou pelo seu Container. (Herdado de Component) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
GetTypeOutput(CodeTypeReference) |
Obtém o tipo indicado pelo CodeTypeReference especificado. (Herdado de CodeDomProvider) |
InitializeLifetimeService() |
Obsoleto.
Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância. (Herdado de MarshalByRefObject) |
IsValidIdentifier(String) |
Retorna um valor que indica se o valor especificado é um identificador válido para a linguagem de programação atual. (Herdado de CodeDomProvider) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto MarshalByRefObject atual. (Herdado de MarshalByRefObject) |
Parse(TextReader) |
Compila o código lido do fluxo de texto especificado em um CodeCompileUnit. (Herdado de CodeDomProvider) |
Supports(GeneratorSupport) |
Retorna um valor que indica se o suporte à geração de código especificado é fornecido. (Herdado de CodeDomProvider) |
ToString() |
Retorna um String que contém o nome do Component, se houver. Esse método não deve ser substituído. (Herdado de Component) |
Eventos
Disposed |
Ocorre quando o componente é disposto por uma chamada ao método Dispose(). (Herdado de Component) |