4

VisualStudio 2010 では、ある dbproj (B) が別の dbproj (A) を参照するシナリオがあります。

dbproj (A) で、Scripts フォルダー内のカスタム SQL スクリプトの 1 つでビルド アクションを「常にコピー」または「新しい場合はコピー」に設定すると、dbproj のビルド中にビルドが失敗します (ビルド サーバーのみ) (B)。(A) のファイルを (B) にあるかのようにコピーしようとします。

dbproj のビルド中 (A)、出力は次のようになりますが、これで問題ありません。

_CopyOutOfDateSourceItemsToOutputDirectory:
  Creating directory "D:\Builds\5\17\Binaries\Scripts".
  Copying file from "Scripts\FortressMainUpdate.sql" to "D:\Builds\5\17\Binaries\Scripts\FortressMainUpdate.sql".
  Copying file from "D:\Builds\5\17\Sources\Src\DataBase\MainDatabase\Scripts\FortressMainUpdate.sql" to "D:\Builds\5\17\Binaries\Scripts\FortressMainUpdate.sql".

そして、dbproj (B) の構築中に、サーバーは次のエラーを出力しました。

_CopyOutOfDateSourceItemsToOutputDirectory:
Building target "_CopyOutOfDateSourceItemsToOutputDirectory" partially, because some output files are out of date with respect to their input files.
  Copying file from "Scripts\FortressOqtUpdate.sql" to "D:\Builds\5\17\Binaries\Scripts\FortressOqtUpdate.sql".
  Copying file from "D:\Builds\5\17\Sources\Src\DataBase\OpenQueryTool\Scripts\FortressMainUpdate.sql" to "D:\Builds\5\17\Binaries\Scripts\FortressMainUpdate.sql".
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(3129,9): error MSB3021: Unable to copy file "D:\Builds\5\17\Sources\Src\DataBase\OpenQueryTool\Scripts\FortressMainUpdate.sql" to "D:\Builds\5\17\Binaries\Scripts\FortressMainUpdate.sql". Could not find file **'D:\Builds\5\17\Sources\Src\DataBase\OpenQueryTool\Scripts\FortressMainUpdate.sql'**. [D:\Builds\5\17\Sources\Src\DataBase\OpenQueryTool\CCO.Fortress.Database.OpenQueryTool.dbproj]
  Copying file from "D:\Builds\5\17\Sources\Src\DataBase\OpenQueryTool\Scripts\FortressOqtUpdate.sql" to "D:\Builds\5\17\Binaries\Scripts\FortressOqtUpdate.sql".

このファイルD:\Builds\5\17\Sources\Src\DataBase\OpenQueryTool\Scripts\FortressMainUpdate.sql は dbproj (A) にあるファイルで、 には存在しませんでした\DataBase\OpenQueryTool\Scripts\

これは、ビルド サーバーでのみ発生します。ローカルでビルドする場合は、すべて問題ありません。

私たちの目標は、ソリューション全体が構築されたら、dbproj によって生成された sql ファイルと共に、これらのファイルを tfs ドロップ場所に配置することです。

4

1 に答える 1

0

現在の解決策は、ファイルを依存プロジェクト フォルダーにコピーすることです。

私の場合、メイン プロジェクトの PreBuild イベントでこれを行います。両方のプロジェクト間のフォルダー階層の依存関係を知っています。

于 2011-12-07T16:34:11.243 に答える