Al.exe (Assembly Linker)

O Assembly Linker gera um arquivo com um manifesto de assembly com base em um ou mais arquivos que são arquivos de módulos ou de recurso. Um módulo é um arquivo IL (intermediate language) que não tem um manifesto de assembly.

Observação

Desde o Visual Studio 2008, os compiladores do C# e Visual Basic inserem automaticamente um manifesto Win32 no assembly. Para obter mais informações, consulte -win32manifest (opções do compilador C#).

Essa ferramenta é instalada automaticamente com o Visual Studio. Para executar a ferramenta, use o Prompt de Comando do Desenvolvedor do Visual Studio ou o PowerShell do Desenvolvedor do Visual Studio.

No prompt de comando, digite o seguinte:

Sintaxe

al sources options

Parâmetros

É possível especificar um ou mais dos seguintes sources.

Fonte Descrição
file[,target] Copia o conteúdo de file (um módulo) para o nome de arquivo especificado por target. Depois de copiar, o Al.exe compila target em um assembly.
/embed[resource]:file[,name[,private]] Insere o recurso especificado por file na imagem que contém o manifesto do assembly; Al.exe copia o conteúdo de file na imagem PE.

O parâmetro name é um identificador interno do recurso. Por padrão, os recursos são públicos no assembly (visível para outros assemblies). A especificação de private deixa o recurso não visível para outros assemblies.

Se file for um arquivo de recurso do .NET Framework criado, por exemplo, pelo Gerador de Arquivos de Recurso (Resgen.exe) ou no ambiente de desenvolvimento, ele poderá ser acessado com membros nos System.Resources. Para obter mais informações, consulte ResourceManager. Para todos os outros recursos, use os métodos GetManifestResource* no Assembly para acessar o recurso no tempo de execução.

Se apenas os arquivos de recurso forem passados para Al.exe, o arquivo de saída será um assembly de recurso satélite.
/link[resource]:file[,name[,target[,private]]] Vincula um arquivo de recurso a um assembly. O recurso especificado por file se torna parte do assembly; o arquivo não é copiado. O parâmetro file pode estar em qualquer formato de arquivo. Por exemplo, é possível especificar uma DLL nativa como o parâmetro file. Isso transformará a parte DLL nativa do assembly de maneira que possa ser instalado no cache de assembly global e acessado no código gerenciado no assembly. Também é possível fazer isso usando a opção do compilador /linkresource. Para obter mais informações, confira -linkresource (opções do compilador C#).

O parâmetro name é um identificador interno do recurso. O parâmetro target especifica um caminho e um nome de arquivo no qual Al.exe copia o file. Depois de copiar, Al.exe compila target em um assembly. Por padrão, os recursos são públicos no assembly (visível para outros assemblies). A especificação de private deixa o recurso não visível para outros assemblies.

Se file for um arquivo de recurso do .NET Framework criado, por exemplo, pelo Gerador de Arquivos de Recurso (Resgen.exe) ou no ambiente de desenvolvimento, ele poderá ser acessado com membros no namespace System.Resources. Para obter mais informações, consulte ResourceManager. Para todos os outros recursos, use os métodos GetManifestResource* na classe Assembly para acessar o recurso em tempo de execução.

Se apenas os arquivos de recurso forem passados para Al.exe, o arquivo de saída será um assembly de recurso satélite.

É possível especificar options a seguir; você deve especificar/out.

Opção Descrição
/algid:id Especifica um algoritmo hash para todos os arquivos em um assembly multiarquivo, exceto o arquivo que contém o manifesto de assembly. O algoritmo padrão é CALG_SHA1. Consulte ALG_ID na documentação do SDK da Plataforma para ver outros algoritmos. Para a primeira versão do .NET Framework, somente CALG_SHA1 e CALG_MD5 são válidos.

Os valores hash são armazenados na tabela de arquivos do manifesto de assembly. No momento da instalação e da carga, os arquivos do assembly são verificados em relação a seus hashes.

Também é possível especificar essa opção como um atributo personalizado (AssemblyAlgorithmIdAttribute) no código-fonte de qualquer módulo.
/base[address]:addr Especifica o endereço no qual uma DLL será carregada no computador do usuário no tempo de execução. Os aplicativos serão carregados mais rapidamente se você especificar o endereço de base das DLLs, em vez de deixar o sistema operacional realocar as DLL no espaço de processo.
/bugreport: filename Cria um arquivo (filename) que contém informações para relatar bugs.
/comp[any]:text Especifica uma cadeia de caracteres para o campo Empresa no assembly. Coloque a cadeia de caracteres entre aspas duplas (" "), se text contiver um espaço. Essa cadeia de caracteres é um atributo personalizado no assembly e está disponível para exibição com reflexão.

Se você não especificar /win32res, text aparecerá no Gerenciador de Arquivos como a propriedade Company do arquivo. Se você especificar /win32res, as informações da empresa no arquivo de recursos especificado serão exibidas como a propriedade Company no Gerenciador de Arquivos.

Se o texto for uma cadeia de caracteres vazia (""), o recurso Company Win32 será exibido como um espaço único.

Se você especificar /win32res, /company não afetará as informações dos recursos do Win32.

Você também pode especificar essa opção como um atributo personalizado (AssemblyCompanyAttribute) no código-fonte de qualquer módulo CIL.
/config[uration]:text Especifica uma cadeia de caracteres para o campo Configuração no assembly. Coloque a cadeia de caracteres entre aspas duplas (" "), se text contiver um espaço. Essa cadeia de caracteres é um atributo personalizado no assembly e está disponível para exibição com reflexão.

Se o texto for uma cadeia de caracteres vazia, o recurso Configuration Win32 será exibido como um espaço único.

Você também pode especificar essa opção como um atributo personalizado (AssemblyConfigurationAttribute) no código-fonte de qualquer módulo CIL.
/copy[right]:text Especifica uma cadeia de caracteres para o campo Direitos Autorais no assembly. Coloque a cadeia de caracteres entre aspas duplas (" "), se text contiver um espaço. Essa cadeia de caracteres é um atributo personalizado no assembly e está disponível para exibição com reflexão.

Se você não especificar /win32res, /copyright aparecerá no Gerenciador de Arquivos como o recurso Copyright do Win32res.

Se o texto for uma cadeia de caracteres vazia, o recurso Copyright Win32 será exibido como um espaço único.

Se você especificar /win32res, /copyright não afetará as informações dos recursos do Win32.

Você também pode especificar essa opção como um atributo personalizado (AssemblyCopyrightAttribute) no código-fonte de qualquer módulo CIL.
/c[ulture]:text Especifica a cadeia de caracteres de cultura a ser associada ao assembly. Valores válidos para culturas são aqueles definidos no documento RFC (Requests For Comments) de Internet 1766 intitulado "Tags for the Identification of Languages".

Coloque a cadeia de caracteres entre aspas duplas (" "), se text contiver um espaço. Não há cadeias de caracteres de cultura padrão. Essa cadeia de caracteres está disponível para exibição com reflexão.

Para obter informações sobre cadeias de caracteres text, consulte o CultureInfo.

Você também pode especificar essa opção como um atributo personalizado (AssemblyCultureAttribute) no código-fonte de qualquer módulo CIL.
/delay[sign][+ or -] Especifica se o assembly será assinado total ou parcialmente. Use /delaysign- se você quiser um assembly totalmente assinado. Use /delaysign+ se você apenas deseja incluir a chave pública no assembly.

Quando você solicita um assembly totalmente assinado, Al.exe usa o hash no arquivo que contém o manifesto (metadados do assembly) e assina esse hash com a chave privada. A assinatura digital resultante é armazenada no arquivo que contém o manifesto. Quando um assembly é assinado com atraso, o Al.exe não computa e não armazena a assinatura, mas apenas reserva o espaço no arquivo para que a assinatura possa ser adicionada depois.

O padrão é /delaysign-.

A opção /delaysign não tem nenhum efeito, a menos que seja usada com /keyfile ou /keyname.

Por exemplo, usar /delaysign+ permite que um testador coloque o assembly no cache global. Após o teste, é possível assinar completamente o assembly incluindo-se a chave privada no assembly.

Observação: antes de usar o Gacutil.exe (Ferramenta do Cache de Assembly Global) para colocar um assembly assinado com atraso no cache global, use o Sn.exe (Ferramenta de Nome Forte) para registrar o assembly para ignorar a verificação. Por exemplo, Sn.exe –Vr delaySignedAssembly. Use essa opção apenas no desenvolvimento.

Você também pode especificar essa opção como um atributo personalizado (AssemblyDelaySignAttribute) no código-fonte de qualquer módulo CIL.
/descr[iption]:text Especifica uma cadeia de caracteres para o campo Description no assembly. Coloque a cadeia de caracteres entre aspas duplas (" "), se text contiver um espaço. Essa cadeia de caracteres é um atributo personalizado no assembly e está disponível para exibição com reflexão.

Se você não especificar /win32res, /description aparecerá no Gerenciador de Arquivos como o recurso Comments do Win32.

Se o texto for uma cadeia de caracteres vazia, o recurso Comments do Win32 aparecerá como um espaço único.

Se você especificar /win32res, /description não afetará as informações dos recursos do Win32.

Você também pode especificar essa opção como um atributo personalizado (Description) no código-fonte de qualquer módulo CIL.
/e[vidence]:file Insere file no assembly com o nome do recurso de Security.Evidence.

Não é possível usar Security.Evidence para recursos comuns.
/fileversion:version Especifica uma cadeia de caracteres para o campo File Version no assembly. Essa cadeia de caracteres é um atributo personalizado no assembly e está disponível para exibição com reflexão.

Se você não especificar /win32res, /fileversion será usado como o recurso File Version do Win32. Se você não especificar /fileversion, o recurso File Version do Win32 será preenchido pelo recurso Assembly Version do Win32.

Se /win32res for especificado, /fileversion não afetará o recurso do Win32.

Você também pode especificar essa opção como um atributo personalizado (AssemblyFileVersionAttribute) no código-fonte de qualquer módulo CIL.
/flags:flags Especifica um valor para o campo Flags no assembly. Valores possíveis para flags:

0x0000
O assembly é compatível lado a lado.

0x0010
O assembly não poderá ser executado com outras versões se elas estiverem em execução no mesmo domínio do aplicativo.

0x0020
O assembly não poderá ser executado com outras versões se elas estiverem em execução no mesmo processo.

0x0030
O assembly não poderá ser executado com outras versões se elas estiverem em execução no mesmo computador.

Você também pode especificar essa opção como um atributo personalizado (AssemblyFlagsAttribute) no código-fonte de qualquer módulo CIL.
/fullpaths Faz Al.exe usar o caminho absoluto para todos os arquivos relatados em uma mensagem de erro.
/help Exibe sintaxe de comando e opções para a ferramenta.
/keyf[ile]:filename Especifica um arquivo (filename) que contém um par de chaves ou apenas uma chave pública para assinar um assembly. O compilador insere a chave pública no manifesto do assembly e, em seguida, assina o assembly final com a chave privada. Consulte a Ferramenta de Nome Forte (Sn.exe) para obter informações de como gerar arquivos de chave e instalar os pares de chaves nos contêineres de chaves.

Se você estiver usando a assinatura com atraso, o arquivo normalmente terá a chave pública, mas não a chave privada.

As informações da chave pública (do par de chaves) são exibidas no campo .publickey do assembly.

Você também pode especificar essa opção como um atributo personalizado (AssemblyKeyFileAttribute) no código-fonte de qualquer módulo CIL.

Se /keyfile e /keyname forem especificados (pela opção da linha de comando ou pelo atributo personalizado) na mesma compilação, o Al.exe primeiro tentará o contêiner especificado com /keyname. Se isso ocorrer, o assembly será assinado com as informações no contêiner de chaves. Se Al.exe não localizar o contêiner de chaves, ele tentará o arquivo especificado com /keyfile. Se ele conseguir, o assembly será assinado com as informações no arquivo de chave e as informações de chave serão instaladas no contêiner de chaves (semelhante à opção -i no Sn.exe) para que na próxima compilação, a opção /keyname seja válida.
/keyn[ame]:text Especifica um contêiner que mantém um par de chaves. Isso assinará o assembly (recebe um nome forte) inserindo uma chave pública no manifesto do assembly. Em seguida, Al.exe assinará o assembly final com a chave privada.

Use Sn.exe para gerar um par de chaves.

As informações da chave são exibidas no campo .publickey do assembly.

Coloque text entre aspas duplas (" ") se houver um espaço inserido.

Você também pode especificar essa opção como um atributo personalizado (AssemblyKeyNameAttribute) no código-fonte de qualquer módulo CIL.
/main:method Especifica o nome totalmente qualificado (class.method) do método a ser usado como um ponto de entrada durante a conversão de um módulo em um arquivo executável.
/nologo Suprime o banner ou o logotipo exibido na linha de comando quando você invoca o Al.exe.
/out:filename Especifica o nome do arquivo produzido por Al.exe. Trata-se de uma opção obrigatória.
/platform:text Limita em qual plataforma esse código pode ser executado; deve ser x86, Itanium, x64, anycpu (o padrão) ou anycpu32bitpreferred.
/prod[uct]:text Especifica uma cadeia de caracteres para o campo Product no assembly. Coloque a cadeia de caracteres entre aspas duplas (" "), se text contiver um espaço. Essa cadeia de caracteres é um atributo personalizado no assembly e está disponível para exibição com reflexão.

Se você não especificar /win32res, /product aparecerá no Gerenciador de Arquivos como o recurso Product Name do Win32.

Se o texto for uma cadeia de caracteres vazia, o recurso Product Name do Win32 aparecerá como um único espaço.

Se você especificar /win32res, /product não afetará as informações dos recursos do Win32.

Você também pode especificar essa opção como um atributo personalizado (AssemblyProductAttribute) no código-fonte de qualquer módulo CIL.
/productv[ersion]:text Especifica uma cadeia de caracteres para o campo Product Version no assembly. Coloque a cadeia de caracteres entre aspas duplas (" "), se text contiver um espaço. Essa cadeia de caracteres é um atributo personalizado no assembly e está disponível para exibição com reflexão.

Se você não especificar /win32res, /productversion será usado como o recurso Product Version do Win32. Se você não especificar /productversion, o recurso Product Version do Win32 será preenchido pelo recurso File Version do Win32.

Se você especificar /win32res, /productversion não afetará as informações dos recursos do Win32.

Você também pode especificar essa opção como um atributo personalizado (AssemblyInformationalVersionAttribute) no código-fonte de qualquer módulo CIL.
/t[arget]:lib[rary] | exe | win[exe] Especifica o formato do arquivo de saída: lib[rary] (biblioteca de códigos), exe (aplicativo de console) ou win[exe] (aplicativo com base no Windows). O padrão é lib[rary].
/template:filename Especifica o assembly, filename, do qual todos os metadados de assembly devem ser herdados, exceto o campo de cultura.

Um assembly que você cria com /template será um assembly satélite.
/title:text Especifica uma cadeia de caracteres para o campo Title no assembly. Coloque a cadeia de caracteres entre aspas duplas (" "), se text contiver um espaço. Essa cadeia de caracteres é um atributo personalizado no assembly e está disponível para exibição com reflexão.

Se você não especificar /win32res, /title aparecerá no Gerenciador de Arquivos como o recurso Description do Win32, que é usado pelo shell como o nome amigável de um aplicativo. Também é exibido no submenu Abrir Com do menu de atalho para um tipo de arquivo para o qual há vários aplicativos de suporte.

Se o texto for uma cadeia de caracteres vazia, o recurso Description do Win32 aparecerá como um único espaço.

Se você especificar /win32res, /title não afetará as informações dos recursos do Win32.

Você também pode especificar essa opção como um atributo personalizado (AssemblyTitleAttribute) no código-fonte de qualquer módulo CIL.
/trade[mark]:text Especifica uma cadeia de caracteres para o campo Trademark no assembly. Coloque a cadeia de caracteres entre aspas duplas (" "), se text contiver um espaço. Essa cadeia de caracteres é um atributo personalizado no assembly e está disponível para exibição com reflexão.

Se você não especificar /win32res, /trademark aparecerá no Gerenciador de Arquivos como o recurso Trademark do Win32.

Se o texto for uma cadeia de caracteres vazia, o recurso Trademark do Win32 aparecerá como um único espaço.

Se você especificar /win32res, /trademark não afetará as informações dos recursos do Win32.

Você também pode especificar essa opção como um atributo personalizado (AssemblyTrademarkAttribute) no código-fonte de qualquer módulo CIL.
/v[ersion]:version Especifica informações da versão para o assembly. O formato da cadeia de caracteres de versão é major.minor.build.revision. O valor padrão é 0.

Se você especificar /version, deverá especificar major. Se especificar major e minor, poderá especificar um asterisco (*) para build. Isso faz build ser igual ao número de dias desde 1º de janeiro de 2000, hora local, e revision ser igual ao número de segundos desde a meia-noite do dia atual, hora local, dividido por 2.

Se especificar major, minor e build, você poderá especificar um asterisco para revision. Isso faz revision ser igual ao número de segundos desde a meia-noite do dia atual, hora local, dividido por 2.

Para resumir, as cadeias de caracteres de versão válida são os seguintes:

X

X.X

X.X.*

X.X.X

X.X.X.*

X.X.X.X

em que X é qualquer constante curta não assinada, exceto 65535 (0-65534).

Se você não especificar /win32res, /version será usado como o recurso Assembly Version do Win32.

Se não especificar /win32res, /productversion e /fileversion, /version será usado para os recursos Assembly Version, File Version e Product Version do Win32.

Se você especificar /win32res, /version não afetará as informações dos recursos do Win32.

Você também pode especificar essa opção como um atributo personalizado (AssemblyVersionAttribute) no código-fonte de qualquer módulo CIL.
/win32icon:filename Insere um arquivo .ico no assembly. O arquivo .ico dá ao arquivo de saída a aparência desejada no Explorador de Arquivos.
/win32res:filename Insere um recurso Win32 (arquivo .res) no arquivo de saída. Um arquivo de recurso Win32 pode ser criado usando-se o Compilador de Recursos. O Compilador de Recursos é invocado quando você compila um programa do Visual C++; um arquivo .res é criado com base no arquivo .rc.
@filename Especifica um arquivo de resposta que contém comandos do Al.exe.

Os comandos no arquivo de resposta podem ser exibidos um por linha ou na mesma linha, separados por um ou mais espaços.
/? Exibe sintaxe de comando e opções para a ferramenta.

Comentários

Todos os compiladores do Visual Studio para produzir assemblies. No entanto, se houver um ou mais módulos (metadados sem um manifesto), você poderá usar Al.exe para criar um assembly com o manifesto em um arquivo separado.

Para instalar os assemblies no cache, remova-os do cache ou, para listar o conteúdo do cache, use a Ferramenta do Cache de Assembly Global (Gacutil.exe).

Erros e avisos

A tabela a seguir lista os erros gerados por Al.exe.

Erro Descrição
al1001 Erro interno do compilador

Tente determinar se Al.exe está falhando devido à sua incapacidade de analisar uma sintaxe inesperada. Então, entre em contato com o Suporte a Produtos da Microsoft.
al1002 Memória insuficiente

Al.exe ficou sem memória e foi interrompido. Aumente a quantidade de memória disponível.
al1003 A opção do compilador 'option' deve ser seguida de um argumento

O Al.exe esperava que um argumento fosse passado para uma opção da linha de comando. Por exemplo, se você especificar /algid:, deverá passar um identificador de algoritmo.
al1004 Erro inesperado de inicialização do Common Language Runtime — 'reason'

O Al.exe relatou um erro com a instalação do Visual Studio ou do Common Language Runtime pelo motivo especificado.
al1005 Arquivo 'file' grande demais para abrir

Todos os arquivos abertos por Al.exe devem ser menores que 4 gigabytes (GB).
al1006 O arquivo de resposta 'file' já foi incluído

O mesmo arquivo de resposta foi especificado (@file) mais de uma vez na linha de comando. O arquivo de resposta só pode ser incluído uma vez.
al1007 Erro ao abrir o arquivo de resposta 'file' — 'reason'

O Al.exe não consegue abrir o arquivo de resposta especificado pelo motivo especificado.
al1008 Especificação do arquivo ausente para a opção da linha de comando 'option'

O Al.exe esperava que um arquivo fosse passado para uma opção da linha de comando. Por exemplo, se você especificar a opção /out, deverá especificar um arquivo.
al1009 Não é possível abrir 'file' para a gravação

O Al.exe não pôde gravar em um arquivo, como o arquivo do assembly de saída. O disco pode estar cheio, o arquivo pode ser de somente leitura ou talvez você não tenha permissões para o arquivo.
al1010 Erro de sintaxe da linha de comando: falta ':text' para a opção 'option'

O Al.exe esperava que um argumento fosse passado para uma opção da linha de comando. Por exemplo, se você especificar a opção /title, deverá passar uma cadeia de caracteres.
al1011 O arquivo 'file' é um arquivo executável e não pode ser aberto como um arquivo de texto

Um arquivo binário foi especificado onde um arquivo de texto era esperado. Por exemplo, esse erro ocorrerá se um arquivo binário for passado na linha de comando como um arquivo de resposta.
al1012 'value' não é uma configuração válida para a opção 'option'

Um valor inesperado foi passado para uma opção da linha de comando. Por exemplo, este erro ocorrerá se você especificar um valor inválido para a opção /target.
al1013 Opção da linha de comando não reconhecida: 'option'

Uma opção da linha de comando inválida foi especificada.
al1014 Erro de inicialização inesperado — 'reason'

O Al.exe detectou uma falha de inicialização do COM. Isso pode ser causado por falta de memória, mas uma causa mais provável são os arquivos DLL do sistema. Você verá um erro semelhante se executar qualquer programa com reconhecimento de COM e Automação, como o Microsoft Visual Studio.

Reinstale o sistema operacional.
al1015 Não é possível localizar o arquivo de mensagens 'alinkui.dll'

O Al.exe requer o Alinkui.dll. Verifique se esse arquivo está em seu caminho. Se necessário, copie-o do CD do produto.
al1016 Nenhum arquivo de entrada válido foi especificado

O Al.exe requer um ou mais arquivos de entrada que não têm informações do assembly.
al1017 Nenhum nome de arquivo de destino foi especificado

Não existia a opção /out necessária que especifica o nome do arquivo de destino.
al1018 O arquivo 'file' necessário não pôde ser carregado

Certos arquivos DLL não podem ser carregados. Reinstale o Visual Studio ou o SDK do Windows.
al1019 Falha de metadados ao criar assembly — motivo

A geração do assembly foi interrompida pelo motivo especificado. Por exemplo, este erro ocorrerá se um arquivo especificado com a opção /win32res não for encontrado.
al1020 Ignorando o assembly 'file' incluído

Um arquivo de entrada que continha um assembly foi especificado. Os arquivos de entrada do Al.exe não podem conter assemblies.
al1021 'setting': substituindo configuração anterior

Um módulo tinha um valor para uma determinada configuração, possivelmente atribuída com atributos personalizados, que foi substituído por um valor passado usando uma opção da linha de comando do Al.exe.
al1022 Erro ao ler o recurso 'file' inserido — motivo

O Al.exe não consegue ler o arquivo passado para a opção /embedresource pelo motivo especificado.
al1023 Erro ao inserir recurso 'file' — motivo

O sistema operacional não pode inserir o arquivo de recurso no assembly pelo motivo especificado.
al1025 O registro ComType 'record' aponta para um registro de arquivo 'record' inválido

Os metadados do módulo de entrada são inválidos. A ferramenta que produziu o módulo deve ser corrigida.
al1026 A versão 'version' especificada é inválida

Consulte as informações sobre a opção /version para ver os formatos válidos.
al1028 O arquivo de chave 'file' não está encontrando a chave privada necessária para a assinatura

Um arquivo de chave que contém somente a chave pública foi passado para a opção /keyfile. Use a Ferramenta de Nome Forte (Sn.exe) para gerar um arquivo que tem uma chave pública e privada, como é mostrado no comando a seguir.

sn -k keypair.snk.
al1029 O nome do contêiner de chave 'container' não existe

O valor passado para a opção /keyname não é um contêiner válido. Use a Ferramenta de Nome Forte (Sn.exe) para criar um contêiner.
al1030 Serviço de criptografia não está instalado apropriadamente ou não tem um provedor de chave adequado

Talvez, você precise reinstalar o sistema operacional ou instalar algum utilitário criptográfico que foi usado para criar a chave.
al1031 Erro ao ler o ícone 'file' — motivo

O Al.exe não consegue ler o arquivo passado para a opção /win32icon pelo motivo especificado
al1032 Erro ao gerar recursos para 'file' — motivo

O Al.exe não consegue criar um arquivo devido a espaço insuficiente em disco ou a algum outro erro. Esse erro ocorre quando você especifica a opção /win32icon (que gera um arquivo .ico) ou não especifica a opção /win32res (que gera um arquivo que contém as informações do recurso).

Se você não conseguir resolver o problema de geração do arquivo, use /win32res, que especifica um arquivo que pode conter as informações da versão ou do bitmap (ícone).
al1033 O atributo personalizado do assembly 'attribute' foi especificado várias vezes com valores diferentes

Valores diferentes foram passados para duas ocorrências do mesmo atributo personalizado nos módulos de origem especificados como entrada para Al.exe.
al1034 O assembly 'file' não pode ser copiado nem renomeado

Ao usar a sintaxe do Al.exe que permite especificar um arquivo de entrada e copiá-lo, surgiu um conflito de nome que interrompeu o compilador. Por exemplo, este erro ocorrerá se você especificar input.dll,somename.dll /out:somename.dll.
al1035 Bibliotecas não podem ter um ponto de entrada

Não é possível especificar a opção /target:lib (padrão) e a opção /main.
al1036 Ponto de entrada necessário para aplicativos executáveis

Ao usar a opção /target:exe ou /target:win, você também deve especificar a opção /main.
al1037 Não é possível encontrar método do ponto de entrada 'main'

O Al.exe não consegue encontrar um método Main no local especificado pela opção /main.
al1039 Falha na inicialização do gerenciador de cache de assembly global — motivo

Reinstale o Visual Studio ou o SDK do Windows.
al1040 Falha ao instalar o assembly no cache — motivo

Apenas os assemblies assinados podem ser instalados no cache. Para obter mais informações, consulte Cache de Assembly Global.
al1041 'method': não pode ser o ponto de entrada porque é genérico ou porque a assinatura ou a visibilidade está incorreta

Foi especificado um método com a opção /main, mas esse método não é estático, não retorna int nem void, era genérico ou tem argumentos inválidos.
al1042 'exe': os EXEs não podem ser módulos adicionados

Um arquivo .exe que não tem um assembly foi especificado como um arquivo de entrada para Al.exe. O Al.exe só pode usar arquivos dll sem assemblies como arquivos de entrada.
al1043 O nome do arquivo de manifesto 'name' não pode ser igual ao de nenhum módulo

O nome especificado com a opção /out não pode ser igual a nenhum nome de arquivo especificado como entrada para o Al.exe.
al1044 Erro ao ler arquivo de chave 'file' — motivo

Ocorreu um erro ao abrir ou ler a partir de um arquivo especificado com /keyfile ou AssemblyKeyFileAttribute.
al1045 O nome de arquivo 'file' é longo demais ou inválido

Um nome de arquivo com mais de 260 caracteres foi passado para o Al.exe. Escolha um nome de arquivo com menos caracteres, um caminho mais curto ou renomeie o arquivo.
al1046 O identificador de recurso 'ID' já foi usado neste assembly

Dois recursos, inseridos ou vinculados, com o mesmo identificador ou nome (o segundo argumento). Remova ou renomeie um dos recursos em conflito.
al1047 Erro ao importar o arquivo 'file' — motivo

Um arquivo de módulo não pode ser aberto pelo motivo especificado.
al1048 Erro ao importar o módulo 'module' do assembly 'assembly' — motivo

Ocorreu um erro ao abrir um arquivo de não manifesto de um assembly com vários arquivos. Esse erro não é emitido diretamente pelo Al.exe, mas pode ser passado de forma programática para um processo que use o Al.exe.
al1049 Não é possível gerar automaticamente números de versão da revisão e compilação para as datas anteriores a 1º de janeiro de 2000

O relógio do sistema no computador está definido para uma data anterior a 1º de janeiro de 2000.
al1050 O recurso que você está usando, 'old feature', não tem mais suporte; use 'new feature'

Um recurso ao qual o Al.exe dava suporte anteriormente, agora está obsoleto. Use o recurso recomendado.
al1051 Erro ao emitir o atributo 'attribute' — motivo

Um atributo personalizado do assembly não foi processado pelo Al.exe pelo motivo especificado.
al1052 O arquivo 'filename' não é um assembly

O arquivo especificado com /template deve conter os metadados do assembly. Esse erro indica que o arquivo especificado por /template não continha um assembly.
al1053 A versão 'version' especificada para 'option' não está no formato 'major.minor.build.revision' normal

O Al.exe detectou informações de versão malformadas especificadas com as opções /fileversion ou /productversion.
al1054 A versão 'version' especificada para 'option' não está no formato 'major.minor.build.revision' normal

O Al.exe detectou informações de versão malformadas especificadas com o SatelliteContractVersionAttribute.
al1055 O assembly referenciado 'filename' não tem um nome forte

Esse erro é emitido quando você está compilando um assembly com um nome forte e faz referência a um assembly que não tem um nome forte. Para corrigir isso, você deve gerar novamente o assembly com um nome forte ou anexar um nome forte ao assembly usando Sn.exe (consulte a documentação do Sn.exe).

Uma ocorrência comum desse erro é quando você está usando objetos COM por meio de assemblies do wrapper, como quando adiciona uma referência para um módulo COM a um projeto C# por meio do IDE do Visual Studio. Para evitar o erro, você pode especificar o arquivo de chave de nome forte para os assemblies do wrapper COM na Propriedade do Projeto "Arquivo/Nome da Chave do Assembly do Wrapper"

Se estiver criando o assembly do wrapper por meio do tlbimp, consulte a documentação do tlbimp para obter informações sobre como atribuir um nome forte ao assembly do wrapper.

Se um assembly tiver um nome forte, ele poderá ser instalado no cache de assembly global. Consequentemente, os assemblies referenciados também deverão ficar no cache de assembly global. Somente os assemblies com nomes fortes podem ficar no cache de assembly global.
al1056 O assembly referenciado 'filename' é um assembly de satélite localizado

Um assembly criado usando o atributo AssemblyCultureAttribute foi referenciado ao criar o assembly atual. O atributo AssemblyCultureAttribute indica que o arquivo é um assembly satélite localizado e não é adequado para fazer referência a um assembly satélite. Em vez disso, referencie o assembly pai principal.
al1057 Não é possível localizar executáveis. Cultura deve estar sempre vazia

Um assembly sendo criado com /target:exe, mas /culture foi especificado. Os assemblies no .exe não podem ter informações no campo Culture.
al1058 'file' é um assembly e não pode ser adicionado como um módulo

Em uma compilação do C++, /assemblymodule (opção do vinculador) foi passado a um arquivo que continha um assembly.
al1059 Erro desconhecido (código)

O Al.exe recebeu um código de erro desconhecido (code).

As soluções possíveis incluem o seguinte:

Reinstale o Visual Studio.

Reinstale o SDK do Windows.

Verifique se há arquivos ausentes.

Verifique se há espaço suficiente em disco.

Verifique se há memória suficiente.

Pare os outros processos que podem acessar os arquivos.

Reinicie o computador.
al1060 Falha na criptografia ao criar hashes — motivo

Ocorreu um erro ao criar os hashes de arquivo para um assembly com vários arquivos.
al1061 Não é possível definir a opção 'option' por causa de 'reason'

O valor especificado para essa opção é inválido pelo motivo especificado.
al1062 O módulo 'module' foi especificado várias vezes; ele só será incluído uma vez

Este aviso é gerado quando o mesmo arquivo de origem, entrada ou módulo é especificado várias vezes na linha de comando. Verifique se você especificou o nome de arquivo apenas uma vez.
al1063 O tipo público 'type' está definido em vários locais neste assembly: 'file1' e 'file2'

O mesmo tipo foi encontrado em mais de um módulo no assembly. Apenas uma versão de cada tipo pode estar presente em um assembly.
al1064 Não é possível especificar várias opções /bugreport.

Apenas uma opção /bugreport é permitida.
al1065 O nome de arquivo 'File Name' é longo demais ou inválido

O nome de arquivo especificado é maior que o máximo permitido.
al1066 O caractere 'character' não é permitido na linha de comando ou em arquivos de resposta

Um caractere inválido foi encontrado na linha de comando ou em um arquivo.
al1067 'filename' é um arquivo binário, em vez de um arquivo de texto

O arquivo está no formato binário, em vez de texto.
al1068 O módulo 'ModuleName' já está definido neste assembly. Cada módulo ou recurso vinculado deve ter um nome de arquivo exclusivo.

O módulo ocorre mais de uma vez neste assembly.
al1069 Não é possível criar um nome de arquivo curto 'filename' quando já existe um nome de arquivo longo com esse nome

O arquivo atual tem um nome que é uma versão abreviada de um nome do arquivo que já existe. Por exemplo, compilar LongFileName.cs, em seguida, recompilar com o nome LongFi~1.cs causará um erro de compilador semelhante a este. Se os arquivos de saída do compilador com nomes longos foram excluídos, mas os arquivos do vinculador parecidos permaneceram, poderá ocorrer esse erro.
al1070 Um assembly independente não pode ter um módulo específico do processador 'Module Name'

Se você estiver compilando com /platform:agnostic (ou não especificar /platform), um erro será gerado se tentar adicionar um módulo (usando /addmodule) que é dependente. É como tentar vincular a um arquivo obj i386 a um obj ia64.

A principal fonte de módulos dependentes é C++. Se você estiver usando /addmodule com um módulo do C++, talvez precise modificar seus scripts de compilação para especificar a devida configuração /platform.
al1072 O assembly e o módulo 'Module Name' não podem ter processadores de destino diferentes

Você não pode vincular um assembly e um módulo que são destinados a processadores diferentes, pois o resultado deve ser executado em um único processador.
al1073 O assembly referenciado 'assembly' é destinado a um processador diferente

Você não pode vincular os assemblies que são destinados a processadores diferentes, pois o resultado deve ser executado em um único processador.
al1074 O nome do módulo 'Module Name' armazenado em 'File Name' deve corresponder a seu nome de arquivo

Isso é necessário para o vinculador. Para resolver esse problema, verifique se os dois nomes correspondem.
al1075 A assinatura atrasada foi solicitada, mas nenhuma chave foi fornecida

Quando um assembly é assinado com atraso, o compilador não calcula e armazena a assinatura, mas reserva o espaço no arquivo, de forma que a assinatura possa ser adicionada depois.

Por exemplo, usar /delaysign+ permite que um testador coloque o assembly no cache global. Após o teste, é possível assinar completamente o assembly adicionando a chave privada ao assembly com o utilitário Assembly Linker.
al1076 O tipo 'type' é encaminhado para vários assemblies: 'assembly' e 'assembly'.

Um tipo só pode ser encaminhado para um assembly.
al1077 O tipo público 'type' é definido no 'assembly' e encaminhado para o 'assembly'.

Há um tipo público duplicado no assembly que está sendo gerado. Um é uma definição do tipo válida e o outro é um encaminhador do tipo.

Exemplo

O comando a seguir cria um arquivo executável t2a.exe com um assembly do módulo t2.netmodule. O ponto de entrada é o método Main em MyClass.

al t2.netmodule /target:exe /out:t2a.exe /main:MyClass.Main

Confira também