none
参照設定したアセンブリのパスについて RRS feed

  • 質問

  • いつもお世話になっております。

    VS2005のC#でFormアプリを作成しています。

    参照設定でc:\work\hoge.dllを追加しているのですが、客先にこのプログラムを渡したところこのDLLの参照ができなくエラー(DLL自体はある)になると言われました。

    てっきり参照設定に追加したDLLのパスはプロジェクトファイルに相対パスで設定されているものと思っていましたが、プロジェクトファイルの中を見たら設定がないようです。

    レジストリに保存されているのでしょうか? 今回のケースのように他人に参照設定つきのプログラムを渡したいときは通常どのようにするものなのでしょうか?

     

     

     

    2010年9月3日 8:23

回答

  • 対象の DLL が GAC に登録されていたり、プロジェクトと同じところにあったりしないでしょうか?

    そうでない場合、プロジェクト ファイルの中になんらかの情報を残しておかないと、元の開発環境にある Visual Studio 自体も次にプロジェクトを開いたときに困ったことになってしまいそうに思います。
    手元にあるプロジェクト ファイルを開けてみると、GAC になさそうなやつは <HintPath> というタグの中に相対パスで入っているのですが。
    • 回答としてマーク ひろ太 2010年9月3日 9:34
    2010年9月3日 9:12

すべての返信

  • とりあえず、exeと同じ箇所に配置してたら動きますね。
    2010年9月3日 8:49
  • T-Yokooさん、こんにちは。

    dllはexeと同じ場所に配置しています。exeと同じ場所に配置すれば動くというのは実行時の話ですよね?

    どうも質問内容が分かりづらかったかもしれませんので再度説明しますと、

    私が困っているのはビルドの段階でのことです。プロジェクトファイルにはhoge.dllへの参照追加があることは記録されていますが、パスは記録されていないため、他の環境でビルドしようとするとhoge.dllがどこにあるか分からずエラーになってしまうようなんです。

    2010年9月3日 8:56
  • >他の環境でビルドしようとすると

    他の環境の参照設定をし直せばいいと思います。

    基本的には、開発環境は同じ階層で作成することが望ましいです。

    2010年9月3日 9:00
  • あぁ、失礼しました。

    相対パスで問題ないはずですけど、例えば

    c:\work\hoge.dll

    にたいして、プロジェクトはどこに配置してますか?例えば、

    C:\Work\dll\hoge.dll
    C:\Work\ProjectDir\Projectファイル

    で、Workディレクトリごと渡すんだったら大丈夫かと思いますが。

    2010年9月3日 9:08
  • 対象の DLL が GAC に登録されていたり、プロジェクトと同じところにあったりしないでしょうか?

    そうでない場合、プロジェクト ファイルの中になんらかの情報を残しておかないと、元の開発環境にある Visual Studio 自体も次にプロジェクトを開いたときに困ったことになってしまいそうに思います。
    手元にあるプロジェクト ファイルを開けてみると、GAC になさそうなやつは <HintPath> というタグの中に相対パスで入っているのですが。
    • 回答としてマーク ひろ太 2010年9月3日 9:34
    2010年9月3日 9:12
  • 皆様、ご回答ありがとうございます。

    まとめて回答させていただきたいと思います。

     

    >honefaiさん

    参照設定をやり直さなくてもいいようになんとかできないか? という質問です。

     

    >T-Yokooさん

    おっしゃるのと同様のフォルダ構成になっていてWorkフォルダごと渡しています。しかしhoge.dllがWork/dllに存在するという情報がどこにもないためエラーになっています。

     

    >totojoさん

    GACに登録されていませんし、プロジェクトと同じ場所にはありません。

    <HintPath>は試してみます。

     

    2010年9月3日 9:27
  • <HintPath>でうまくいきました!皆様ありがとうございました。

     

     

    2010年9月3日 9:37