20

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

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

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

このエラーが発生しています: project not up to date because "insert file name here".lastbuildstate is missing . 実際のビジュアル スタジオでは、何も記録されないことに注意してください。私はグーグルでこれについて何も見つけることができませんでした。ログを誤って有効にした可能性がありますが、これはエラーだと思います。

4

6 に答える 6

28

再構築が必要な理由を Visual Studio に通知させる必要があります。Visual Studio 2015には、これに対するサポートが組み込まれています。

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

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

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

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(Colin Smith の回答: https://stackoverflow.com/a/21759835/1941779を参照)。このソリューションは、Visual Studio 2015 では機能しないことに注意してください。

于 2016-02-26T04:00:40.677 に答える
28

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

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

その情報は、次にビルドを開始するときに使用および更新され、「古い」ファイルを検出するのに役立ちます。これにより、ビルド システムは (すべてを再度ビルドするのではなく) 再ビルドする必要があるビットのみをビルドできるようになります。

「期限切れ」の問題の原因は何ですか?

この問題は、ファイル内の誤った情報または古い情報が原因である可能性があり*.tlogます。

主に次の 3 つの方法があります。

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

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

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

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

「クリーン+ビルド」または「リビルド」を実行しても、常に修正されるとは限りません...これらの操作では「tlog」ファイルが削除されないためです。そう:

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

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

存在しないファイルを特定するにはどうすればよいですか?

Visual Studioが古いと考えているファイルを正確に知りたい/見つけたい場合は、Visual Studioでいくつかの診断情報をオンにすることができます....そしてDebugViewでメッセージを見てください....プローブしているファイル。

あなたdevenv.exe.configが入れます:

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

詳細

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

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

「Start Debugging/F5」を実行すると、Visual Studio は依存するチェックを行い、「古いファイル」があると見なします。

「ソリューションのクリーン」または「ソリューションの再構築」を行っても、「古いファイル」というメッセージが表示されます。

ここを参照してください:

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

解決策は、すべての .tlog ファイルを削除することです。.tlog ファイルは、次にビルドを実行するときに再生成されます...そして、その時点から、偽の「古いファイル」を取得することはありません。メッセージ....それらが本当に古くなっている場合を除きます。

于 2014-02-13T16:26:24.460 に答える