Менеджер моего проекта назначил меня для поддержки сборок, но это мой первый контакт с 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.