Menu

Como compilar uma aplicação C# sem o Visual Studio

A partir do Windows XP, todos os computadores com Windows possuem o compiladore instalado nativamente.

Por exemplo, neste caminho: C:\Windows\Microsoft.NET\Framework\v4.0.30319

Esta pasta possuí todos os arquivos que a VM (CLR) precisa para rodar aplicações .net na versão 4.0.30319, inclusive um arquivo chamado "csc.exe" que é uma abreviação para CSharp Compiler.

Tendo aprendido isso, podemos abrir o bloco de notas e colar o seguinte código e salve como txt, de preferencia em uma nova pasta:

using System;
class Programa
{
	static void Main(string[] args)
    {
		Console.WriteLine("Olá mundo");
    }
}

Abrir o CMD, entrar no ocal onde o arquivo foi salvo. Dentro da nova pasta onde salvamos o arquivo. digite o caminho para o compilador do C#: C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe NOMEDOARQUIVO.txt.

Pressione Enter.

Se formos olhar o que tem dentro do novo diretório, vamos encontrar um novo arquivo NOMEDOARQUIVO.exe.

Se voltarmos ao CMD e digitar NOMEDOARQUIVO.exe aparecerá o "Olá Mundo" que escrevemos!

C# - Considerações iniciais

Antes de começar a escrever códigos em C# é de bom tom entender o ecossitema da Microsoft suporta esta linguagem!

Antigamente, para se reescrever uma aplicação de C para VB, por exemplo, não bastava reescrever a aplicação, era necessário reescrever a biblioteca desta aplicação também. E para o caso de mudar o Sistema Operacional (SO)? Tinha que reescrever a aplicação e a biblioteca para cada SO.

Daí, começando pelo SO, a Microsoft desenvolveu uma Máquina Virtual (Virtual Machina - VM) que roda em qualquer SO (Sim, assim como Java). Dessa forma, escreveremos a aplicação para a VM e não para a máquina real (com memória RAM, processador físico.. cooler)

Dessa forma, não precisamos mais de bibliotecas e aplicações especificas para cada linguagem, podemos ter uma biblioteca e uma aplicação genérica, chamada de MSIL (Microsoft Intermediate Language), que compilará nosso código para a VM.

Em outras palavras, podemos escrever códigos em C#, VB, F# e eles serão compilados para uma aplicação escrita em MSIL que conversará com uma biblioteca MSIL. A VM conhece essa biblioteca e qualquer SO pode implementar nossa VM, sem complicações. Se quisermos ter um projeto escrito metade em C# e metade em VB, podemos, pois ambos são compilados para MSIL.

Dessa forma, temos essa hierarquia:

  • Linguagens: C#, VB, F# ...
  • Aplicação MSIL
  • Biblioteca MSIL
  • Máquina Virtual
  • Sistemas Operacionais (Windows, Linux, PS4...)
Agora, basta conhecermos os nomes específicos de cada uma das hierarquias no mundo C#. A Máquina Virtual é chamada de CLR - Common Language  Runtime. A Biblioteca MSIL é chamada de .NET Framework e a Aplicação MSIL é a aplicação .NET.

Num exemplo, o código escrito em C#:

Console.WriteLine("Olá mundo");

É compilado para um formato MSIL, tipo esse:

nop 
ldstr       "Olá mundo"
call        System.Console.WriteLine
nop  
ret

Toda linguagem .NET será compilada para esse mesmo formato que é excecutado pela CLR (ou VM). E agora, no momento da execução desse código a VM vai converter o MSIL em linguagem de máquina (linguagem que o processador entende - aquele mesmo da AMD ou Intel).

E daí vem mais um conceito, o Just-In-Time Compiler (ou Jitter) que significa que o compilador apenas executa código no momento que aplicação roda.. dessa forma, o CLR consegue compilar o código para o processador específico que a aplicação roda."