39

ソリューションを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 ==========

何か案は?

4

10 に答える 10

45

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

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

于 2011-05-19T05:21:12.640 に答える
36

同じファイルを含む 2 つのプロジェクトがありました。2 番目のプロジェクトがビルドされると、ファイルが再度コンパイルされ、'touch' 日時が変更されます。これにより、最初のプロジェクトの「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" />
于 2011-11-10T18:46:58.827 に答える
8

MSDNのこのスレッドによると:

私の場合、VS10の場合、プロジェクトフォルダーに欠落している(ただし、準拠していない.hファイルがあるため、追加のエラーはありません)ことが原因でした。

すべてのプロジェクトファイルがエディタで開くことができることを簡単に確認すると、この問題が修正されました。

于 2011-05-19T05:20:36.373 に答える
2

.h以外のファイルもチェックする必要があります。私のプロジェクトでは、Readme.txtが見落とされていました。

于 2013-03-20T18:47:08.360 に答える
0

コマンド ライン 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:
于 2016-02-19T10:58:24.747 に答える
0

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

于 2014-03-05T16:39:05.963 に答える