none
Visual Stidio 2010 実行ファイルの生成先に関する質問です。 RRS feed

  • 質問

  • みなさん、お世話になります。

    早速ですが質問をさせて頂きます。


    Visual C# 2008 でプロジェクトを新規作成してソリューションのビルドを行うと
    プロジェクト名のフォルダーの bin\Release\ に実行ファイルが生成されます。

    Visual Studio 2010 で同様の操作を行うと bin\Release\ が存在しません。
    実行ファイルは、何処に生成されるのでしょうか?

    プロジェクトのプロパティのあるタブ【ビルド】を見ると、構成:アクティブ(Debug)
    になっており、ソリューションのプロパティから構成をアクティブ(Release)に変更
    すると Visual C# 2008 の場合と同じように実行ファイルが生成されるようになった
    のですが、これで良いのかよく分かりません。

    また、新しいプロジェクトを作る際に デフォルトで bin\Release\ に実行ファイルが
    生成されるようにしたいのですが、どうすれば良いのでしょうか?

    それとも、Visual Studio 2010 では、デフォルトの実行ファイル生成先が別の所に
    あるのでしょうか。

    ご教授下さいますよう、よろしくお願い致します。

    2010年12月1日 2:48

回答

  • はい、Visual C# 2008 Express Edition ではそうでした。
    しかし、Visual Studio 2010 では、その様にならないので困っています。

    Express Edition はいくつかの機能が省略(簡略化)されており、その一環でビルドとやれば Release が、デバッグ実行とやれば Debug がビルドされる仕組みになっていたはずです。(デフォルトがそうなっている)

    VS2010 の Professional 以上でそれを実現するには、ツール - オプション でオプションダイアログを開き、左側の上の方に隠れている プロジェクトおよびソリューション - 全般 にある「ビルド構成の詳細を表示」のチェックを外せばできるようです。
    このチェックをオフにすると、デバッグ実行で Debug 構成が、ビルドで Release 構成がターゲットになります。

    # 個人的には、Debug/Release を理解して使い分けることをおすすめしておきますが。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2010年12月1日 14:32
    モデレータ

すべての返信

  • >Visual C# 2008 でプロジェクトを新規作成してソリューションのビルドを行うと
    >プロジェクト名のフォルダーの bin\Release\ に実行ファイルが生成されます。

    プロジェクトの種別は何でしょうか?

    Windows.Forms, Windows コンソールに関しては、bin\Release, bin\Debug にビルド結果が出力されるはずですが。。。

    2010年12月1日 3:25
  • VS2008 もデフォルト構成は Debug ですよ。ご自身で Release に変更されていただけではないでしょうか?

    生成されるイメージファイル (*.exe; *.dll) の場所は、それぞれの構成毎に設定ができますが、デフォルトでは Debug 構成は bin/Debug/ に出力され、Release 構成は bin/Release/ に出力されます。

    バッチビルドで全構成をビルドされたりすれば全構成の生成がされますし、通常のビルドでは、アクティブな構成だけがビルドされます。

    # そもそも、標準の Debug 構成と Release 構成の使い分けができていないのは非常に危険だと思われるので、そのあたりはちゃんと理解したほうがよいかと思います。

    2010年12月1日 3:47
  • 渋木宏明 様
    早速、有り難うございます。

    種別と言いますと、Windows フォーム アプリケーションです。
    (という事で、よろしかったでしょうか)

    > Windows.Forms, Windows コンソールに関しては、bin\Release, bin\Debug に
    > ビルド結果が出力されるはずですが。。。

    はい、Visual C# 2008 Express Edition ではそうでした。
    しかし、Visual Studio 2010 では、その様にならないので困っています。

    この辺りは十分理解ができていないため、インストールの後に設定変更などは
    行っていないのに、なぜ違いが生じるのか分からず困っています。

    まずは、Visual Studio 2010 でもデフォルトの設定にしたいのです。

    どうぞ、よろしくお願いします。

    2010年12月1日 5:09
  • K. Takaoka 様
    早速、有り難うございます。


    > VS2008 もデフォルト構成は Debug ですよ。ご自身で Release に
    > 変更されていただけではないでしょうか?

    VS2008 のインストールは、1年以上前の事で確実な事は言えませんが、よく分からない
    箇所をデフォルトから変更した覚えは無いのですが・・・
    (でも、『デフォルト構成は Debug』なのであれば、変更した事になりますネ)


    > ・・・設定ができますが、デフォルトでは Debug 構成は bin/Debug/ に出力され、
    > Release 構成は bin/Release/ に出力されます。

    との事ですが、Visual Studio 2010 ではインストールした直後の状態(設定変更なし)で
    『新しいプロジェクト・・・』で新規作成してもフォルダー bin/Release/ そのものが
    ありません。


    > # そもそも、・・・・・そのあたりはちゃんと理解したほうがよいかと思います。

    仰る通りで、努力したいと思っていますが、参考になる資料(URL等)を教えて頂ければ
    幸いです。

    どうぞ、宜しくお願いします。

    2010年12月1日 5:10
  • > 『新しいプロジェクト・・・』で新規作成してもフォルダー bin/Release/ そのものがありません。

    1度もビルドしていないということはないですか? バッチビルドですべての構成をビルドしなおしてみてはどうでしょう。

    > 参考になる資料(URL等)を教えて頂ければ幸いです。

    すぐには出てこないのですが、とりあえず「構成」はいつでも追加したり削除したりできます。Debug と Release は、Visual Studio が自動で作成する標準的な構成です。おおむねは、

    • Debug: デバッグ用の構成。実行ファイルは最適化などが行われていないため、エラーが発生した場合にエラーが発生した行を知ることができたりします。普段 Visual Studio 上で作業する場合はこちらがベター。
    • Release: リリース用の構成。実行ファイルは最適化などが行われているため、エラーが発生した場合にエラーが発生した行を知ることができない場合がそれなりにあります。(メソッドまで)利用者にプログラムを配布する場合はこちら。

    標準の診断ツール (System.Diagnostics.Debug クラスなど) では、シンボル DEBUG と TRACE が定義されているかどうかで挙動が違います。たとえば、以下のような内容を Button1 の Click イベントなどに設定すると、Debug 構成では DEBUG シンボルが定義されているため [出力] ウィンドウにメッセージが表示されますが、Release 構成では DEBUG シンボルが定義されていないため、[出力] ウィンドウには表示されなかったりします。

    private void Button1_Click(object sender, EventArgs e)
    {
      System.Diagnostics.Debug.WriteLine("--- 作業開始");
    
      // メッセージボックスが表示された時点で↑が出力されています
      MessageBox.Show("Test");
    
      // メッセージボックスを閉じると、↓出力されます
      System.Diagnostics.Debug.WriteLine("--- 作業完了");
    }
    
    
    2010年12月1日 5:49
  • はい、Visual C# 2008 Express Edition ではそうでした。
    しかし、Visual Studio 2010 では、その様にならないので困っています。

    Express Edition はいくつかの機能が省略(簡略化)されており、その一環でビルドとやれば Release が、デバッグ実行とやれば Debug がビルドされる仕組みになっていたはずです。(デフォルトがそうなっている)

    VS2010 の Professional 以上でそれを実現するには、ツール - オプション でオプションダイアログを開き、左側の上の方に隠れている プロジェクトおよびソリューション - 全般 にある「ビルド構成の詳細を表示」のチェックを外せばできるようです。
    このチェックをオフにすると、デバッグ実行で Debug 構成が、ビルドで Release 構成がターゲットになります。

    # 個人的には、Debug/Release を理解して使い分けることをおすすめしておきますが。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2010年12月1日 14:32
    モデレータ
  • > ビルドとやれば Release が、デバッグ実行とやれば Debug がビルドされる仕組みになっていたはずです

    Express とデフォルトの挙動が違うんですね、こんなところにも差があるとは知りませんでした。

    --

    このオプションをオフにしていると、[ソリューションのビルド]、[ソリューションのリビルド]、[ソリューションのクリーン] などの [ビルド] メニューのコマンドがリリース構成で実行され、[デバッグ開始]、[デバッグなしで開始] などの [デバッグ] メニューのコマンドがデバッグ構成で実行されます。
    
    ※ 対象のプロジェクトに作成されている構成が単一または、Debug/Release の2つの場合のみ有効
    2010年12月2日 0:01
  • Azulean さん、こんばんわ!

    お世話になります。

    Express Edition は簡略版と言う事は聞いていましたが、こんな所が
    異なるのですネ

    教えて頂いた通り、チェックを外した状態でプロジェクトやソリュー
    ションのプロパティを見ると、ビルド/デバッグのタブで『構成』
    『プラットフォーム』を設定する箇所が無くなり、Express Edition
    と同じような動きになりました。

    取りあえずは、このチェックを外して使う事とし、アドバイス頂いている
    ように、この辺りの仕組み・機能を使いこなせるよう、頑張ってみたいと
    思っています。

    今後とも、よろしくお願いいたします。
    どうも、有難うございました。

    2010年12月2日 14:53
  • K. Takaoka さん、こんばんわ!

    色々と有難うございます。

    あの後、『構成』に絡めて色々と調べてみたのですが、知識不足が災いして
    まだ十分理解するには至っていません。

    取りあえずは、Azulean さんに教えて頂いた方法で凌ぎながら、先に教えて
    頂いた事柄を参考に勉強したいと思っています。

    また質問させて頂く事と思いますが、その節にはよろしくお願いいたします。
    どうも、有難うございました。

    このスレッドは、これで一旦クローズさせて頂きます。

    2010年12月2日 14:55