将C#项目中包含的文件夹内容复制到没有父文件夹的输出目录

时间:2014-01-04 06:43:43

标签: c# build visual-studio-2013

我已将项目依赖项文件包含在项目目录中的C#项目中,名称为“Dependencies”,其中包含项目所需的每个文件所在项目子目录(因为我不希望项目看起来拥挤并添加所需文件到“Dependencies”子目录)但我不希望将子目录复制到输出路径。我只想要将所有结构复制到输出路径的子目录的内容。我不想使用post built copy命令,因为我有不需要的文件和文件夹,我不想复制到输出目录。有没有办法做到这一点?Project Structure

1 个答案:

答案 0 :(得分:2)

我经常使用robocopy“作业”来保存作业描述文件,该文件告诉robocopy要包含什么以及复制位置。所以我的后期制作活动将与

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

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

另一种方法是创建一个setupproject来收集你需要的资源,但这更有用: - )

到此为止。 ROBOCOPY

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系统告诉它忽略文件夹命名系统的复制(你可以列出很多)
  • / 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

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