Opções do compilador C# que especificam recursos

As opções a seguir controlam como o compilador C# cria ou importa recursos do Win32. A nova sintaxe MSBuild é mostrada em Negrito. A sintaxe csc.exe mais antiga é mostrada em code style.

  • Win32Resource / -win32res: especifique um arquivo de recurso Win32 (.res).
  • Win32Icon / -win32icon: referencie metadados do arquivo ou arquivos do assembly especificados.
  • Win32Manifest / -win32manifest: especifique um arquivo de manifesto Win32 (.xml).
  • NoWin32Manifest / -nowin32manifest: não inclua o manifesto padrão do Win32.
  • Recursos / -resource: insira o recurso especificado (forma curta: /res).
  • LinkResources / -linkresources: vincule o recurso especificado a esse assembly.

Win32Resource

A opção Win32Resource insere um recurso do Win32 no arquivo de saída.

<Win32Resource>filename</Win32Resource>

filename é o arquivo de recurso que você deseja adicionar ao seu arquivo de saída. Um recurso do Win32 pode conter informações de versão ou de bitmap (ícone) que ajudariam a identificar seu aplicativo no Explorador de Arquivos. Se você não especificar essa opção, o compilador gerará informações de versão com base na versão do assembly.

Win32Icon

A opção Win32Icon insere um arquivo .ico no arquivo de saída, que fornece ao arquivo de saída a aparência desejada no Explorador de Arquivos.

<Win32Icon>filename</Win32Icon>

filename é o arquivo .ico que você deseja adicionar ao seu arquivo de saída. Um arquivo .ico pode ser criado com o Compilador de Recurso. O Compilador de Recurso é invocado quando você compila um programa do Visual C++; um arquivo .ico é criado com base no arquivo .rc.

Win32Manifest

Use a opção Win32Manifest para especificar um arquivo de manifesto do aplicativo Win32 definido pelo usuário para ser inserido em um arquivo PE do projeto.

<Win32Manifest>filename</Win32Manifest>

filename é o nome e o local do arquivo de manifesto personalizado. Por padrão, o compilador C# insere um manifesto de aplicativo que especifica um nível de execução solicitado de "asInvoker". Ele cria o manifesto na mesma pasta na qual o executável é criado. Se você quiser fornecer um manifesto personalizado, por exemplo, para especificar um nível de execução solicitado de "highestAvailable" ou "requireAdministrator", use esta opção para especificar o nome do arquivo.

Observação

Essa opção e a opção Win32Resources são mutuamente exclusivas. Se você tentar usar ambas as opções na mesma linha de comando, você obterá um erro de build.

Um aplicativo que não tem nenhum manifesto do aplicativo que especifica um nível de execução solicitado estará sujeito à virtualização de arquivos e registro sob o recurso Controle de Conta de Usuário no Windows. Para obter mais informações, consulte Controle de Conta de Usuário.

Seu aplicativo estará sujeito à virtualização se alguma dessas condições for verdadeira:

  • Você usa a opção NoWin32Manifest e não fornece um manifesto em uma etapa de build posterior ou como parte de um arquivo de Recurso (.res) do Windows usando a opção Win32Resource.
  • Você fornece um manifesto personalizado que não especifica um nível de execução solicitado.

O Visual Studio cria um arquivo .manifest padrão e o armazena nos diretórios de depuração e liberação juntamente com o arquivo executável. Você pode adicionar um manifesto personalizado criando um em qualquer editor de texto e, em seguida, adicionando o arquivo ao projeto. Como alternativa, você pode clicar com o botão direito do mouse no ícone Projeto no Gerenciador de Soluções, clicar em Adicionar Novo Item e selecionar Arquivo de Manifesto do Aplicativo. Depois de adicionar o arquivo de manifesto novo ou existente, ele aparecerá na lista suspensa Manifesto. Para obter mais informações, consulte Página Aplicativo, Designer de Projeto (C#).

Você pode fornecer o manifesto do aplicativo como uma etapa de pós-build personalizada ou como parte de um arquivo de recurso Win32 usando a opção NoWin32Manifest. Use essa mesma opção se quiser que o aplicativo seja sujeito à virtualização de arquivo ou Registro no Windows Vista.

NoWin32Manifest

Use a opção NoWin32Manifest para instruir o compilador a não inserir nenhum manifesto do aplicativo no arquivo executável.

<NoWin32Manifest />

Quando essa opção for usada, o aplicativo estará sujeito à virtualização no Windows Vista, a menos que você forneça um manifesto do aplicativo em um arquivo de recurso Win32 ou durante uma etapa de build posterior.

No Visual Studio, defina essa opção na página Propriedade do Aplicativo selecionando a opção Criar aplicativo sem um manifesto na lista suspensa Manifesto. Para obter mais informações, consulte Página Aplicativo, Designer de Projeto (C#).

Recursos

Insere o recurso especificado no arquivo de saída.

<Resources Include=filename>
  <LogicalName>identifier</LogicalName>
  <Access>accessibility-modifier</Access>
</Resources>

filename é o arquivo de recurso do .NET Framework que você deseja inserir no arquivo de saída. identifier (opcional) é nome lógico do recurso; o nome usado para carregar o recurso. O padrão é o nome do arquivo. accessibility-modifier é a acessibilidade do recurso: público ou privado. O padrão é público. Por padrão, recursos são públicos no assembly quando são criados usando o compilador C#. Para tornar os recursos privados, especifique private como o modificador de acessibilidade. Não é permitida nenhuma outra acessibilidade diferente de public ou private. Se filename for um arquivo de recurso do .NET Framework criado, por exemplo, por Resgen.exe ou no ambiente de desenvolvimento, ele poderá ser acessado com membros no namespace System.Resources. Para obter mais informações, consulte System.Resources.ResourceManager. Para todos os outros recursos, use os métodos GetManifestResource na classe Assembly para acessar o recurso em tempo de execução. A ordem dos recursos no arquivo de saída é determinada com base na ordem especificada no arquivo de projeto.

LinkResources

Cria um link para um recurso do .NET Framework no arquivo de saída. O arquivo de recurso não é adicionado ao arquivo de saída. LinkResources é diferente da opção Resource, que insere um arquivo de recurso no arquivo de saída.

<LinkResources Include=filename>
  <LogicalName>identifier</LogicalName>
  <Access>accessibility-modifier</Access>
</LinkResources>

filename é o arquivo de recurso do .NET Framework ao qual você deseja vincular a partir do assembly. identifier (opcional) é o nome lógico do recurso; o nome usado para carregar o recurso. O padrão é o nome do arquivo. accessibility-modifier é a acessibilidade do recurso: público ou privado. O padrão é público. Por padrão, os recursos vinculados são públicos no assembly quando são criados usando o compilador C#. Para tornar os recursos privados, especifique private como o modificador de acessibilidade. Não é permitido nenhum outro modificador diferente de public ou de private. Se filename for um arquivo de recurso do .NET Framework criado, por exemplo, por Resgen.exe ou no ambiente de desenvolvimento, ele poderá ser acessado com membros no namespace System.Resources. Para obter mais informações, consulte System.Resources.ResourceManager. Para todos os outros recursos, use os métodos GetManifestResource na classe Assembly para acessar o recurso em tempo de execução. O arquivo especificado em filename pode ter qualquer formato. Por exemplo, crie uma parte DLL nativa do assembly de maneira que possa ser instalada no cache de assembly global e acessado no código gerenciado no assembly. É possível fazer a mesma coisa no Assembly Linker. Para obter mais informações, consulte Al.exe (Assembly Linker) e Trabalhando com assemblies e o cache de assembly global.