Поделиться через


BC30451: имя "<имя>" не объявлено

Оператор ссылается на элемент программирования, но компилятор не может найти элемент с таким точным именем.

Идентификатор ошибки: BC30451

Исправление ошибки

  1. Проверьте правильность написания в ссылающемся операторе. Visual Basic не учитывает регистр, но любой другой вариант орфографии считается совершенно другим именем. Обратите внимание, что символ подчеркивания (_) является частью имени и, следовательно, частью орфографии.

  2. Убедитесь, что у вас есть оператор доступа к члену (.) между объектом и его членом. Например, если у вас есть элемент управления TextBox с именем TextBox1, то для доступа к его свойству Text следует ввести TextBox1.Text. Если вместо этого ввести TextBox1Text, будет создано другое имя.

  3. Если правописание правильно и синтаксис доступа к любому члену объекта правильный, убедитесь, что элемент объявлен. Дополнительные сведения см. в разделе "Объявленные элементы".

  4. Если элемент программирования объявлен, проверка, что он находится в область. Если оператор ссылки находится за пределами региона, объявляющего элемент программирования, может потребоваться указать имя элемента. Для получения дополнительной информации см. Scope in Visual Basic.

  5. Если вы не используете полный тип или имя типа и члена (например, код ссылается на свойство, а MethodInfo.Name не System.Reflection.MethodInfo.Name), добавьте инструкцию Import.

  6. Если вы пытаетесь скомпилировать проект в стиле SDK (проект с файлом *.vbproj, начинающимся с строки <Project Sdk="Microsoft.NET.Sdk">), а сообщение об ошибке ссылается на тип или член в сборке 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>
    

См. также