23

是否有一种简单的方法可以在 Visual Studio 项目的构建后事件中复制文件,但前提是该文件存在?(即如果文件不存在,则不要使构建失败)

我尝试了一些使用 xcopy 的选项。但我觉得自己很愚蠢——我似乎无法理解使用 xcopy 可能需要哪些开关。

4

3 回答 3

37

使用“IF”命令:

IF EXIST file.txt xcopy file.txt [destination_folder]\ /Y
于 2012-07-10T21:55:04.047 回答
8

也没有 IF EXIST 但使用 XCOPY 的 /U 选项

xcopy source_file_name dest_folder /u /y
于 2012-07-10T21:57:50.673 回答
2

如果您更喜欢使用“属性”面板中的“复制到输出目录”(当您右键单击项目文件并选择“属性”时由 Visual Studio 提供),您可以通过一些文本编辑来实现。这适用于使用 MSBuild 的所有 Visual Studio 版本(即 Visual Studio 2010 及更高版本)。

首先,为“复制到输出目录”选择适当的值,例如“始终复制”或“如果更新则复制”。保存对项目的更改(例如,“文件”菜单中的“全部保存”)。

然后,在文本编辑器中编辑项目文件,并在新添加<CopyToOutputDirectory>元素的开始标记内添加一个属性,如Condition="Exists('$(MSBuildProjectDirectory)\FILENAME')", ,其中FILENAME是要复制的文件的路径(即在父元素中引用的路径)。

GUI 将来不会正确编辑此设置(即,如果文件不存在,它将显示“不复制”作为值),但至少它会起作用。

于 2021-01-15T22:27:59.157 回答