Проблема с использованием задачи копирования MSBuild (VS2005TS Team Build) - PullRequest
1 голос
/ 12 февраля 2010

Менеджер моего проекта назначил меня для поддержки сборок, но это мой первый контакт с MSBuild, так что все немного сложнее, чем у большинства первых контактов.:)
Я изо всех сил пытался заставить MSBuild / Team Build скопировать некоторые файлы в папку «bin» моего проекта, но до сих пор не добился успеха.
Файлы хранятся в папке, которую мы используем какрепозиторий для зависимостей и адаптеров, поскольку нам нужно иметь возможность компилировать решения независимо друг от друга, поэтому все необходимые файлы уже существуют, когда MSBuild начинает работать и оценивает ItemGroup.Моя последняя попытка состояла в том, чтобы вызвать задачу копирования для цели "BeforeDropBuild", например:

<Target Name="BeforeDropBuild">
  <Delete Files="@(DebugPoints)" ContinueOnError="true"></Delete>
  <Copy SourceFiles="@(Adapters)" DestinationFolder="$(TargetDir)" ContinueOnError="true"></Copy>
</Target>

Я уже работаю над этим в течение некоторого времени, так как это в основном все, что мне осталось, чтобы завершить этоbuild, поэтому я уже испробовал целый ряд различных подходов, и ни один из них не дал мне ожидаемого результата.

Некоторые из возможных вариантов, которые я пробовал, были:
- "DestinationFolder" с полным путем в качестве значения;
- копирование файлов после сброса сборки;
- копирование файлов на цель "AfterBuild";

Но все они, похоже, приводят к одному и тому же: даже не запись неудачной попытки BuildLog дляПомоги мне выяснить, где я не прав.Как и код сейчас, он дает мне даже журналы pdb-файлов, которые он не может исключить в некоторых других папках, но не упоминает о попытках копирования, например:

Target BeforeDropBuild:
    Deleting file "D:\blablabla\filepath\file.pdb".
MSBUILD : warning MSB3061: Unable to delete file "D:\blablabla\filepath\file.pdb". Access to the path 'D:\blablabla\filepath\file.pdb' is denied.
The previous error was converted to a warning because the task was called with ContinueOnError=true.
Build continuing because "ContinueOnError" on the task "Delete" is set to "true".

Закончено создание цели "BeforeDropBuild"в проекте "TFSBuild.proj".
Кажется, это довольно простая проблема, но у меня нет идей, даже поиск не помог мне в этом (что также заставляет меня думать, что она ДЕЙСТВИТЕЛЬНО базовая).

Редактировать:

<Target Name="AfterDropBuild">
    <CreateItem Include="$(AdaptersFolder)\Adapter*.dll">
        <Output ItemName="Adaptadores" TaskParameter="Include"/>
    </CreateItem>
    <CreateProperty Value="$(DropLocation)\$(BuildNumber)\%(ConfigurationToBuild.FlavorToBuild)">
        <Output ItemName="ReleaseFolder" TaskParameter="Value"/>
    </CreateProperty>
    <Copy DestinationFolder="$(ReleaseFolder)" SourceFiles="@(Adaptadores)" ContinueOnError="true"></Copy>
    <OnError ExecuteTargets="Error"/>
</Target>

Еще одна неудачная попытка.В любом случае, это был неправильный каталог, но, опять же, файлы не были скопированы, и в файлах журнала даже не упоминается цель AfterDropBuild.

1 Ответ

0 голосов
/ 17 февраля 2010

По некоторым причинам он не получал файлы, как ожидалось.
Я не помню, было ли это так, может быть, просто ошибка в синтаксисе или около того. Вот как я это сделал сейчас:

<Target Name="AfterDropBuild">
    <CreateItem Include="$(AdaptersFolder)\AdapterModule.*.dll">
        <Output ItemName="Adapters" TaskParameter="Include"/>
    </CreateItem>
    <Copy DestinationFolder="$(DropBuildAdapterPath)"
      SourceFiles="@(Adapters)" ContinueOnError="true"></Copy>
    <OnError ExecuteTargets="Error"/>
</Target>

Похоже, что это справедливо и для файлов, созданных во время сборки, так как он создает элемент (и, следовательно, проверяет список) сразу после того, как все было собрано и скопировано для удаления, а файлы сохраняются в пути сборки до тех пор, пока новая сборка начинается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...