Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio VS PostBuild事件-复制文件(如果存在)_Visual Studio_Post Build Event - Fatal编程技术网

Visual studio VS PostBuild事件-复制文件(如果存在)

Visual studio VS PostBuild事件-复制文件(如果存在),visual-studio,post-build-event,Visual Studio,Post Build Event,是否有一种简单的方法可以在Visual Studio项目的生成后事件中复制文件,但仅限于该文件存在时?(即,如果文件不存在,则不要使构建失败) 我用xcopy尝试了一些选项。但我觉得自己太笨了——我似乎无法理解xcopy可能需要哪些开关。使用“IF”命令: 也没有IF EXIST,但使用XCOPY的/U选项 xcopy source_file_name dest_folder /u /y 如果您更喜欢在“属性”面板中使用“复制到输出目录”(在项目文件上单击鼠标右键并选择“属性”时由Visual

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

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

使用“IF”命令:


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

xcopy source_file_name dest_folder /u /y
如果您更喜欢在“属性”面板中使用“复制到输出目录”(在项目文件上单击鼠标右键并选择“属性”时由Visual Studio提供),则可以通过少量文本编辑来实现。这将适用于使用MSBuild的所有Visual Studio版本(即Visual Studio 2010及以后的版本)

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

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


GUI将来无法正确编辑此设置(即,如果文件不存在,它将显示“请勿复制”作为值),但至少它可以工作。

该文件是作为Visual Studio项目的一部分包含的还是某些外部文件?它没有添加到项目中,但它与项目位于同一文件夹中。出于某种原因,如果文件不存在,我无法使/u正常工作-它退出时出现错误“4”。这是我的错。我误解了。我在想,只有当源文件存在于目标文件中时,才需要复制它/U用于此目的,而不是检查源文件是否存在。
xcopy source_file_name dest_folder /u /y