2

Incredibuild ツールを使用してビルドしようとしている Visual Studio ソリューションがあります。ソリューションの 2 つのプロジェクトは連携して動作します。最初のプロジェクト (「プロジェクト A」と呼びます) は、2 番目 (「プロジェクト B」) のデータ ファイルを解析して生成する実行可能ファイル (foo.exe) をビルドします。いくつかのヘッダー ファイル。

明らかに、プロジェクト B で定義されたプロジェクト A への依存関係があります。プロジェクト B で Incredibuild の [プロジェクトの再構築] オプションを使用すると、プロジェクト A が正しくビルドされ、foo.exe が正常にビルドされます。プロジェクト B にはカスタム ビルド ツール ファイルがあり、解析対象のファイルへのコマンド ライン引数を指定して foo.exe を実行する必要があります。ただし、この方法で foo.exe を起動しようとすると、常にエラーが返されます。

カスタムビルド:

走るフー

実行ファイル\foo.exe へのパス」は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されません。

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): エラー MSB6006: "cmd.exe" がコード 9009 で終了しました。

興味深いことに、次に Incredibuild を使用してプロジェクト Bのみをビルドすると(つまり、Build Project オプションを使用して)、すべて問題ありません。以前の失敗したビルドでビルドされた場所から foo.exe が正しく選択されます。これにより、少なくともパスは問題ないと思います。

再構築の一部として実行可能ファイルを実行できない理由を誰かが提案できますか? foo.exe がファイル システムに認識される前にプロジェクト B が開始されるなど、タイミングの問題ですか??

Visual Studio の通常の (再) ビルドですべて動作します。失敗するのは Incredibuild の再構築だけです。コマンド ラインからではなく、Visual Studio IDE を使用してこれらすべてを実行していることに注意してください。

編集: これは私が使用している Incredibuild の景品バージョン (Visual Studio に付属するもの) であるため、ビルドはすべてローカル マシン上にあります。

4

2 に答える 2

1

最後に、これについて Xoreax テクニカル サポートに連絡したところ、これは「まれではあるが既知の問題であり、追加の高速化機能の 1 つに関連している」とのことでした。

彼らの最初の提案は、単に「数ミリ秒間」スリープする実行可能ファイルを作成し、それをリンク後のカスタム ビルド ツールの一部として実行することでした。これは確かに当面の問題を解決しましたが、私が構築しているソリューションには多くの同様の問題があり、この遅延をあらゆる場所に追加することはすぐに面倒になり、常に機能するとは限りませんでした. とにかくファッジのように感じました。

そこで、この動作をオフに切り替えることができるかどうかを尋ねたところ、実際に可能です。Visual Studio では、Incredibuild メニューに Agent Settings オプションがあり、呼び出されたダイアログの Visual Studio Builds|Advanced ページから、 Enhance throughput using out-of-order tasks spawningオプションのチェックを外す簡単なケースです。

ケースを閉じました。

于 2016-02-01T16:46:02.743 に答える