次の方法で共有


BC30451: 名前 '<name>' は宣言されていません

ステートメントはプログラミング要素を参照しますが、コンパイラはその正確な名前を持つ要素を見つけることができません。

エラー ID: BC30451

このエラーを解決するには

  1. 参照元のステートメントの名前のスペルを確認します。 Visual Basic では大文字と小文字は区別されませんが、スペルのその他のバリエーションは完全に異なる名前と見なされます。 アンダースコア (_) は名前の一部であるため、スペル の一部であることに注意してください。

  2. オブジェクトとそのメンバーの間にメンバー アクセス演算子 (.) があることを確認します。 たとえば、TextBox1という名前のTextBox コントロールがある場合、そのTextプロパティにアクセスするには、TextBox1.Text入力する必要があります。 代わりに「 TextBox1Text」と入力すると、別の名前が作成されます。

  3. スペルが正しく、オブジェクト メンバー アクセスの構文が正しい場合は、要素が宣言されていることを確認します。 詳細については、「 宣言された要素」を参照してください。

  4. プログラミング要素が宣言されている場合は、スコープ内にあることを確認します。 参照元のステートメントがプログラミング要素を宣言する領域の外部にある場合は、要素名の修飾が必要になる場合があります。 詳細については、「 Visual Basic のスコープ」を参照してください。

  5. 完全修飾型または型とメンバー名を使用していない場合 (たとえば、コードはプロパティをSystem.Reflection.MethodInfo.NameではなくMethodInfo.Nameとして参照します)、Imports ステートメントを追加します。

  6. 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
    

    このエラーに対処するには、次の Visual Basic プロジェクト ファイルに示すように、 <VBRuntime>Default</VBRuntime> 要素をプロジェクト <PropertyGroup> セクションに追加します。

    <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>
    

こちらも参照ください