将整个目录复制到保存文件夹结构的输出文件夹?

时间:2013-07-19 09:28:25

标签: visual-studio visual-studio-2012 directory copy xcopy

我希望在每次构建时将特定目录复制到输出文件夹(" bin")。我认为它可以通过post build脚本来处理。但我不确定如何复制目录本身。我知道如何处理特定文件。

例如,这适用于文件:

  

项目>属性>构建活动>后期制作

COPY "$(SolutionDir)Resources\Release Notes.pdf" "$(TargetDir)"

但是假设我有一个目录Template,现在我需要Template下的所有内容在成功构建维护文件夹结构后来到bin文件夹。< / p>

我试过了:

COPY "$(SolutionDir)Resources\Template\" "$(TargetDir)"

只有Template目录中的文件以这种方式复制,而不是子目录和Template文件夹中的文件。我希望文件夹Template本身位于我的输出bin文件夹中。换句话说,bin应该如下所示:

bin > Template > abc.xxx  
                 xxx.yyy
                 Subdirectory1 > asd.qwe
                                 zxc.qwe 
                 Subdirectory2 > ...

这可能是重复的,但我无法找到相关的帖子。感谢。

5 个答案:

答案 0 :(得分:40)

这对我有用。 /S是以递归方式复制所有内容的键。

XCOPY "$(SolutionDir)Resources\Template" "$(TargetDir)\Template\" /S

由于我希望每次都没有提示时覆盖文件,我也添加了/Y开关。

XCOPY "$(SolutionDir)Resources\Template" "$(TargetDir)\Template\" /S /Y

答案 1 :(得分:20)

尝试XCOPY而不是COPY; e.g。

XCOPY "$(SolutionDir)Resources\Template\" "$(TargetDir)\Template" /s /i /y

这里有关于XCOPY的更多信息......

http://www.computerhope.com/xcopyhlp.htm

答案 2 :(得分:2)

我刚刚将其添加到我的* .csproj文件中(右键单击“编辑项目文件”)

<ItemGroup>
    <Content Include="MYCUSTOMFOLDER\**">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
</ItemGroup>

我认为为此,目录必须与* .csproj文件位于相同的层次结构级别,或者在其以下。

答案 3 :(得分:2)

截至本文发布之日,这是一个适用于 Visual Studio 2019 的附加解决方案。这将递归复制文件夹结构和其中的所有文件。在多项目解决方案中在 C++ .vcxproj 上进行测试。


首先,首先编辑您的 [ .proj / .vcxproj / .csproj ] 文件。打开后,找到您的项目范围标签。如果您已经有 ItemGroups,则将下面的代码直接粘贴到现有代码之后。否则,将其添加到 PropertyGroup 标记之前。然后修改您希望复制到输出路径的文件夹结构的 Include & Link 参数。

<ItemGroup>
    <Content Include="..\Assets\**\*.*">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        <DeploymentContent>true</DeploymentContent>
        <Link>Assets\%(RecursiveDir)\%(Filename)%(Extension)</Link>
    </Content>
</ItemGroup>

注意:如果您有多个顶级文件夹,如 JS、IMG、BIN 等,则为每个文件夹创建一个新条目。

答案 4 :(得分:0)

我对此问题有一个可行的解决方案:

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
    <ItemGroup>
        <CommonFont Include="..\common\src\Web\wwwroot\css\fonts\*.*" />
    </ItemGroup>
    <Copy SourceFiles="@(CommonFont)"  DestinationFolder="wwwroot\css\fonts" SkipUnchangedFiles="true" />
</Target>