2

在 Windows 7 上运行的 VS2010 的构建后事件中,将文件复制并始终覆盖到目标目录的最佳方法是什么。

目前我正在使用

robocopy $(SolutionDir) $(TargetDir) "Morning Report Template.xlsm"

我也尝试过使用 Xcopy(带 /Y),甚至只是简单的副本。但我还没有让它正常工作。要么我收到诸如“命令“robocopy C:\Working\Projects\SAFEXQueryForm\C:\Working\Projects\SAFEXQueryForm\SAFEXQueryForm\bin\Release\“Morning Report Template.xlsm””之类的构建错误,代码为 1。” 否则它只是不复制。

我需要它每次都复制和覆盖,而不会出现构建错误,而且我还希望更改我知道 Robocopy 无法做到的文件名。

我究竟做错了什么?最好的方法是什么?

4

2 回答 2

6

编辑 2015/11/23

这个答案提供了一个更好的方法:https ://stackoverflow.com/a/4596552/1011724 。您可以将文件添加到项目中,然后更改文件的“复制到输出目录”属性。


原始答案

我仍然不知道我的原始语法有什么问题或如何说服 VSRobocopy的成功退出代码是 1 但这是我现在拥有的并且它似乎有效,唯一的区别是我更改了目录结构但是没关系(恐怕我不知道我是否在此期间进行了其他更改,这是很久以前的事了)

xcopy "$(SolutionDir)\Additional Files\Morning Report Template.xlsm" "$(TargetDir)" /Y

而且我将 Run post build 事件下拉设置为On successful build

于 2013-02-27T13:08:55.223 回答
1

您需要使用自定义构建操作来实现此目的。有关详细信息,请参阅http://msdn.microsoft.com/en-US/library/hefydhhy(v=vs.80).aspx,但这是我尝试过的。

我将输入文件添加到项目中。然后选择文件并显示属性页面(右键单击-> 属性)。在“常规”页面上,确保“项目类型”为“自定义构建工具”。

您可能需要关闭并重新打开属性对话框,但是将“项目类型”更改为“自定义构建工具”后,属性对话框中应该有一个“自定义构建工具”页面。然后,您可以填写命令行。确保使用我们的自定义构建步骤生成的文件的名称填写“输出”部分。

然后,您应该会发现,只要项目发现输入文件的日期大于输出文件的日期,就会构建并运行自定义构建步骤,我相信这就是您想要实现的目标。

于 2012-04-13T15:22:10.687 回答