Você está offline; aguardando reconexão

Como compilar código usando o compilador translation from VPE for Csharp programaticamente

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 304655
Para obter uma Visual Basic .NET versão deste artigo, consulte 304654.
Sumário
O .NET Framework expõe classes que permitem que você acessar programaticamente o compilador de linguagem translation from VPE for Csharp. Isso pode ser útil se você deseja gravar seus próprios utilitários compilar código. Este artigo fornece código de exemplo que permite que você compilar o código de uma fonte de texto. O aplicativo permite ou apenas criar o arquivo executável ou criar o arquivo executável e executá-lo. Quaisquer erros que ocorram durante o processo de compilação são exibidos no formulário.
Mais Informações

Etapa 1: requisitos

  • O Visual Studio
  • Compilador de linguagem translation from VPE for Csharp Visual

Etapa 2: Como programaticamente compile código

O .NET Framework fornece a interface de execução do compilador ICodeCompiler. A classe CSharpCodeProvider implementa essa interface e fornece acesso a instâncias do gerador de código translation from VPE for Csharp e do compilador de código. O código de exemplo a seguir cria uma instância de CSharpCodeProvider e o usa para obter uma referência a uma interface ICodeCompiler.
CSharpCodeProvider codeProvider = new CSharpCodeProvider();ICodeCompiler icc = codeProvider.CreateCompiler();				

Depois de ter uma referência a uma interface ICodeCompiler, você pode usá-lo para compilar seu código-fonte. Você irá passar parâmetros para o compilador usando a classe CompilerParameters . Aqui está um exemplo:
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();parameters.GenerateExecutable = true;parameters.OutputAssembly = Output;CompilerResults results = icc.CompileAssemblyFromSource(parameters,SourceString);				

O código acima usa o objeto CompilerParameters para informar ao compilador que você deseja gerar um arquivo executável (em oposição a uma DLL) e que você deseja que o assembly resultante para o disco de saída. A chamada para CompileAssemblyFromSource é onde o assembly é compilado. Este método usa o objeto de parâmetros e o código-fonte, que é uma seqüência de caracteres. Após compilar seu código, você pode verificar para ver se houve quaisquer erros de compilação. Você usar o valor de retorno de CompileAssemblyFromSource , que é um objeto CompilerResults. Este objeto contém uma coleção de erros, que contém erros que ocorreram durante a compilação.
   if (results.Errors.Count > 0)   {    foreach(CompilerError CompErr in results.Errors)    {     textBox2.Text = textBox2.Text +         "Line number " + CompErr.Line +          ", Error Number: " + CompErr.ErrorNumber +          ", '" + CompErr.ErrorText + ";" +          Environment.NewLine + Environment.NewLine;    }   }				

Há outras opções para compilação, como a compilação de um arquivo. Você também pode lote compilação, o que significa que você pode compilar vários arquivos ou fontes ao mesmo tempo. Obter informações adicionais sobre essas classes podem ser encontradas no MSDN Online Library:

Etapa 3: Exemplo de procedimento passo a passo

  1. Crie um novo aplicativo Visual translation from VPE for Csharp .NET Windows. O Form1 é criado por padrão.
  2. Adicionar um controle Button para Form1 e, em seguida, alterar sua propriedade Text para criar .
  3. Adicione outro controle de botão ao Form1 e altere sua propriedade Text para Executar .
  4. Adicione dois controles TextBox ao Form1, defina a propriedade Multiline para ambos os controles como True e, em seguida, dimensionar esses controles de modo que você pode colar várias linhas de texto em cada um deles.
  5. No editor de código, abra o arquivo de origem Form1.cs.
  6. Na classe Form1 , colar o seguinte botão, clique em manipulador.
    private void button1_Click(object sender, System.EventArgs e){    CSharpCodeProvider codeProvider = new CSharpCodeProvider();    ICodeCompiler icc = codeProvider.CreateCompiler();    string Output = "Out.exe";    Button ButtonObject = (Button)sender;    textBox2.Text = "";    System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();    //Make sure we generate an EXE, not a DLL    parameters.GenerateExecutable = true;    parameters.OutputAssembly = Output;    CompilerResults results = icc.CompileAssemblyFromSource(parameters, textBox1.Text);    if (results.Errors.Count > 0)    {        textBox2.ForeColor = Color.Red;        foreach (CompilerError CompErr in results.Errors)        {            textBox2.Text = textBox2.Text +                        "Line number " + CompErr.Line +                        ", Error Number: " + CompErr.ErrorNumber +                        ", '" + CompErr.ErrorText + ";" +                        Environment.NewLine + Environment.NewLine;        }    }    else    {        //Successful Compile        textBox2.ForeColor = Color.Blue;        textBox2.Text = "Success!";        //If we clicked run then launch our EXE        if (ButtonObject.Text == "Run") Process.Start(Output);    }}Add the beginning of the file, add these using statements:using System.CodeDom.Compiler;using System.Diagnostics;using Microsoft.CSharp;
    Observação se você estiver usando Visual Studio 2005 ou Visual Studio 2008, a classe CSharpCodeProvider foi substituída. Você pode usar a classe CodeDomProvider em vez disso, como demonstra a implementação de Button1_Click a seguir.
    private void button1_Click(object sender, System.EventArgs e){    CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");    string Output = "Out.exe";    Button ButtonObject = (Button)sender;    textBox2.Text = "";    System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();    //Make sure we generate an EXE, not a DLL    parameters.GenerateExecutable = true;    parameters.OutputAssembly = Output;    CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, textBox1.Text);    if (results.Errors.Count > 0)    {        textBox2.ForeColor = Color.Red;        foreach (CompilerError CompErr in results.Errors)        {            textBox2.Text = textBox2.Text +                        "Line number " + CompErr.Line +                        ", Error Number: " + CompErr.ErrorNumber +                        ", '" + CompErr.ErrorText + ";" +                        Environment.NewLine + Environment.NewLine;        }    }    else    {        //Successful Compile        textBox2.ForeColor = Color.Blue;        textBox2.Text = "Success!";        //If we clicked run then launch our EXE        if (ButtonObject.Text == "Run") Process.Start(Output);    }}Add the beginning of the file, add these using statements:using System.CodeDom.Compiler;using System.Diagnostics;
  7. No Form1.cs, localize o construtor de Form1.
  8. Após a chamada para InitializeComponent no construtor Form1, adicione o código a seguir para conectar o botão clique manipulador para os dois botões que você adicionou ao Form1.
    public Form1(){    InitializeComponent();    this.button1.Click += new System.EventHandler(this.button1_Click);    this.button2.Click += new System.EventHandler(this.button1_Click);}
  9. Execute o projeto. Depois de Form1 é carregado, clique no botão Construir . Observe que você obtenha um erro do compilador.
  10. Em seguida, copie o seguinte texto na caixa de texto, substituindo qualquer texto existente:
    using System;namespace HelloWorld{	/// <summary>	/// Summary description for Class1.	/// </summary>	class HelloWorldClass	{		static void Main(string[] args)		{			Console.WriteLine("Hello World!");			Console.ReadLine();		}	}}					
  11. Clique em Construir novamente. A compilação deve ser bem-sucedida.
  12. Clique em Executar , e ele irá compilar o código e execute o arquivo executável resultante. A compilação cria um arquivo executável chamado "Out.exe", que é salvo na mesma pasta como o aplicativo que você está executando.

    Observação: Você pode modificar o código na caixa de texto para ver erros do compilador diferentes. Por exemplo, exclua uma do ponto-e-vírgula e recriar o código.
  13. Por fim, modifique o código na caixa de texto outra linha de texto na janela do console de saída. Clique em Executar para ver a saída.
ICodeCompiler CSharpCodeProvider CompilerParameters

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 304655 - Última Revisão: 07/30/2008 22:45:07 - Revisão: 3.1

Microsoft Visual C# 2008 Express Edition, Microsoft .NET Framework 1.0

  • kbmt kbsweptvs2008 kbbcl kbcompiler kbhowto kbprod2web KB304655 KbMtpt
Comentários
d"; document.getElementsByTagName("head")[0].appendChild(m);