RAD Studio XE4 のプロジェクトで奇妙なmsbuild
エラーが発生しました。何が起こっているのかを診断するための助けを求めています。私はこれに数週間遭遇しましたが、自分で解決することに成功していません - もっと広く尋ねる時が来ました. 症状は次のとおりです。
- IDE 内からビルドおよび実行されたプロジェクトでは、動作しているように
msbuild Project.cbproj
見えます - 実行
msbuild Project.cbproj /t:Clean
すると動作し、中間ファイルを正常に削除します。出力を視覚的にスキャンしても、異常なファイルが削除されていることは示されません。.obj ファイル、リンカー状態ファイル、最終的な EXE などだけです。 - ただし、クリーニング後またはクリーン チェックアウト時に実行
msbuild Project.cbproj /t:Build
または単純に実行すると、次のエラー メッセージが表示されて失敗します。msbuild Project.cbproj
Microsoft (R) Build Engine バージョン 3.5.30729.5420 [Microsoft .NET Framework、バージョン 2.0.50727.5472] Copyright (C) Microsoft Corporation 2007. All rights reserved.
ビルドは 2013 年 12 月 9 日 10:35:03 に開始されました。ノード 0 のプロジェクト "C:\projects\Project.cbproj" (既定のターゲット)。
_PasDepCheck: 変更: Source\Common\resample.pas _PasCoreCompile: Embarcadero Delphi for Win32 コンパイラ バージョン 25.0 Copyright (c) 1983,2013 Embarcadero Technologies, Inc. C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\Bin\ CodeGear.Cpp.Targets(191 1,5): エラー F1026: ファイルが見つかりません: 'True.dpr' プロジェクトのビルドが完了しました "C:\projects\Project.cbproj" (既定のターゲット) -- 失敗しました。
ビルドに失敗しました。
"C:\projects\Project.cbproj" (デフォルト ターゲット) (1) -> (_PasCoreCompile ターゲット) -> C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\Bin\CodeGear.Cpp.Targets(1) 911,5): エラー F1026: ファイルが見つかりません: 'True.dpr'
0 Warning(s) 1 Error(s)
これについていくつかのことが私を驚かせます:
- 一番上に .Net の 2 つのバージョンがリストされており、古いバージョンは角括弧で囲まれています。2 つのフレームワークの一部をロードまたは使用している可能性はありますか?
True.dpr
.cbproj
また、ファイルを手動で検索してエントリを見つけることも、プロジェクト名として誤解される可能性があるように見えるエントリを見つけることもできませTrue.dpr
んTrue
。(Delphi に慣れていない場合、.dpr ファイルは昔ながらのプロジェクト ファイルです。これにはエントリ ポイントが含まれています。ビルドすることは、msbuild がどこかでソースまたはプロジェクト エントリを見つけていることを意味する場合があります。「True」は . cbproj ファイルが誤って解釈されているか破損しています - しかし、それは真新しいため、そうあるべきではなく、IDE 内から動作します。)
システムとプロジェクトに関するその他の情報:
- このプロジェクトは RAD Studio 2010 からアップグレードされています。ただし、プロジェクト ファイルは XE4でゼロから作成されたものです。つまり、IDE で新しいプロジェクトを作成し、既存のユニット (Delphi および C++ ファイル) を追加することによって、まったく新しいものです。
- このプロジェクトは、1 つまたは 2 つの Delphi ユニットを含む C++ プロジェクトです。コンパイルの開始時に Delphi ユニットをコンパイルすると、落ちていることがわかります。C++ と Delphi の混合に慣れていない方のために説明すると、通常、混合ソース プロジェクトでは、IDE または msbuild が最初に Delphi ユニットをコンパイルします (そうすることで、C++ ヘッダーを作成/更新して、Delphi コードとインターフェイスを取ることができます)。
- プロジェクトはグループの 1 つですが、スタンドアロンでコンパイルする必要があります。
- Update 1 で RAD Studio XE4 をインストールしました。
msbuild
RAD Studio XE4 コマンド ラインから起動されます。つまり、rsvars.bat
ファイルを使用してパスなどを設定します。- 上記の出力では、実際のプロジェクト名を識別したくないため、実際のプロジェクト名を Project に変更しました。ただし、残りの出力は正確です。
何か案は?私は何年もの間それを解決しようとしてきましたが、困惑しています。