#msbuild
#msbuild
Вопрос:
У меня есть файл .proj, который настроен на выполнение файла решения, который, в свою очередь, создает все проекты в решении. Я хочу добавить операцию XCopy, которая должна копировать .файлы dll всех проектов в другое место только после завершения сборки всех проектов. Я пробовал с помощью ниже, но он не копирует библиотеки DLL. Я новичок в написании тегов MSBuild, поэтому может быть, я ошибаюсь, выбирая этот подход для написания задачи таким образом.
Пожалуйста, предоставьте решение, если кто-нибудь знает.
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition="'$(Configuration)' == 'Release|Debug'"/>
<Platform Condition="'$(Platform)' == ''">x64</Platform>
</PropertyGroup>
<ItemDefinitionGroup>
<SolutionToBuild>
<Properties>Configuration=$(Configuration);Platform=$(Platform)</Properties>
<Targets>Clean;Build</Targets>
</SolutionToBuild>
</ItemDefinitionGroup>
<ItemGroup>
<SolutionToBuild Include="..SegAlgorithms.sln" />
</ItemGroup>
<Target Name="Build" >
<MSBuild Projects="@(SolutionToBuild)" Targets="%(SolutionToBuild.Targets)" Properties="%(SolutionToBuild.Properties)" BuildInParallel="false" ContinueOnError="false" />
</Target>
<Target Name="Clean">
<MSBuild Projects="@(SolutionToBuild)" Targets="Clean" Properties="%(SolutionToBuild.Properties)" BuildInParallel="false" ContinueOnError="false" />
</Target>
<PropertyGroup>
<CopyDestination>..ExternAlgobin$(Configuration)</CopyDestination>
<CopySource>..SegAlgorithms$(Configuration)DoBin</CopySource>
</PropertyGroup>
<ItemGroup>
<FilesToCopy Include="$(CopySource)*.dll"/>
</ItemGroup>
<ItemGroup>
<CustomBuildStep Include ="@(FilesToCopy)">
<Message>Copying..</Message>
<Command> XCOPY %(Identity) $(CopyDestination) /f /y </Command>
</CustomBuildStep>
</ItemGroup>
<PropertyGroup>
<CustomBuildAfterTargets>Build</CustomBuildAfterTargets>
</PropertyGroup>
</Project>
Ответ №1:
Думайте о целях как о методах, которые вызываются. Они выполняются последовательно, поэтому вам просто нужно поместить свою копию после сборки решения:
<Target Name="Build">
<MSBuild Projects="@(SolutionToBuild)" Targets="%(SolutionToBuild.Targets)" Properties="%(SolutionToBuild.Properties)" BuildInParallel="false" ContinueOnError="false" />
<ItemGroup>
<FilesToCopy Include="..SegAlgorithms$(Configuration)DoBin*.dll" />
</ItemGroup>
<Copy SourceFiles="@(FilesToCopy)" DestinationFolder="..ExternAlgobin$(Configuration)" SkipUnchangedFiles="true" />
</Target>
Комментарии:
1. Отлично!! Вы спасли мой день… Большое спасибо GazTheDestroyer….. Я поддержал ваш ответ.
2. Вы также должны принять это, потому что это решило вашу проблему