Visual Studio のデザイナー上で参照が必要な DLL をロードできずにエラーが発生します

適用対象: Visual Studio Premium 2010Visual Studio Professional 2010Visual Studio Ultimate 2010

現象


Visual Studio のデザイナー画面を開いた場合に、"変数 '***' は宣言されていないか、または割り当てられていません。" というエラーメッセージが表示され、デザイナー画面を表示できません。

原因


この現象は、デザイナー画面の表示時に、Visual Studio がコントロールの表示に必要なアセンブリをロードできない場合に発生します。

コントロールが複雑な継承関係や依存関係をもち、参照先の一つ以上のアセンブリを Visual Studio の実行プロセスである devenv.exe が、アセンブリの検索パス上から見つけることができない場合にこのような現象が発生します。

この現象は、アセンブリがネイティブ コードの DLL に依存し、当該 DLL を devenv.exe がロードできない場合にも発生します。

回避策


以下のいずれかの方法で、デザイナー画面でエラーが発生する現象に対処することが可能です。

  1. 対象のアセンブリを GAC に登録する方法

    Visual Studio が検索およびロードに失敗しているアセンブリが厳密名をもつ場合、当該アセンブリと依存するアセンブリを全てグローバル アセンブリ キャッシュ (GAC) に登録します。
    アセンブリを GAC に登録する方法については以下のドキュメントを参照してください。
    方法 : グローバル アセンブリ キャッシュにアセンブリをインストールする
    http://msdn.microsoft.com/ja-jp/library/vstudio/dkkx7f79.aspx

  2. デザイン モードでは依存関係のあるアセンブリを呼び出さないようにする方法

    Visual Studio が検索およびロードに失敗しているアセンブリを、デザイン モードでは使用しないようにコードを変更します。デザイン モードの判定には Component.DesignMode プロパティを使用します。

    コード例)
     
        public partial class Form1 : Form
    {
    ...
    public void InitializeSomeObjects()
    {
    if (!this.DesignMode)
    {
          // DLL の参照が必要な処理
    MyComplicatedClass obj = new MyComplicatedClass();
    }
    }
    }
      
    DesignMode プロパティの詳細は以下のドキュメントを参照してください。
    Component.DesignMode プロパティ
    http://msdn.microsoft.com/ja-jp/library/system.componentmodel.component.designmode(v=vs.110).aspx

  3. アセンブリを配置したフォルダーを環境変数 PATH に設定する方法

    Visual Studio の起動時などに、PATH 環境変数にアセンブリを配置したフォルダーを追加します。
    以下のように、コマンド プロンプトから環境変数 PATH にフォルダーを追加し、Visual Studio の実行ファイルである devenv.exe を起動します。

    手順)
    Visual Studio の開発者コマンド プロンプトを起動し、以下のコマンドを実行して PATH を追加してからVisual Studio を起動します。
    > set path=%path%;<アセンブリを配置したフォルダーのパス>
    > devenv.exe

状況


 この動作は仕様です。