質問: 【主に聞きたいこと】 dllのファイルの配置場所ルールについて知りたいです。 【現在使用ツール】 Visual Studio2015 VB.NET 言語VB.NET 【ソリューションプログラムの現在の構成】 ソリューションプログラム | ーー クライアントプログラムフォルダ | ーー サーバプログラムフォルダ | ーー コモンプログラムフォルダ | ーー SystemInstフォルダ 設定:スタートアッププログラムがクライアントプログラム 【現在のファイル構成】 ーーーーーーーーーーーーーーーーーーーーーーーーーーー クライアントプログラムフォルダ > bin > x86 > Debugフォルダ内 クライアントプログラムフォルダ > obj > Releaseフォルダ内 クライアントプログラムフォルダ内 サーバプログラム コモンプログラム SystemInstフォルダ ーーーーーーーーーーーーーーーー 【疑問点】 Visual Studio2015のソリューション構成をDebugを選択し、ソリューションプラットフォームをx86を選択 そしてソリューションプログラムコンパイル指定をx86 Debugとしてビルドリビルドを行い、クライアントアプリ起動時にエラーとして 「クライアントは'text/html;charset=utf-8'の応答のコンテンツタイプを見つけましたが、'text/html'が必要です。」 が出ました。 解決方法としては、 サーバプログラムフォルダ > bin > x86 > Debugフォルダ内のdllを サーバプログラムフォルダ > binフォルダ内に入れてから クライアントプログラムを実行したところ正常起動できました。 具体的疑問点としては、ソリューションをまとめてビルドリビルドして出来上がったクライアントプログラムのbinの中のx86の中のDebugフォルダにできたexeファイルを実行してなぜサーバープログラムのbin直下のdllを見に行っているのでしょうか。 それともそのdllの種類によってクライアントプログラム直下でなければいけないですとか、objフォルダ直下、Debugフォルダ直下など決まっているものなのでしょうか。 参照とされるdllは、どんなときに作られるかそれとも手動(手作業で)入れているのでしょうか。 よろしくお願いいたします。 読みづらく申し訳ないです。書き直しました。
回答: 推測が入っていますので、厳密な回答ではないですが、 > > 具体的疑問点としては、ソリューションをまとめてビルドリビルドして出来上がったクライアントプログラムのbinの中のx86の中のDebugフォルダにできたexeファイルを実行してなぜサーバープログラムのbin直下のdllを見に行っているのでしょうか。 > > > については、クライアントプログラムのプロジェクトとサーバプログラムのプロジェクトは同じソリューションにあるとしても独立しているので、クライアントプログラムをデバッグ実行する、というだけではサーバプログラムもデバッグ実行するべきなのか、判断がつきにくいため、リリース時に配置されるであろうサーバプログラムのbin直下にアクセスしているのだと思います。 デバッグビルドされたdllやexeはデバッグ用の特殊なライブラリ等を使用していることもあって、標準ではdebugフォルダに出力されますが、他のシステム構成はリリース時の状態でもデバッグ実行できるようにデバッガが参照するパスを自動で判断してくれているというありがたいものだと私は解釈しています。