语句引用编程元素,但编译器找不到具有该确切名称的元素。
错误 ID: BC30451
更正此错误
检查引用语句中名称的拼写。 Visual Basic 不区分大小写,但拼写的任何其他变体都被视为完全不同的名称。 请注意,下划线(
_)是名称的一部分,因此属于拼写。检查对象与其成员之间是否具有成员访问运算符 (
.)。 例如,如果你有一个名为TextBoxTextBox1的控件,若要访问其Text属性,则应键入TextBox1.Text。 如果改为键入TextBox1Text,则已创建其他名称。如果拼写正确且任何对象成员访问的语法正确,请验证是否已声明该元素。 有关详细信息,请参阅 声明的元素。
如果已声明编程元素,请检查它是否在范围内。 如果引用语句位于声明编程元素的区域之外,则可能需要限定元素名称。 有关详细信息,请参阅 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>