Opções do compilador C# que controlam a saída do compilador

As opções a seguir controlam a geração de saída do compilador.

MSBuild csc.exe Descrição
DocumentationFile -doc: Gere o arquivo de documento XML de /// comentários.
Outputassembly -out: Especifique o arquivo de assembly de saída.
Platformtarget -platform: Especifique a CPU da plataforma de destino.
ProduceReferenceAssembly -refout: Gere um assembly de referência.
Targettype -target: Especifique o tipo do assembly de saída.

DocumentationFile

A opção DocumentationFile permite que você coloque comentários de documentação em um arquivo XML. Para saber mais sobre como documentar seu código, consulte Marcas recomendadas para comentários de documentação. O valor especifica o caminho para o arquivo XML de saída. O arquivo XML contém os comentários nos arquivos de código-fonte da compilação.

<DocumentationFile>path/to/file.xml</DocumentationFile>

O arquivo de código-fonte que contém instruções Main ou de nível superior é produzido primeiro no XML. Geralmente, você deseja usar o arquivo .xml gerado com o IntelliSense. O .xml arquivo deve ser o mesmo que o nome do assembly. O .xml arquivo deve estar no mesmo diretório que o assembly. Quando o assembly é referenciado em um projeto Visual Studio, o arquivo.xml é encontrado também. Para obter mais informações sobre como gerar comentários de código, consulte Fornecendo comentários de código. A menos que você compile com <TargetType:Module>, file conterá <assembly></assembly> marcas e especificando o nome do arquivo que contém o manifesto do assembly para o arquivo de saída. Para exemplos, consulte Como usar os recursos de documentação XML.

Observação

A opção DocumentationFile se aplica a todos os arquivos no projeto. Para desabilitar avisos relacionados aos comentários de documentação para um arquivo ou uma seção específica do código, use #pragma warning.

Essa opção pode ser usada em qualquer projeto no estilo SDK do .NET. Para obter mais informações, consulte a propriedade DocumentationFile.

Outputassembly

A opção OutputAssembly especifica o nome do arquivo de saída. O caminho de saída especifica a pasta em que a saída do compilador é colocada.

<OutputAssembly>folder</OutputAssembly>

Especifique o nome completo e a extensão do arquivo que você deseja criar. Se você não especificar o nome do arquivo de saída, MSBuild usará o nome do projeto para especificar o nome do assembly de saída. Projetos de estilo antigo usam as seguintes regras:

  • Um .exe terá seu nome do arquivo de código-fonte que contém o método Main ou instruções de nível superior.
  • Um arquivo .dll ou .netmodule extrairá seu nome do primeiro arquivo de código-fonte.

Os módulos produzidos como parte de uma compilação se tornam arquivos associados a qualquer assembly também produzido na compilação. Use ildasm.exe para exibir o manifesto do assembly para ver os arquivos associados.

A opção do compilador OutputAssembly é necessária para que um exe seja o destino de um assembly amigo.

Platformtarget

Especifica qual versão do CLR pode executar o assembly.

<PlatformTarget>anycpu</PlatformTarget>
  • O anycpu (padrão) compila seu assembly para que ele seja executado em qualquer plataforma. Seu aplicativo será executado como um processo de 64 bits sempre que possível e realizará fallback para 32 bits quando apenas esse modo estiver disponível.
  • anycpu32bitpreferred compila seu assembly para que ele seja executado em qualquer plataforma. Seu aplicativo é executado no modo 32 bits em sistemas que dão suporte para aplicativos de 32 bits e 64 bits. Você pode especificar essa opção somente para projetos destinados .NET Framework 4.5 ou posterior.
  • O ARM compila seu assembly para que ele seja executado em um computador que tem um processador ARM (Advanced RISC Machine).
  • ARM64 compila o assembly para execução pelo CLR de 64 bits em um computador que tem um processador ARM (Máquina RISC Avançada) que dá suporte ao conjunto de instruções A64.
  • x64 compila o assembly para ser executado pelo CLR de 64 bits em um computador que dá suporte ao conjunto de instruções AMD64 ou EM64T.
  • x86 compila o assembly para ser executado pelo CLR compatível com x86 de 32 bits.
  • Itanium compila o assembly para ser executado pelo CLR de 64 bits em um computador com um processador Itanium.

Em um sistema operacional do Windows de 64 bits:

  • Assemblies compilados com x86 são executados no CLR de 32 bits em execução em WOW64.
  • Uma DLL compilada com o anycpu é executada no mesmo CLR que o processo no qual ele é carregado.
  • Os executáveis compilados com o anycpu são executados no CLR de 64 bits.
  • Executáveis compilados com anycpu32bitpreferred são executados no CLR de 32 bits.

A configuração anycpu32bitpreferred é válida somente para arquivos executáveis (.EXE) e requer .NET Framework 4.5 ou posterior. Para obter mais informações sobre o desenvolvimento de um aplicativo para ser executado em um sistema operacional Windows de 64 bits, consulte Aplicativos de 64 bits.

Você pode definir a opção PlatformTarget na página Propriedades de build para seu projeto Visual Studio.

O comportamento de anycpu tem algumas nuances adicionais no .NET Core e no .NET 5 e versões posteriores. Quando você definir anycpu, publique seu aplicativo e execute-o com o x86 ou o x64 dotnet.exe. Para aplicativos autossunte, a dotnet publish etapa pacotes o executável para o RID de configuração.

ProduceReferenceAssembly

A opção ProduceReferenceAssembly especifica um caminho de arquivo em que o assembly de referência deve ser produzido. Ela é traduzida para metadataPeStream na API de Eit. O filepath especifica o caminho para o assembly de referência. Geralmente, ele deve corresponder ao assembly principal. A convenção recomendada (usada por MSBuild) é colocar o assembly de referência em uma subpasta "ref/" em relação ao assembly primário.

<ProduceReferenceAssembly>filepath</ProduceReferenceAssembly>

Assemblies de referência são um tipo especial de assembly que contém apenas a quantidade mínima de metadados necessários para representar a superfície de API pública da biblioteca. Eles incluem declarações para todos os membros que são significativos ao referenciar um assembly em ferramentas de build. Assemblies de referência excluem todas as implementações de membro e declarações de membros privados. Esses membros não têm nenhum impacto observável em seu contrato de API. Para obter mais informações, consulte Assemblies de referência no Guia do .NET.

As opções ProduceReferenceAssemblye ProduceOnlyReferenceAssembly são mutuamente exclusivas.

TargetType

A opção do compilador TargetType pode ser especificada em um dos seguintes formulários:

  • library: para criar uma biblioteca de códigos. library é o valor padrão.
  • exe: para criar um .exe arquivo.
  • módulo para criar um módulo.
  • winexe para criar um Windows programa.
  • winmdobj para criar um arquivo .winmdobj intermediário.
  • appcontainerexe para criar um arquivo .exe para aplicativos Windows 8.x Store.

Observação

Para .NET Framework destinos, a menos que você especifique o módulo, essa opção faz com que um manifesto .NET Framework assembly seja colocado em um arquivo de saída. Para obter mais informações, consulte Assemblies no .NET e Atributos comuns.

<TargetType>library</TargetType>

O compilador cria apenas um manifesto do assembly por compilação. As informações sobre todos os arquivos em uma compilação são colocados no manifesto do assembly. Ao gerar vários arquivos de saída na linha de comando, apenas um manifesto do assembly pode ser criado e ele deve ir para o primeiro arquivo de saída especificado na linha de comando.

Se você criar um assembly, poderá indicar que todo ou parte do código é compatível com CLS com o CLSCompliantAttribute atributo .

biblioteca

A opção de biblioteca faz com que o compilador crie uma DLL (biblioteca de vínculo dinâmico) em vez de um arquivo executável (EXE). A DLL será criada com a extensão .dll . A menos que especificado de outra forma com a opção OutputAssembly , o nome do arquivo de saída usa o nome do primeiro arquivo de entrada. Ao criar um arquivo de .dll , um método não é necessário.

exe

A opção exe faz com que o compilador crie um executável (exe), aplicativo de console. O arquivo executável será criado com a extensão .exe. Use winexe para criar um executável de programa de Windows. A menos que especificado de outra forma com a opção OutputAssembly , o nome do arquivo de saída usa o nome do arquivo de entrada que contém o ponto de entrada (métodoMain ou instruções de nível superior). Apenas um ponto de entrada é necessário nos arquivos de código-fonte que são compilados em um arquivo de .exe. A opção de compilador StartupObject permite especificar qual classe contém o método, em casos em que seu código tem mais de uma classe com um método.

module

Essa opção faz com que o compilador não gere um manifesto do assembly. Por padrão, o arquivo de saída criado pela compilação com essa opção terá uma extensão de . netmodule. Um arquivo que não tem um manifesto do assembly não pode ser carregado pelo tempo de execução do .NET. No entanto, esse arquivo pode ser incorporado ao manifesto do assembly de um assembly com AddModules. Se mais de um módulo for criado em uma única compilação, tipos internos em um módulo estarão disponíveis para outros módulos na compilação. Quando o código em um módulo faz referência internal a tipos em outro módulo, ambos os módulos devem ser incorporados a um manifesto do assembly, com internal. não há suporte para a criação de um módulo no ambiente de desenvolvimento Visual Studio.

winexe

a opção winexe faz com que o compilador crie um executável (EXE), Windows programa. O arquivo executável será criado com a extensão .exe. um programa de Windows é um que fornece uma interface do usuário da biblioteca do .net ou com as APIs do Windows. Use o exe para criar um aplicativo de console. A menos que especificado de outra forma com a opção OutputAssembly , o nome do arquivo de saída usa o nome do arquivo de entrada que contém o método. Um e apenas um Main método é necessário nos arquivos de código-fonte que são compilados em um arquivo de .exe. A opção StartupObject permite especificar qual classe contém o método, em casos em que seu código tem mais de uma classe com um método.

winmdobj

se você usar a opção winmdobj , o compilador criará um arquivo intermediário . winmdobj que poderá ser convertido em um arquivo binário Windows Runtime (. winmd). O arquivo . winmd pode então ser consumido por programas JavaScript e C++, além de programas de linguagem gerenciada.

A configuração winmdobj indica para o compilador que um módulo intermediário é necessário. o arquivo . winmdobj pode ser alimentado por meio da ferramenta de exportação para produzir um arquivo de metadados Windows (. winmd). o arquivo . winmd contém o código da biblioteca original e os metadados de winmd que são usados pelo JavaScript ou C++ e pelo Windows Runtime. A saída de um arquivo que é compilado usando a opção de compilador winmdobj é usada somente como entrada para a ferramenta de exportação WimMDExp. O próprio arquivo . winmdobj não é referenciado diretamente. A menos que você use a opção OutputAssembly , o nome do arquivo de saída usa o nome do primeiro arquivo de entrada. Um Main método não é necessário.

appcontainerexe

se você usar a opção de compilador appcontainerexe , o compilador criará um arquivo Windows executável (.exe) que deve ser executado em um contêiner de aplicativo. essa opção é equivalente a -target: winexe , mas é projetada para aplicativos da loja Windows 8. x.

Para exigir que o aplicativo seja executado em um contêiner de aplicativos, esta opção define um bit no arquivo PE. Quando esse bit estiver definido, ocorrerá um erro se o método CreateProcess tentar inicializar o arquivo executável fora de um contêiner de aplicativos. A menos que você use a opção OutputAssembly , o nome do arquivo de saída usa o nome do arquivo de entrada que contém o método.