Al.exe 工具错误和警告

下表列出 Al.exe 生成的错误。

错误 说明

al1001

内部编译器错误

尝试确定 Al.exe 的失败是否是由于它无法分析意外的语法。然后,请与 Microsoft 产品支持服务联系。

al1002

内存不足

Al.exe 运行时耗尽内存并已暂停。增加可用内存的数量。

al1003

编译器选项“option”后面必须有参数

Al.exe 需要有传递给命令行选项的参数。例如,如果指定 /algid:,则必须传递算法标识符。

al1004

意外的公共语言运行库初始化错误 -“reason”

Al.exe 报告由于所指出的原因,Visual Studio 或公共语言运行库安装出错。

al1005

文件“file”太大,无法打开

Al.exe 打开的所有文件都必须小于 4 GB。

al1006

已经包含了响应文件“file”

在命令行上多次指定了同一响应文件 (@file)。响应文件只能包含一次。

al1007

打开响应文件“file”时出错 -“reason”

出于所指明的原因,Al.exe 无法打开指定的响应文件。

al1008

“option”命令行选项缺少文件规范

Al.exe 需要有传递给命令行选项的文件。例如,如果指定 /out 选项,则必须指定文件。

al1009

无法打开“file”进行写入

Al.exe 无法写到文件(例如,输出程序集文件)中。磁盘可能已满,文件可能是只读文件,或者您可能没有访问文件的权限。

al1010

命令行语法错误:“option”选项缺少“:text”

Al.exe 需要有传递给命令行选项的参数。例如,如果指定 /title 选项,则必须传递字符串。

al1011

文件“file”是可执行文件,无法作为文本文件打开

在需要文本文件的位置指定了二进制文件。例如,如果在命令行上将二进制文件作为响应文件传递,此错误便会发生。

al1012

“value”不是选项“option”的有效设置

向命令行选项传递了意外的值。例如,如果为 /target 选项指定了无效值,便会出现此错误。

al1013

无法识别的命令行选项:“option”

指定了无效的命令行选项。

al1014

意外的初始化错误 -“reason”

Al.exe 检测到 COM 初始化失败。这可能是因为内存不足,但更可能因系统 DLL 文件引起。如果运行任何一种支持自动化或支持 COM 的程序(例如 Microsoft Visual Studio),应该会看到类似的错误。

请重新安装操作系统。

al1015

无法找到信息文件“alinkui.dll”

Al.exe 需要 Alinkui.dll。请确保您的路径中有该文件。如有必要,可从产品 CD 中复制该文件。

al1016

没有指定有效的输入文件

Al.exe 需要一个或多个没有程序集信息的输入文件。

al1017

没有指定目标文件名

缺少指定目标文件名的必需 /out 选项。

al1018

未能加载要求的文件“file”

无法加载特定的 DLL 文件。重新安装 Visual Studio 或 .NET Framework SDK。

al1019

创建程序集时元数据失败 - reason

出于所指明的原因,程序集的生成中断。例如,如果找不到用 /win32res 选项指定的文件,此错误便会发生。

al1020

忽略包含的程序集“file”

指定了包含程序集的输入文件。Al.exe 输入文件不能包含程序集。

al1021

“setting”: 重写以前的设置

模块具有用于特定设置的值(可能是通过自定义属性分配的),该值被用 Al.exe 命令行选项传递的值重写。

al1022

读取嵌入资源“file”时出错 - reason

出于所指明的原因,Al.exe 无法读取传递到 /embedresource 选项的文件。

al1023

嵌入资源“file”时出错 - reason

出于所指明的原因,操作系统无法将资源文件嵌入到程序集中。

al1025

ComType 记录“record”指向无效的文件记录“record”

输入模块中的元数据无效。必须修复产生模块的工具。

al1026

指定的版本“version”无效

请参见有关 /version 选项的信息,以了解什么是有效的格式。

al1028

密钥文件“file”缺少签名所需的私钥

将只包含公钥的密钥文件传递到了 /keyfile 选项。使用强名称工具 (Sn.exe) 生成既有公钥又有私钥的文件,如以下命令所示:

sn -k keypair.snk.

al1029

密钥容器名称“container”不存在

传递到 /keyname 选项的值不是有效的容器。使用强名称工具 (Sn.exe) 来创建容器。

al1030

加密服务没有正确安装或者没有适合的密钥提供程序

您可能需要重新安装操作系统,或者安装某些曾用于创建该密钥的加密实用工具。

al1031

读取图标“file”时出错 - reason

出于所指明的原因,Al.exe 无法读取传递到 /win32icon 选项的文件。

al1032

生成“file”的资源时出错 - reason

由于磁盘空间不足或某些其他错误,Al.exe 无法创建文件。在指定 /win32icon 选项(生成 .ico 文件)或者不指定 /win32res 选项(生成有资源信息的文件)时,会出现此错误。

如果您无法解决该文件生成问题,可使用 /win32res,它指定能够包含版本或位图(图标)信息的文件。

al1033

使用不同的值将程序集自定义属性“attribute”指定了多次

为源模块(被指定为 Al.exe 的输入)中同一自定义属性的两个匹配项传递了不同的值。

al1034

无法复制或重命名程序集“file”

使用允许同时指定输入文件和复制该文件的 Al.exe 语法时产生了名称冲突,从而使编译器停止工作。例如,如果指定 input.dll,somename.dll /out:somename.dll 此错误便会发生。

al1035

库不能有入口点

不能同时指定 /target:lib 选项(默认)和 /main 选项。

al1036

可执行应用程序需要入口点

使用 /target:exe/target:win 选项时,还必须指定 /main 选项。

al1037

无法找到入口点方法“main”

Al.exe 在 /main 选项指定的位置未找到 Main 方法。

al1039

全局程序集缓存管理程序的初始化失败 - reason

重新安装 Visual Studio 或 .NET Framework SDK。

al1040

未能将程序集安装到缓存中 - reason

只有已签名的程序集才能安装到缓存中。有关更多信息,请参见全局程序集缓存

al1041

“method”: 不能是入口点,因为签名或可见性不正确,或者它是一般性的

/main 选项指定了一个方法,但该方法不是静态的,不返回 intvoid,是一般性的,或者具有无效参数。

al1042

“exe”: 无法对 EXE 添加模块

没有程序集的 .exe 文件被指定为 Al.exe 的输入文件。Al.exe 只能将没有程序集的 .dll 文件作为输入文件。

al1043

清单文件名“name”不能与任何模块相同

/out 选项指定的名称不能与任何被指定为 Al.exe 的输入的文件同名。

al1044

读取密钥文件“file”时出错 - reason

打开或读取用 /keyfileAssemblyKeyFileAttribute 指定的文件时出现错误。

al1045

文件名“file”太长或者无效

传递到 Al.exe 的文件名超过 260 个字符。请选择字符数较少的文件名或较短的路径,或者重命名此文件。

al1046

此程序集中已使用了资源标识符“ID”

两个资源(嵌入的资源或链接的资源)具有相同的标识符或名称(第二个参数)。请移除或重命名其中一个冲突资源。

al1047

导入文件“file”时出错 - reason

出于所指明的原因,无法打开模块文件。

al1048

导入程序集“assembly”的模块“module”时出错 - reason

打开多文件程序集的非清单文件时出错。该错误不是直接由 Al.exe 发出,但可以编程方式传递到使用 Al.exe 的进程。

al1049

无法对 2000 年 1 月 1 日前的日期自动生成内部版本号和修订版本号

计算机上的系统时钟设置为 2000 年 1 月 1 日之前的日期。

al1050

您正使用的功能“old feature”不再受支持;请改用“new feature”

Al.exe 以前支持的一个功能现在已过时。请改用推荐的功能。

al1051

发出“attribute”属性时出错 -“reason”

出于所指明的原因,Al.exe 没有处理某个程序集自定义属性。

al1052

文件“file”不是程序集

/template 指定的文件必须包含程序集元数据。该错误表示 /template 指定的文件未包含程序集。

al1053

为“option”指定的版本“version”不是标准的“major.minor.build.revision”格式

Al.exe 检测到用 /fileversion/productversion 选项指定的版本信息的格式错误。

al1054

为“option”指定的版本“version”不是标准的“major.minor.build.revision”格式

Al.exe 检测到使用 SatelliteContractVersionAttribute 指定的错误格式的版本信息。

al1055

引用的程序集“filename”没有强名称

在您要生成带有强名称的程序集并引用没有强名称的程序集时,此错误便会发生。若要解决此问题,需要重新生成具有强名称的程序集,或者使用 sn.exe 将强名称附加到程序集(请参见 sn.exe 的文档)。

发生该错误的常见情况是通过包装程序集使用 COM 对象时,例如通过 VS IDE 将对 COM 模块的引用添加到 C# 项目时。若要避免该错误,可以在项目属性“Wrapper Assembly Key File/Name”中为 COM 包装程序集指定强名称密钥文件

如果要通过 tlbimp 创建包装程序集,请参见 tlbimp 文档,以了解有关如何将强名称分配给包装程序集的信息。

如果程序集有强名称,它便可安装到全局程序集缓存中。因此,引用的程序集还需进入全局程序集缓存。只有带强名称的程序集才能进入全局程序集缓存。

al1056

引用的程序集“filename”是本地化附属程序集

在创建当前程序集时引用了使用 AssemblyCultureAttribute 属性创建的程序集。AssemblyCultureAttribute 属性表示文件是本地化附属程序集,而引用附属程序集是不正常的。您可能应该改为引用主要的父程序集。

al1057

可执行文件不能本地化,区域性应始终为空

正在用 /target:exe 创建程序集,但指定了 /culture。.exe 中的程序集在“区域性”字段中不能有信息。

al1058

“file”是程序集,无法作为模块添加

在 C++ 编译中,向 /assemblymodule(链接器选项)传递了包含程序集的文件。

al1059

未知错误 (code)

Al.exe 收到了未知的错误代码(代码)。

可能的解决方案包括:

  • 重新安装 Visual Studio。

  • 重新安装 .NET Framework SDK。

  • 检查是否丢失文件。

  • 检查是否有足够的磁盘空间。

  • 检查是否有足够的内存。

  • 停止可能要访问文件的其他进程。

  • 重新启动计算机。

al1060

创建哈希时加密失败 - reason

为多文件程序集创建文件哈希时出错。

al1061

无法设置选项“option”,因为“reason”

由于所指明的原因,为该选项指定的值无效。

al1062

模块“module”被指定了多次;它只会被包括一次

当在命令行上多次指定相同的源、输入或模块文件时,会生成此警告。确保只指定一次文件名。

al1063

公共类型“type”在此程序集中多处定义:“file1”和“file2”

在程序集的多个模块中发现了同一类型。在一个程序集中,每个类型只能出现一次。

al1064

不能指定多个 /bugreport 选项。

只允许一个 /bugreport 选项。

al1065

文件名“File Name”太长或无效

指定的文件名超过了允许的最大长度。

al1066

在命令行上或响应文件中不允许有字符“character”

命令行或文件中发现了无效字符。

al1067

“filename”是二进制文件而非文本文件

此文件是二进制格式,而不是文本格式。

al1068

此程序集中已经定义了模块“ModuleName”。每个链接的资源和模块都必须有唯一的文件名。

此模块在该程序集中出现了多次。

al1069

已经存在短文件名为“filename”的长文件名时,无法创建该短文件名

当前文件具有的一个名称是已经存在的某个文件名的缩写形式。例如,编译 LongFileName.cs 然后使用名称 LongFi~1.cs 对其重新进行编译,将导致发生类似如上的编译器错误。如果删除了具有长名称的编译器输出文件,但保留类似的链接器文件,则会发生该错误。

al1070

不可知程序集不能有处理器特定模块“Module Name”

如果使用 /platform:agnostic 进行生成(或者不指定 /platform),则尝试添加已知的模块(使用 /addmodule)时,将生成一个错误。这与尝试链接具有一个 ia64 obj 的 i386 obj 文件类似。

已知模块的主源是 C++。如果使用 /addmodule 来处理 C++ 模块,您可能需要修改生成脚本以指定相应的 /platform 设置。

al1072

程序集和模块“Module Name”不能针对不同的处理器

不能将针对不同处理器的程序集和模块链接在一起,因为结果必须在一个处理器上运行。

al1073

引用的程序集“assembly”针对其他处理器

不能将针对不同处理器的程序集链接在一起,因为结果必须在一个处理器上运行。

al1074

存储在“File Name”中的模块名称“Module Name”必须与其文件名匹配

这是链接器的一个要求。若要解决该问题,请使这两个名称相匹配。

al1075

请求了延迟签名,但是没有给出任何键

当果程序集的签名延迟时,编译器将不会计算和存储签名,但会在文件中保留空间以便以后添加签名。

例如,使用 /delaysign+ 允许测试人员将程序集放入全局缓存中。测试完成后,可以通过使用程序集链接器实用工具将私钥放入程序集中对程序集进行完全签名。

al1076

类型“type”被转发给多个程序集:“assembly”和“assembly”。

一个类型只能转发给一个程序集。

al1077

公共类型“type”在“assembly”中定义并转发给“assembly”。

正在生成的程序集中有一个重复的公共类型。一个是有效的类型定义,而另一个是类型转发器。

请参见

参考

.NET Framework 工具
程序集链接器 (Al.exe)
SDK 命令提示