在 VisualStudio 2010 中,我们有一个 dbproj (B) 引用另一个 dbproj (A) 的场景。
在 dbproj (A) 中,如果我将 Scripts 文件夹中的自定义 sql 脚本之一的构建操作设置为“始终复制”或“如果较新则复制”,构建 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 放置位置。