.NET Framework 4.5.2 をターゲットに VB.NET アプリケーションを再コンパイルするときの名前空間修飾の問題

現象

Microsoft .NET Framework 4.5.2 を対象に VB.NET アプリケーションを再コンパイルすると、コンパイル プロセス中に次のエラー メッセージが表示されることがあります。

注

'{Name}' は 'Windows' のメンバーではありません。

このメッセージでは、"{Name}" プレースホルダーは System.Windows 名前空間の子 ("フォーム" や "マークアップ" など) です。

たとえば、エラー メッセージは次のように表示される場合があります。

注

'Forms' は 'Windows' のメンバーではありません。

      

解決策

この問題には、.NET Framework 4.5.2 "Windows" 名前空間の競合が含まれます。 これは、Windows を使用するコードで発生します。System.Windows を参照する {Name}。{Name}。

この問題を解決するには、名前空間を完全に修飾するようにコードを変更するか、完全な名前空間をインポートし、その型を単純な名前で参照します。

たとえば、次のコードによってエラーが発生します。

Module Module1

  Sub Main()

    Windows.Forms.MessageBox.Show("Example")

  End Sub

End Module 

ただし、次のコードは正常にコンパイルされます。

Imports System.Windows.Forms

Module Module1

  Sub Main()

    MessageBox.Show("Example")

  End Sub

End Module

次のコードも正常にコンパイルされます。

Module Module1

  Sub Main()

    System.Windows.Forms.MessageBox.Show("Example")

  End Sub

End Module