Visual Studio 2010后期构建:将文件复制到多个目录/多个输出路径

17
我有一个MVC项目,我想拆分其输出。
我想将该项目的所有DLL文件(Bin目录中的所有内容)复制到一个目录,将所有视图(View目录中的内容)放入另一个输出目录。
VS 2010中的项目设置不允许我这样做。
我只能在设置中指定一个输出路径,无法指定要复制的哪些目录或文件类型以及放到哪里。
我认为应该将输出目录保留为默认值,然后使用Post-build命令按照我想要的方式对输出进行拆分。
也许有人做过类似的事情,并且有任何最佳实践的想法?

在输出文件夹中创建文件后,不同类型的文件是否可以通过它们的结尾轻松区分? - Doc Brown
3个回答

23
解决方案为:

1)在项目属性中将输出路径设置为您想要复制* dll文件的目录

2)使用后期构建事件将View目录的内容复制到任何您想要的目录中

在我的情况下

1)输出路径设置为

..\MyDestinationProjectName\Bin\

2)将View目录复制到后期构建事件,看起来像这样

xcopy "$(ProjectDir)\Views" "$(SolutionDir)\MyDestinationProjectName\Plugins\Views\$(ProjectName)\" /s /i /y


1
“/I” 参数解决了我的错误问题,该问题在目标位置已经存在文件时出现。 - Mert Akcakaya
2
从默认项目中,我想要将编译后的可执行文件复制到目标文件夹。我的 Post-Build Event 命令是 xcopy "$(SolutionDir)$(Configuration)\$(TargetName)$(TargetExt)" "C:\MyOutputFolder" /s /i /y,希望这对大家有所帮助。非常实用! - caiosm1005
/I - 如果复制多个文件,则视为目录 /Q - 不显示正在复制的文件。 /S - 复制子目录,除非为空。 /E - 复制空的子目录。 /Y - 不提示覆盖现有文件。 /R - 覆盖只读文件。 - Muhammad Rehan Qadri

3

这应该是对@caiosm1005的评论,但我缺少积分。 如@Riapp所示,使用xcopy命令。可以在此处找到有关开关的详细说明Xcopy and Xcopy32 Switches

我的解决方案是: xcopy "$(TargetDir)$(TargetFileName)" "C:\Mydestination" /s /i /y

TargetDir包含编译文件的完整路径,而TargetFileNameTargetNameTargetExt的组合。 不要在目录变量后添加反斜杠分隔符,例如$(TargetDir)\$(TargetFileName)会失败,因为它将被解释为"TargetName**\\** TargetExt"

一旦您查看了宏中的值,选择您想要的内容就很容易了。 请记住,您需要在解决方案中的每个项目上执行此操作。 可以通过右键单击项目,选择属性,然后选择Build Events选项卡来找到构建事件。


谢谢。在我发表那条评论后的一段时间里,我找到了更好的解决方法。这才是正确的做法! - caiosm1005

0
这应该是对 caiosm1005 的评论,但我缺少积分。 如 Riap 所示,使用 xcopy 命令。可以在此处找到有关开关的详细说明 Xcopy 和 Xcopy32 开关

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接