Build pela linha de comando com csc.exeCommand-line build with csc.exe

Você pode invocar o compilador do C#, digitando o nome do seu arquivo executável (csc.exe) em um prompt de comando.You can invoke the C# compiler by typing the name of its executable file (csc.exe) at a command prompt.

Se você usar a janela do Prompt de Comando do Desenvolvedor do Visual Studio, todas as variáveis de ambiente necessárias serão definidas para você.If you use the Developer Command Prompt for Visual Studio window, all the necessary environment variables are set for you. Para obter informações sobre como acessar essa ferramenta, consulte o tópico Prompt de comando do desenvolvedor para o Visual Studio.For information on how to access this tool, see the Developer Command Prompt for Visual Studio topic.

Se você usa uma janela de Prompt de Comando padrão, deve ajustar seu caminho antes de invocar o csc.exe de qualquer subdiretório em seu computador.If you use a standard Command Prompt window, you must adjust your path before you can invoke csc.exe from any subdirectory on your computer. Você também deve executar o vsvars32.bat para definir as variáveis de ambiente adequadas para dar suporte aos builds de linha de comando.You also must run vsvars32.bat to set the appropriate environment variables to support command-line builds. Para obter mais informações sobre o vsvars32.bat, incluindo instruções sobre como localizá-lo e executá-lo, consulte Como: configurar variáveis de ambiente para a linha de comando do Visual Studio.For more information about vsvars32.bat, including instructions for how to find and run it, see How to: Set Environment Variables for the Visual Studio Command Line.

Se você estiver trabalhando em um computador que tem apenas o Windows Software Development Kit (SDK)Windows Software Development Kit (SDK), você poderá usar o compilador do C# no Prompt de Comando do SDK, que é aberto na opção de menu Microsoft .NET Framework SDK.If you're working on a computer that has only the Windows Software Development Kit (SDK)Windows Software Development Kit (SDK), you can use the C# compiler at the SDK Command Prompt, which you open from the Microsoft .NET Framework SDK menu option.

Você também pode usar o MSBuild para compilar programas em C# programaticamente.You can also use MSBuild to build C# programs programmatically. Para mais informações, consulte MSBuild.For more information, see MSBuild.

O arquivo executável csc.exe normalmente está localizado na pasta Microsoft.NET\Framework\<Versão> no diretório Windows.The csc.exe executable file usually is located in the Microsoft.NET\Framework\<Version> folder under the Windows directory. O local pode variar dependendo da configuração exata de um computador específico.Its location might vary depending on the exact configuration of a particular computer. Se mais de uma versão do .NET Framework estiver instalada em seu computador, você encontrará várias versões desse arquivo.If more than one version of the .NET Framework is installed on your computer, you'll find multiple versions of this file. Para obter mais informações sobre essas instalações, consulte Determinando qual versão do .NET Framework está instalada.For more information about such installations, see How to: determine which versions of the .NET Framework are installed.

Dica

Quando você compila um projeto usando o IDE do Visual Studio, você pode exibir o comando csc e suas opções de compilador associadas na janela Saída.When you build a project by using the Visual Studio IDE, you can display the csc command and its associated compiler options in the Output window. Para exibir essas informações, siga as instruções em Como exibir, salvar e configurar arquivos de log de build, para alterar o nível de detalhes dos dados de log para Normal ou Detalhado.To display this information, follow the instructions in How to: View, Save, and Configure Build Log Files to change the verbosity level of the log data to Normal or Detailed. Depois de recompilar o projeto, pesquise na janela Saída por csc para localizar a invocação do compilador do C#.After you rebuild your project, search the Output window for csc to find the invocation of the C# compiler.

Neste tópicoIn this topic

Regras para sintaxe de linha de comando para o compilador do C#Rules for command-line syntax for the C# compiler

O compilador do C# usa as seguintes regras para interpretar os argumentos fornecidos na linha de comando do sistema operacional:The C# compiler uses the following rules when it interprets arguments given on the operating system command line:

  • Os argumentos são delimitados por espaço em branco, que é um espaço ou uma tabulação.Arguments are delimited by white space, which is either a space or a tab.

  • O caractere de acento circunflexo (^) não é reconhecido como um caractere de escape ou um delimitador.The caret character (^) is not recognized as an escape character or delimiter. O caractere é tratado pelo analisador de linha de comando no sistema operacional antes de ser passado para a matriz argv no programa.The character is handled by the command-line parser in the operating system before it's passed to the argv array in the program.

  • Uma cadeia de caracteres entre aspas duplas ("cadeia de caracteres") é interpretada como um único argumento, independentemente do espaço em branco que está contido nela.A string enclosed in double quotation marks ("string") is interpreted as a single argument, regardless of white space that is contained within. Uma cadeia de caracteres entre aspas pode ser inserida em um argumento.A quoted string can be embedded in an argument.

  • Aspas duplas precedidas por uma barra invertida (\") são interpretados como um caractere literal de aspas duplas (").A double quotation mark preceded by a backslash (\") is interpreted as a literal double quotation mark character (").

  • As barras invertidas são interpretadas literalmente, a menos que precedam imediatamente as aspas duplas.Backslashes are interpreted literally, unless they immediately precede a double quotation mark.

  • Se um número par de barras invertidas for seguido por aspas duplas, uma barra invertida será colocada na matriz argv para cada par de barras invertidas e aspas duplas serão interpretadas como um delimitador de cadeia de caracteres.If an even number of backslashes is followed by a double quotation mark, one backslash is put in the argv array for every pair of backslashes, and the double quotation mark is interpreted as a string delimiter.

  • Se um número ímpar de barras invertidas for seguido por aspas duplas, uma barra invertida será colocada na matriz argv para cada par de barras invertidas e aspas duplas serão "escapadas" pela barra invertida restante.If an odd number of backslashes is followed by a double quotation mark, one backslash is put in the argv array for every pair of backslashes, and the double quotation mark is "escaped" by the remaining backslash. Isso fará com que aspas duplas (") literais sejam adicionadas na argv.This causes a literal double quotation mark (") to be added in argv.

Linhas de comando de exemplo para o compilador do C#Sample command lines for the C# compiler

  • Compila o File.cs produzindo o File.exe:Compiles File.cs producing File.exe:
csc File.cs 
  • Compila o File.cs produzindo o File.dll:Compiles File.cs producing File.dll:
csc -target:library File.cs
  • Compila o File.cs e cria o My.exe:Compiles File.cs and creates My.exe:
csc -out:My.exe File.cs
  • Compila todos os arquivos do C# no diretório atual, com otimizações habilitadas e define o símbolo de DEPURAÇÃO.Compiles all the C# files in the current directory with optimizations enabled and defines the DEBUG symbol. A saída é File2.exe:The output is File2.exe:
csc -define:DEBUG -optimize -out:File2.exe *.cs
  • Compila todos os arquivos do C# no diretório atual, produzindo uma versão de depuração de File2.dll.Compiles all the C# files in the current directory producing a debug version of File2.dll. Logotipos e avisos não são exibidos:No logo and no warnings are displayed:
csc -target:library -out:File2.dll -warn:0 -nologo -debug *.cs
  • Compila todos os arquivos do C# no diretório atual para Something.xyz (uma DLL):Compiles all the C# files in the current directory to Something.xyz (a DLL):
csc -target:library -out:Something.xyz *.cs

Diferenças entre as saídas dos compiladores do C# e do C++Differences between C# compiler and C++ compiler output

Não há arquivos de objeto (.obj) criados como resultado da invocação do compilador do C#. Os arquivos de saída são criados diretamente.There are no object (.obj) files created as a result of invoking the C# compiler; output files are created directly. Como um resultado disso, o compilador do C# não precisa de um vinculador.As a result of this, the C# compiler does not need a linker.

Consulte tambémSee also