2

前処理を行うためにカスタムビルドファイルを使用してVS2008でビルドしたPro*C(Oracle SQLが埋め込まれたC)で記述されたアプリケーションがあります。ソースは.m4形式です(従来の理由により、いつかこれを削除しますが、優先順位リストの上位にはありません)。.m4は、M4ユーティリティによって.pc(Pro * Cファイル)に処理され、その後、OracleProCユーティリティによって.Cファイルに変換されます。

Oracle10とOracle11の両方のクライアントを使用しているクライアントがあります。異なるOracleバージョンでビルドする必要があるため、データベースバージョンごとに1つのプロジェクトを設定します。どちらのプロジェクトも同じソースコードを使用しています。唯一の違いはルールファイルにあります。

VS2008を使用したとき、このプロセスで問題が発生したことはありません。プロジェクトをVS2010(ルールファイルを.xml、.props、および.targetsファイルに変換)に移動すると、カスタムビルドルールがプロジェクトの1つに不正なコードを返すというビルドエラーが発生し始めました。

興味深いのは、「すべて再構築」するたびに、失敗してプロジェクトが成功するプロジェクトが切り替わるということです(つまり、最初にoracle10プロジェクトが成功してoracle11プロジェクトが失敗し、2回目がoracle10が失敗してoracle11が成功します)。確実に成功するプロジェクトは、ビルドするたびに交互になりますが、常に最初に処理するプロジェクトのようです(Visual Studioが毎回同じプロジェクトで開始しない理由はわかりません)。

各プロジェクトを個別にビルドすれば問題ありません。ソリューションレベルのプロジェクト依存関係を作成する場合、どのプロジェクトがどのプロジェクトを参照しているかに関係なく、問題はありません。

そのため、回避策を見つけたにもかかわらず、この問題の原因が何であるかについて興味があります。

PS-私はStackOverflowにかなり慣れていないので、この質問をする際に何かを逃した場合は、事前に謝罪します。問題を解決するために他に何か提供できることがあれば教えてください。

4

0 に答える 0