【问题标题】:Copy folder content included in C# project to output directory without parent folder将 C# 项目中包含的文件夹内容复制到没有父文件夹的输出目录
【发布时间】:2014-01-21 23:08:54
【问题描述】:

我已将我的项目依赖项文件从我的项目目录中包含到 C# 项目中,名称为“Dependencies”,其中包括项目需要的每个文件到此项目子目录(因为我不希望项目看起来拥挤并添加所需的文件到“依赖项”子目录),但我不希望将子目录复制到输出路径。我只想要将所有结构复制到输出路径的子目录的内容。我不想使用后期构建的 Copy 命令,因为我有不需要的文件和文件夹,我不想将它们复制到输出目录。有什么办法吗?

【问题讨论】:

    标签: c# build visual-studio-2013


    【解决方案1】:

    我经常为此使用robocopy“jobs”,它允许保存一个职位描述文件,该文件告诉 robocopy 包含什么以及复制到哪里。所以我的后期构建活动将遵循

    robocopy $(ProjectDir)\dependencies $(ProjectDir)$(OutDir) /JOB:$(ProjectDir)\dependencies\publish 
    

    然后将作业文件称为 publish.rcj 并放置在 dep 中。目录

    另一种方法是创建一个 setupproject 来收集您需要的资源,但这需要更多的工作:-)

    来了。机器复制

    robocopy /? 
    

    为您提供解决问题所需的帮助 :) 这是一个帮助您入门的方法:

    robocopy c:\source c:\target /S /E /XD systems /XF publish.rcj /NP /NJS /NJH /NFL /NDL /SAVE:publish.rcj
    

    部分设置说明:

    • /SAVE:publish.rcj 告诉它将职位描述保存到文件(命名)publish.rcj
    • /XD systems 告诉它在复制时忽略名为 systems 的文件夹(你可以列出很多)
    • /XF publish.rcj 告诉它不要复制名为 publish.rcj 的文件(你可以列出很多)
    • /S /E 告诉它复制所有子文件夹,甚至是空文件夹
      • /NP /NJH /NJS /NFL /NDL 只是为了关闭复制的文件和文件夹的列表(玩它看看)

    现在是一个“技巧”(似乎无法从命令行使其正常工作): 打开作业文件 (publish.rcj) 并替换:

    /SD:c:\Source With /NOSD
    

    /DD:c:\Target With /NODD
    
    • NOSD(无源目录)和 NODD(无目标目录)告诉作业始终从输入获取源和目标 - 来自构建后事件的 $(ProjectDir) 内容

    现在您可以这样调用作业:

    robocopy c:\my_new_source c:\my_new_target /job:publish
    

    它将使用职位描述文件中指定的所有参数。

    【讨论】:

    • 看起来很复杂。你能解释一下我可以从 robocopy 复制中排除一些文件和目录吗?如何创建作业文件?谢谢。
    • 将答案更改为包含使用作业文件的 robocopy 使用示例
    猜你喜欢
    • 2019-10-12
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    相关资源
    最近更新 更多