none
新しいプロジェクト保存時に作成される不要なファイルについて RRS feed

  • 質問

  • お世話になります。

    早速ですが、以下の現象について原因・解決策をご存知の方おられませんでしょうか?
    (説明文が若干長くなりすみませんが、よろしくお願いします)

    ==================================================
    ■環境(前提条件)
      OS    :Windows 7 Pro(32bit/64bit)
      開発ツール:Visual Studio 2010 Pro(Version 10.0.40219.1 SP1Rel)
      開発言語 :Visual Basic(その他の言語でも同様の現象が発生する可能性があるので共通フォーラムに投稿しております)

    ■再現手順
      1.テンプレートを使用して、新規のプロジェクトを作成します。

        ※使用するテンプレートについて
           ・過去に作成したWindows フォームアプリケーションです。
           ・以下の条件が一致していれば、内容はどんなものでも関係ないようです。
           ・プロジェクトのプロパティ内のコンパイルタブ内の設定
              構成:アクティブ(Debug)
              ビルド出力パス:「..\..\EXE\」
           ・プロジェクトのプロパティ内のデバッグタブ内の設定
              構成:アクティブ(Debug)
              「Visual Studio ホスティングプロセスを有効にする」チェック:ON
           ・プロジェクトのプロパティ内の参照タブ内の設定
              特にこれといって不要な参照設定はしておりません。
              (別プロジェクトを参照しているなどは全くない状況です)

      2.「全て保存」を選択し任意のフォルダ(①)にプロジェクトを保存します。

    ■発生現象
      (①)のフォルダと同じ階層にある、EXEフォルダ内に不要なファイルが複数作成されてしまいます。

        ※不要なファイルとは
           ・再現手順の2で作成したプロジェクトとは "全く関係のない" ファイル。
            (もちろん関係のあるファイルも作成されていますが、それとは別のファイルです)
           ・拡張子が「.vshost.exe.manifest」「.pdb」「.xml」「.exe」「.vshost.exe」となっている複数のファイルで、
            どうも、これまで過去にその端末?で新規作成したことのある?プロジェクト名のファイルの様です。
    ==================================================

    発生現象について、説明するのが少し難しいのですが、再現手順で作成したプロジェクトの「.exe」「.vshost.exe」「.pdb」ファイル等は作成されてまったく問題ないのですが、それ以外に上記のようなまったく関係のない(過去作成したことのあるプロジェクトの?)ファイルが複数作成されてしまうのです。。。

    「.vshost.exe」や「.pdb」等は作成されても何とかなるのですが、「.exe」ファイルが作成されそれが古い資源だったりするので、他のプロジェクトの最新資源が上書きされ大変困ってしまいます。。。

    これは何かVisual Studioの設定によるものなのでしょうか?
    すみませんが、分かる方おられたらご教授をお願いします。

    2012年2月9日 7:41

回答

  • オプションの「プロジェクトおよびソリューション」の「全般」にある、「作成時に新しいプロジェクトを保存」のチェックを外しているからでしょう。
    そこにチェックを入れるか、プロジェクトファイルよりも上のフォルダーにファイルを出力する設定にすることをあきらめてください。(代替案:ビルド後イベントでコピーするとか)

    このチェックを外すと、Vista/7 だと C:\Users\(アカウント名)\AppData\Local\Temporary Projects にプロジェクトが一時的に作成されます。Temporary Projects は不要になれば削除されますが、あなたの出力先の設定がそのフォルダーよりも上のフォルダーにファイルを作成する設定になっているため、いつまでも \AppData\Local\EXE にゴミが残るため、保存するたびに増えたゴミと一緒にコピーされるのでしょう。

    .NET のプロジェクトにおいて、基本的にはプロジェクト配下の相対パスに置かれることを想定して設計されていると思われます。あえて .. を使って上位のフォルダーに指定した場合は、うまく動かなくてもあまり文句は言えないかなと思います。


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

    2012年2月9日 13:49
    モデレータ

すべての返信

  • 複数作成されるのではなく,前からのものが単純に残っているだけではないでしょうか。

    ..\..\EXE\ということは,通常の設定だとソリューションディレクトリの外側になりますよね。
    他のプロジェクトでも同じ設定をしたのであれば,両方のプロジェクトが同一のディレクトリに書き出すことになります。

    ..\EXE\のように,ソリューションディレクトリの内部に出力するよう変更してみてはどうでしょうか。

    2012年2月9日 8:27
  • YuO様

    回答ありがとうございます。

    >複数作成されるのではなく,前からのものが単純に残っているだけではないでしょうか。
    説明不足ですみません。。
    新しいプロジェクトを作成する直前に、「..\..\EXE\」内のファイルを全て削除した状態で関係のないファイルが複数作成されてしまうようなのです。。。

    >..\EXE\のように,ソリューションディレクトリの内部に出力するよう変更してみてはどうでしょうか。
    実際に試してみました。
    こちらでは、不具合は発生しないようです。
    ちなみに、標準の「bin\Debug\」に戻しても不具合は発生しないようです。

    ビルド出力パスを「..\..\EXE\」としているところに問題がありそうですね。。。
    パスの設定を変えるだけで、動きが変化するのは困りますね。。

    根本的な原因が分かればいいのですが。。。
    もしかするとVS自体のバグということも考えられそうですね。

    2012年2月9日 8:44
  • オプションの「プロジェクトおよびソリューション」の「全般」にある、「作成時に新しいプロジェクトを保存」のチェックを外しているからでしょう。
    そこにチェックを入れるか、プロジェクトファイルよりも上のフォルダーにファイルを出力する設定にすることをあきらめてください。(代替案:ビルド後イベントでコピーするとか)

    このチェックを外すと、Vista/7 だと C:\Users\(アカウント名)\AppData\Local\Temporary Projects にプロジェクトが一時的に作成されます。Temporary Projects は不要になれば削除されますが、あなたの出力先の設定がそのフォルダーよりも上のフォルダーにファイルを作成する設定になっているため、いつまでも \AppData\Local\EXE にゴミが残るため、保存するたびに増えたゴミと一緒にコピーされるのでしょう。

    .NET のプロジェクトにおいて、基本的にはプロジェクト配下の相対パスに置かれることを想定して設計されていると思われます。あえて .. を使って上位のフォルダーに指定した場合は、うまく動かなくてもあまり文句は言えないかなと思います。


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

    2012年2月9日 13:49
    モデレータ
  • Visual Studio開発環境からだとそうですが、MSBuildを使い出力先ディレクトリを絶対パス指定にすると任意の位置に出力できます。
    # 開発環境からだと絶対パス指定ができません。
    • 編集済み 佐祐理 2012年2月9日 14:35
    2012年2月9日 14:26
  • Azulean様

    回答ありがとうございます。

    環境を調べてみたところ、ご指摘いただいた内容が原因でした。
    また、作成時に新しいプロジェクトを保存」のチェックをONにすることで、改善されることも確認できました。

    実際の開発作業でより、スムーズな作業ができる対応方法を検討してみたいと思います。

    大変分かりやすい説明で、根本的な原因も分かり大変感謝しております。

    また、何かの時は是非よろしくお願いいたします。

    2012年2月10日 0:31
  • 佐祐理様

    回答ありがとうございます。

    MSBuildを使って直接ビルドする方法もあるということですね。
    勉強になります。

    このあたりも含めて対応を検討してみたいと思います。
    ありがとうございました。

    2012年2月10日 0:34