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 ドロップ場所に配置することです。