web-dev-qa-db-ja.com

古いVisual Studioプロジェクト

Visual C++を機能させようとしていましたが、すべてのプロジェクトをビルドするときにこのエラーが発生します:「このプロジェクトは古くなっています」「ビルドしますか?」毎回ビルドに失敗します。

再構築してもビルドは失敗しますが、ロガーではエラーメッセージに気付かないため、ログが適切に記録されていないと思われます(サードパーティのプログラムを使用して記録しています)。

ここでいくつかの指示に従いました: http://blogs.msdn.com/b/vsproject/archive/2009/07/21/enable-c-project-system-logging.aspx ロギングを有効にしました。

このエラーが発生しました:プロジェクトは最新ではありません。「ここにファイル名を挿入してください」。lastbuildstateがありません。実際のVisual Studioでは、ログに記録されるものは何もないことに注意してください。私はグーグルでこれについて何も見つけることができませんでした。ロギングを誤って有効にした可能性がありますが、これはエラーだと感じています。

20
user1795223

「tlog」ファイルとは何ですか?

「tlog」ファイルは、ビルド中に実行される「Tracker.exe」プロセスによって作成され、ビルドに関する情報を記録します。

その情報は、次回のビルド開始時に使用および更新され、「期限切れ」ファイルの検出に役立ちます。したがって、ビルドシステムは、(すべてを再ビルドするのではなく)再ビルドが必要なビットのみをビルドできます。

「古い」問題の原因は何ですか?

この問題は、*.tlogファイル。

発生する可能性のある主な3つの方法があります。

1)ハードディスク上にプロジェクトを構築し、ディレクトリを別の場所に移動しました...「tlog」ファイルは古い場所のパスを記録しましたが、ファイルを移動したため、もはや存在しないため、 「期限切れ」になります。

2)「プロジェクト」には、指定された場所に存在しないファイル(通常はヘッダーファイル)への参照があります。これは、ソース管理システムからファイルを削除したが、プロジェクトから削除するのを忘れた場合、または別の場所に「インストール」/存在する可能性のあるライブラリのヘッダーファイルを参照したために発生します。多くの場合、開発者はファイルが全員のマシンの同じ「場所」にあると想定します。

3)プロジェクトの「リファクタリング」を行い、ファイルを別のサブディレクトリに移動したり、名前を変更したりしたため、「tlog」に記録されたファイルのパス/名前がディスク上に存在するものと一致しません。 。

それを修正する方法は何ですか?

「Clean + Build」または「Rebuild」を実行しても、必ずしも修正されるとは限りません...これらの操作では「tlog」ファイルが削除されないためです。そう:

  • ソリューション/プロジェクトディレクトリにある「tlog」ファイルを削除し、再構築します。

  • プロジェクトが存在しないファイルを参照していないことを確認してください

どのファイルが存在しないかをどのように判断しますか?

Visual Studioが古くなっていると考えているファイルを正確に知りたい/見つけたい場合は、Visual Studioでいくつかの診断情報をオンにして、DebugViewでメッセージを見て...調査中のファイル。

devenv.exe.config あなたが置く:

<system.diagnostics>
      <switches>
        <add name="CPS" value="4" />
      </switches>
    </system.diagnostics> 

詳細

特定のディレクトリにソリューションとプロジェクトのセットを作成したとしましょう。 S:\ MYPROJECTS、およびコンパイルして実行/デバッグするなど。

次に、そのディレクトリ全体をドライブ上の別の場所に移動するか、プロジェクトをリファクタリングします。ディレクトリ名などを変更する.

「デバッグの開始/ F5」を実行すると、Visual Studioは依存するチェックを実行し、「古いファイル」があると判断します。

「Clean Solution」または「Rebuild Solution」を実行しても、「out of date files」メッセージが表示されます。

こちらをご覧ください:

この問題は、依存関係チェック中に参照されている「.tlog」ファイルによって引き起こされます。ソリューション/プロジェクトを(ビルド中間ファイルとともに)移動すると、Visual Studioビルダーに混乱が生じます。

解決策は、すべての.tlogファイルを削除することです。これらは、次にビルドを行うときに再生成されます。その時点から、「古いファイル」という偽のメッセージは表示されません。メッセージ....本当に時代遅れでない限り。

26
Colin Smith

Visual Studioに、再構築が必要な理由を伝える必要があります。 Visual Studio 2015には、このサポートが組み込まれています:

  • ツール(メニュー)
  • オプション
  • プロジェクトとソリューション
  • ビルドして実行

MSBuildプロジェクトのビルド出力の詳細度をDetailedまたはDiagnosticsに変更します。

私の場合、次のようなメッセージが出力されました。

1>------ Up-To-Date check: Project: xyz, Configuration: xyz ------
1>Project not up to date because build input 'C:\ws\Missing.h' is missing.

...そして、そのヘッダーをプロジェクトから削除すると、問題が修正されました。

古いVisual Studioバージョンでこの情報を取得するには、DebugViewを使用してdevenv.exe.config(コリンスミスの答えを参照してください: https://stackoverflow.com/a/21759835/1941779 )。このソリューションはVisual Studio 2015では機能しないことに注意してください。

25
CrouZ

私も、変更はありませんでしたが、「プロジェクトが最新ではありません」というエラーを出し続けました。ソリューションエクスプローラーにリストされているヘッダーファイルをトレースしました。ヘッダーファイルは使用されなくなり、プロジェクトのディレクトリから削除されていました。 SEリストからそれを削除すると、無関係なエラーメッセージがポップアップするのを修正しました。

5
dankos

私もこの問題を抱えていました。私の場合、その理由は、指定された場所に存在しないファイル(通常はヘッダーファイル)への参照でした。

3
lucky zhao

私はこの問題に遭遇し、colinsmithが投稿した診断トリックを使用して、実際にどこにも存在しないファイルを参照している(。 、ただしプロジェクトファイルから削除されることはありません)。

1
Stephen Edmonds

後世のために、私はこの問題に直面していました。そして、私のコンピューターの時計がなんとか過去48時間前に跳ね上がったことに気付きました。現在の時刻に戻した後、警告は消えました。

0
yano