- CS0012:类型“type”定义在一个未被引用的程序集内。必须添加对程序集“assembly”的引用。
- CS0234:命名空间中不存在该类型或命名空间名称,是否缺少程序集引用?
- CS0246:未能找到类型或命名空间名称(是否缺少 using 指令或程序集引用?)
- CS0400: 无法在全局命名空间中找到类型或命名空间名称(缺少程序集引用吗?)
- CS1068: 无法在全局命名空间中找到类型名称。此类型已转发到另一个程序集。请考虑添加对该程序集的引用。
- CS1069: 无法在命名空间中找到类型名称。此类型已转发到另一个程序集。请考虑添加对该程序集的引用。
- CS1070: 找不到类型名称。此类型已转发到另一个程序集。请考虑添加对该程序集的引用。
- CS1704: 已导入具有相同简单名称的程序集。尝试删除其中一个引用或对其进行签名以并行启用。
- CS1714: 无法解析或无效此类型的基类或接口。
- CS1760: 多个程序集引用相同的元数据,但只有一个是链接引用(使用 /link 选项指定);请考虑删除其中一个引用。
- CS7008: 程序集名称保留,不能在交互式会话中用作引用。
- CS7068:对类型的引用声明在此程序集中定义了该类型,但源代码或任何添加的模块中并未定义该类型。
- CS7069:引用声称某类型是在另一个程序集定义的,但无法找到该程序集。
- CS7071: 程序集引用无效,无法解析。
- CS7079: 类型在尚未添加的模块中定义。必须添加模块。
- CS8090: 引用的程序集中存在错误。
- CS8203: 程序集名称无效。
- CS8206:程序集“assembly name”中的模块“module name”正在将类型“type name”转发到多个程序集:“first assembly name”和“second assembly name”。
- CS8356: 预定义类型“type name”在多个被引用的程序集中声明:“first assembly name”和“second assembly name”
- CS9286:类型不包含定义,且未找到接收器类型的可访问扩展成员(是否缺少 using 指令或程序集引用?)
此外,本文还介绍了以下警告:
- CS1683:引用类型“类型名称”声称已在此程序集中定义,但该类型在源代码或任何添加的模块中均未定义。
缺少引用
以下错误和警告表明您缺少程序集引用:
- CS0012:在未被引用的程序集中定义了类型“type”。必须添加对程序集“assembly”的引用。
- CS0234: 命名空间中不存在类型或命名空间名称(是否缺少程序集引用?)
- CS0246:未能找到类型或命名空间名称(是否缺少 using 指令或程序集引用?)
- CS1714: 无法解析或无效此类型的基类或接口。
- CS9286:类型不包含定义,且未找到接收器类型的可访问扩展成员(是否缺少 using 指令或程序集引用?)
这些编译器错误指示代码中存在以下问题之一:
- 项目不引用所需的程序集。 若要修复此错误, 请添加对所需程序集的引用。
- 你拼错了类型名称。 检查类型的名称。
- 你在需要System.Type名称的地方使用了变量名称,比如在
typeof运算符或者is运算符中。 - 当类型不在全局命名空间中时,你使用了全局范围运算符 (
::)。 - 你正在访问扩展成员,并且命名空间未在指令中
using指定,或者未引用包含扩展的程序集。
当程序集看起来已被引用时
如果你的项目中似乎已引用了该程序集,但仍收到 CS0012,请尝试以下故障排除步骤:
还原包:运行
dotnet restore以确保正确解析所有包引用,尤其是在安装或卸载 NuGet 包之后。清除 NuGet 包缓存并还原:
dotnet nuget locals all --clear dotnet restore检查版本冲突:验证所有引用的程序集是否都使用兼容版本。 在生成输出中查找绑定重定向警告。
清理解决方案并重新生成,以确保不会保留过时的引用:
dotnet clean dotnet build验证包完整性:如果该错误是在包操作之后出现的,请通过移除并重新安装该包来确保它已正确安装:
dotnet remove package [PackageName] dotnet add package [PackageName]
类型转发
- CS1068: 无法在全局命名空间中找到类型名称。此类型已转发到另一个程序集。请考虑添加对该程序集的引用。
- CS1069: 无法在命名空间中找到类型名称。此类型已转发到另一个程序集。请考虑添加对该程序集的引用。
- CS1070: 找不到类型名称。此类型已转发到另一个程序集。请考虑添加对该程序集的引用。
- CS8206:程序集“assembly name”中的模块“module name”正在将类型“type name”转发到多个程序集:“first assembly name”和“second assembly name”。
CS1068、CS1069 和 CS1070 表示引用已转发到其他程序集的类型时发生的错误。 添加对错误消息中指示的程序集的引用。
CS8206 表示在引用的程序集或模块中存在冲突的类型转发器元数据。 同一类型被转发到一个以上的目标程序集。 使用已修正或重建的依赖项,将该类型转发到单一目标。 确保包和程序集版本一致,或删除引入冲突元数据的引用。 对本地类型声明的源别名或不相关的更改不会更正引用的元数据。
重复引用
以下错误表示程序集引用重复:
- CS1704: 已导入具有相同简单名称的程序集。尝试删除其中一个引用或对其进行签名以并行启用。
- CS1760: 多个程序集引用相同的元数据,但只有一个是链接引用(使用 /link 选项指定);请考虑删除其中一个引用。
- CS8356:预定义类型“type name”已在多个被引用的程序集中声明:“first assembly name”和“second assembly name”
若要修复这些错误,请删除其中一个引用或解决重复。 重复的原因包括:
- 具有相同名称的多个未签名程序集。
- 项目引用同一程序集的多个版本。
对于 CS8356,请删除或替换定义相同预定义运行时类型的重复或不兼容引用。 确保项目面向一个一致的框架和引用程序集集。 不要添加预定义类型的另一个源定义。
程序集引用无效
以下错误指示程序集引用无效:
- CS7008: 程序集名称保留,不能在交互式会话中用作引用。
- CS7068:对某类型的引用声称该类型是在此程序集中定义的,但该类型并未在源代码或任何添加的模块中定义。
- CS7069:对类型的引用声明在另一个程序集中定义了该类型,但找不到它。
- CS7071: 程序集引用无效,无法解析。
- CS7079: 类型在尚未添加的模块中定义。必须添加模块。
- CS8090: 引用的程序集中存在错误。
- CS8203: 程序集名称无效。
以下警告还指示无效的引用程序集:
- CS1683:引用类型‘类型名称’声称在此程序集内定义,但在源代码或任何添加的模块中未定义
检查是否正确拼写了程序集名称。 引用的程序集文件可能无效。