В моем dbproj установка «Копировать всегда» или «Копировать, если новее» в файл не удалась при сборке на сервере сборки - PullRequest
4 голосов
/ 06 декабря 2011

В VisualStudio 2010 у нас есть сценарий, в котором один dbproj (B) ссылается на другой dbproj (A).

В dbproj (A), если я установил действие сборки для одного из наших пользовательских сценариев sql в папке Scripts на «Копировать всегда» или «Копировать, если новее», то сборка завершится неудачей (только на сервере сборки) при сборке dbproj Б). Он пытается скопировать файл в (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\.

Это происходит только на сервере сборки. При локальном строительстве все нормально.

Наша цель - разместить эти файлы в месте размещения tfs вместе с сгенерированным файлом dbproj sql после того, как будет построено все решение.

1 Ответ

0 голосов
/ 07 декабря 2011

Текущее решение - скопировать файл в папку зависимого проекта.

В моем случае я делаю это в событии PreBuild основного проекта - зная иерархическую зависимость папок между обоими проектами.

...