webdevqa.jp.net

Visual Studio:「AlwaysCreate」が指定されているため、プロジェクトが最新ではありませんか?

ソリューションをVS2008からVS2010(SP1)に移行しました。
今、私のプロジェクトの1つは、最新であることの安らぎを見つけられません。すべてのビルドには次の出力があります。

1>------ Build started: Project: PROJ_NAME, Configuration: Release Win32 ------
1>Build started 19/05/2011 7:59:27 AM.
1>InitializeBuildStatus:
1>  Creating "Release\PROJ_NAME.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1>  All outputs are up-to-date.
1>  All outputs are up-to-date.
1>Lib:
1>  All outputs are up-to-date.
1>  PROJ_NAME.vcxproj -> C:\projFolder.PROJ_NAME.lib
1>FinalizeBuildStatus:
1>  Deleting file "Release\PROJ_NAME.unsuccessfulbuild".
1>  Touching "Release\PROJ_NAME.lastbuildstate".
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:00.09
========== Build: 1 succeeded, 0 failed, 5 up-to-date, 0 skipped ==========

何か案は?

34

プロジェクトにリストされているインクルードファイルの1つが実際には存在しなかったときに、同様の問題が発生しました。ファイルを削除しましたが、プロジェクトから削除するのを忘れていました。

依存関係チェッカーは、プロジェクトが最新ではないと判断しますが、ビルダーはビルドするものを見つけられません。

41
Bo Persson

同じファイルを含む2つのプロジェクトがありました。 2番目のプロジェクトがビルドされると、ファイルが再度コンパイルされ、「タッチ」日時が変更されます。次に、最初のプロジェクトに「AlwaysCreate」フラグを設定します。

次のxmlスニペットのように、「C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config」ファイルで「CPS」をオンにすることでこれを見つけました。これを有効にすると、DebugViewツールを使用して、VS2010からプロジェクトを再構築する理由を示すメッセージを取得できます。なぜこれらのメッセージがビルドログに入らないのかは私にはわかりませんが、とにかくそこにあります。

これを追加:

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

ここへ:

<?xml version ="1.0"?>
<configuration>
    <configSections>
        <section name="msbuildToolsets" type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection, Microsoft.Build.Engine, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </configSections>
    <system.diagnostics>
      <switches>
        <add name="CPS" value="4" />
      </switches>
    </system.diagnostics>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0.30319" />
34
Bzzt

.h以外のファイルもチェックする必要があります。私のプロジェクトでは、Readme.txtが見つかりませんでした。

2
Jacek

ソリューションを新しいフォルダーに移動し、新しいバージョンをビルドしたりデバッグしようとしたりするたびに、ソリューションを作成したばかりのプロジェクトをすべて解決したと主張したいと思います。

すべての.vcxprojファイルを検索し、CPS = 4でDebugViewを使用し(上記の@Bzztの回答を参照)、OLDロケーションでヘッダーファイルを探していることを発見しました。ソリューションはコピーではなく移動されたため、これらのファイルは存在しませんでした。

最終的にそれを解決したのは、ソリューションをきれいにし、1回再構築することでした。その後、「AlwaysCreate」はすべてのサブプロジェクトを「ビルド」しなくなりました。各構成(デバッグとリリース)を個別にクリーンアップする必要がありますが、クリーンな状態から再構築されると、すべてがうまくいきます。

私の場合、実際には何もビルドしませんでしたが、MSBuildまたは決定されたものが古くなったため、存在しないキャッシュファイルパスを使用していました。 Clean and Rebuildがそのキャッシュを置き換えてから、予想どおりにビルドされました

2
boatcoder

コマンドラインmsbuild.exeビルドの場合、/ verbosity:detailedを使用して、次の出力を検索できます。

  • コンパイルを見つけるために「としてコンパイルされます」
  • リンクを見つけるには「ソースのコンパイルが必要」

注:msbuild.exe/verbosity:detailed> output.txtを使用して、出力をファイルにパイプすることができます

例えば.

code.cpp will be compiled as C:\path\to\header.h was modified at 18/02/2016 15:58:31.
Outputs for C:\path\to\code.cpp:
0
Shane Gannon

Visual Studio 2010では、マルチプロセッサコンパイル(/ MP)を未設定のままにしておくことで、多くのプロジェクトソリューションの誤った再構築を排除しました(残念!)。以前は、有効にしていました。ここでフラグを見つけてください:Common Properties> C/C++> General> Multi-processor Compilation。また、各プロジェクトを個別に再構築することで、個々のプロジェクトの偽の再構築を排除できることに気付きました。その後、それぞれのビルドは、それぞれが最新であることを示しました。

0
Vince

同じ問題が発生しました。

根本原因:VSの誤ったビルドバージョン(32ビットおよび64ビット)

解決策:デバッグ/リリースモードを32ビットから64ビットに切り替えるか、逆にします

http://postimg.org/image/3jurey1qr/

0
zizopen

また、これは、Windowsの更新後に発生することもあります。 Windowsの更新後、TZRE.DLLの日付スタンプが将来のために再コンパイルされた最新のプロジェクト

解決策はその時まで待つことであり、問​​題は魔法のように消えます。私はちょうど同じ問題を抱えていました、私のTZRES.DLLファイルは17/07/2018 19:54、今は17/07/2018 15:15です

0
GilesDMiddleton

これを機能させるために、既存の出力ディレクトリの名前を変更して、すべての中間ファイルを再作成しました(上記のすべての回答を試した後)。

VS2010でDebugViewを使用して削除するファイルを見つけることは過去に成功しましたが、今日ではそのアプローチは機能しませんでした。コードまたはプロジェクトファイルXML内で、DebugViewを使用して見つかった、欠落しているヘッダーファイルへの参照を見つけることができませんでした。また、TFSから古いファイルを取得して、マシン上に存在するファイルと存在しないファイルの両方で試してみました。

その後、GREPを使用してソリューションディレクトリ全体を検索しましたが、結果はバイナリファイルのみでした。古いコードファイルの* .obj、プロジェクトファイルの* .pdb、およびvc100.idbです。ビルドおよびリビルド中にこれらのファイルがどのように変更/置換されるかわかりません。そのため、これらのファイルの以前の参照が古いヘッダーファイルが欠落していると主張する責任があるかどうかはわかりません。

これが誰かを助けてくれることを願っています。そして、私を始めた上記の情報に感謝します!

0
Matthew Lowe