BC30451: 名称“<name>”未声明
语句引用一个编程元素,但编译器无法找到具有相同名称的元素。
错误 ID:BC30451
更正此错误
检查引用语句中名称的拼写。 Visual Basic 不区分大小写,但拼写中的任何其他变化都被视为完全不同的名称。 请注意,下划线 (
_
) 是名称的一部分,因此也是拼写的一部分。确保对象及其成员之间具有成员访问运算符 (
.
)。 例如,如果你拥有名为 TextBox 的TextBox1
控件,则要键入 Text 才可访问其TextBox1.Text
。 如果你转而键入TextBox1Text
,则会创建不同的名称。如果拼写正确并且任何对象成员访问的语法正确,请验证该元素是否已被声明。 有关详细信息,请参阅声明的元素。
如果编程元素已声明,请检查编程元素是否在范围内。 如果引用语句位于声明编程元素的区域外,则可能需要限定元素名称。 有关详细信息,请参阅 Scope in Visual Basic。
如果你未使用完全限定类型或类型和成员名称(例如,你的代码将属性称为
MethodInfo.Name
而不是System.Reflection.MethodInfo.Name
),请添加 Imports 语句。如果你尝试编译 SDK 样式的项目(带有以
<Project Sdk="Microsoft.NET.Sdk">
行开头的 *.vbproj 文件的项目),并且错误消息涉及了 Microsoft.VisualBasic.dll 程序集中的类型或成员,请将你的应用程序配置为使用对 Visual Basic 运行时库的引用进行编译。 默认情况下,库的一个子集嵌入 SDK 样式项目中的程序集。例如,下面的示例无法编译,因为找不到 Microsoft.VisualBasic.CompilerServices.Conversions.ChangeType 方法。 它不会嵌入到应用程序附带的 Visual Basic 运行时的子集中。
Imports Microsoft.VisualBasic.CompilerServices Public Module Example Sub Main(args As String()) Dim originalValue As String = args(0) Dim t As Type = GetType(Int32) Dim i As Int32 = Conversions.ChangeType(originalValue, t) Console.WriteLine($"'{originalValue}' --> {i}") End Sub End Module
要解决此错误,请将
<VBRuntime>Default</VBRuntime>
元素添加到项目的<PropertyGroup>
部分,如下面的 Visual Basic 项目文件所示。<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <Reference Include="Microsoft.VisualBasic" /> </ItemGroup> <PropertyGroup> <VBRuntime>Default</VBRuntime> <OutputType>Exe</OutputType> <RootNamespace>vbruntime</RootNamespace> <TargetFramework>net472</TargetFramework> </PropertyGroup> </Project>