копировать файлы в другое место после сборки - PullRequest
1 голос
/ 11 февраля 2011

Чтобы скопировать файлы в другом месте после публикации сборки, я попытался сделать следующее:

Редактируя файл csproj и добавляя этот код, копируем dll в корзину относительного пути.

<PropertyGroup>  
<CopyAllFilesToSingleFolderForPackageDependsOn>  
    CustomCollectFiles; 
    $(CopyAllFilesToSingleFolderForPackageDependsOn);  
    </CopyAllFilesToSingleFolderForPackageDependsOn>  
</PropertyGroup> 
<Target Name="CustomCollectFiles">
  <ItemGroup>
    <_CustomFiles Include="..\*project*\**\*.dll" />
    <FilesForPackagingFromProject  Include="%(_CustomFiles.Identity)">
      <DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath>
    </FilesForPackagingFromProject>
  </ItemGroup>
</Target>

Это работает абсолютно нормально.Мне было просто интересно, если это можно сделать с помощью событий после сборки что-то вроде этого .. (это не работает).

if $(ConfigurationName) == Release xcopy /y "$(ProjectDir)$(OutDir)$(TargetFileName)" "$(SolutionDir)$(OutDir)" 

Первый способ - это «единственный способ сделать это» с помощью публикации одним кликом вVS2010?Дело в том, что изменения в файлах csproj не будут отображаться нигде, в VS2010.

Ответы [ 2 ]

7 голосов
/ 11 февраля 2011

Да, вы можете сделать это без взлома, используя AfterBuild target и Copy copy :

  <Target Name="AfterBuild">
    <ItemGroup>
      <_CustomFiles Include="..\**\*.dll" />
    </ItemGroup>
      <Copy
            SourceFiles="@(_CustomFiles)"
            DestinationFiles="@(_CustomFiles->'bin\%(Filename)%(Extension)')" 
            SkipUnchangedFiles="true" />
  </Target>
0 голосов
/ 14 мая 2014

Это также будет работать и поддерживаться в разных версиях Visual Studio.

<Target Name="CustomFolderDeploy" AfterTargets="CopyAllFilesToSingleFolderForPackage" BeforeTargets="MSDeployPublish">
    <PropertyGroup>
      <CustomFolder>$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..\..\Lib\CustomFolder'))</CustomFolder>
    </PropertyGroup>
    <CreateItem Include="$(CustomFolder)\*.*">
      <Output TaskParameter="Include" ItemName="CustomFiles" />
    </CreateItem>
    <Copy SourceFiles="@(CustomFiles)" DestinationFolder="$(MSBuildProjectDirectory)\obj\$(Configuration)\Package\PackageTmp\bin" SkipUnchangedFiles="True" ContinueOnError="False" />
  </Target>
...