如果存在,VS PostBuild事件-复制文件

25

如果文件存在,是否有一种简单的方法在Visual Studio项目的后期构建事件中复制文件?(即,如果文件不存在,则不会失败)

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


这个文件是作为你的 Visual Studio 项目的一部分还是外部文件包含的? - David
它没有被添加到项目中,但它与项目存在于同一个文件夹中。 - Brad Leach
3个回答

38

使用 "IF" 命令:

IF EXIST file.txt xcopy file.txt [destination_folder]\ /Y

8
同时不使用IF EXIST,而是使用XCOPY的/U选项
xcopy source_file_name dest_folder /u /y

由于某些原因,如果文件不存在,我无法使/u正常工作 - 它会以错误“4”退出。 - Brad Leach
我的错。我误解了。我以为你只想在目标地存在源文件的情况下才复制原始文件。/U是用来实现这个目的的,而不是用来检查源文件是否存在。 - Steve

4
如果您喜欢在属性面板中使用“复制到输出目录”(Visual Studio提供,右键单击项目文件并选择“属性”),您可以通过一些文本编辑来实现。这适用于所有使用MSBuild的Visual Studio版本(即Visual Studio 2010及以上版本)。
首先,选择一个适当的“复制到输出目录”的值,例如“始终复制”或“仅在更改时复制”。保存更改后的项目(例如从“文件”菜单中选择“全部保存”)。
然后,在文本编辑器中编辑项目文件,在新添加的<CopyToOutputDirectory>元素的开头标记内添加一个类似于Condition="Exists('$(MSBuildProjectDirectory)\FILENAME')"的属性,其中FILENAME是被复制的文件的路径(即在父元素中引用的路径)。
GUI将无法正确地编辑此设置(即,如果该文件不存在,它将显示“不复制”作为值),但至少它会起作用。

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