复制整个项目结构到另一个目录使用afterbuild任务(Copying entire projec

2019-10-17 19:44发布

我想用AfterBuild目标复制整个项目结构到一个单独的文件夹中。 这是项目结构

TANKProject  
|
|__TANK.CLI
|__TANK.Core
|__TANK.Web 

我想整个项目结构,包括复制bin文件夹和.sln文件夹到一个位置B:\animesh\repos

要做到这一点,我把下面的代码片段在AfterBuild在每个目标.csproj文件:

<ItemGroup>
    <_CustomFiles Include="..\TANK.ProjectName\*.*" />
</ItemGroup>
<Copy
    SourceFiles="@(_CustomFiles)"
    DestinationFiles="B:\repos\TANK"
    SkipUnchangedFiles="true" />

我收到以下错误,而建设项目:

"DestinationFiles" refers to 3 item(s), and "SourceFiles" refers to 1 item(s). They must have the same number of items.

我缺少的是在这里吗?


基于AdrianMonk的回答,我改变了我的AfterBuild这样的配置:

  <Target Name="AfterBuild">
    <ItemGroup>
      <_CustomFiles Include="..\**" />
    </ItemGroup>
    <Copy 
      SourceFiles="@(_CustomFiles)" 
      DestinationFiles="@(_CustomFiles->'B:\repos\TANK\%(RecursiveDir)%(Filename)%(Extension)')" 
      SkipUnchangedFiles="true" />
  </Target>

我把这个AfterBuild目标只是其中一个项目,因为这将是足够的。

Answer 1:

您需要指定DestinationFolder ,不DestinationFiles

<Copy
    SourceFiles="@(_CustomFiles)"
    DestinationFolder="B:\repos\TANK"
    SkipUnchangedFiles="true" />

然而,这只会将文件从你的项目结构的根复制。 要复制整个结构,包括子目录中的文件,你需要使用:

<Copy
    SourceFiles="@(_CustomFiles)"
    DestinationFiles="@(_CustomFiles->'B:\repos\TANK\%(RecursiveDir)%(Filename)%(Extension)')"
    SkipUnchangedFiles="true" />

这将做整个项目结构的递归复制(也包括输出目录)。 欲了解更多信息,请参阅的MSBuild复制任务的参考文档 。



文章来源: Copying entire project structure into another directory using afterbuild task