将文件动态添加到 Visual Studio 部署项目

Posted

技术标签:

【中文标题】将文件动态添加到 Visual Studio 部署项目【英文标题】:Dynamically add files to visual studio deployment project 【发布时间】:2010-11-12 16:54:06 【问题描述】:

我一直在拼命寻找这个问题的答案,但我觉得我错过了一些明显的东西。

我需要在编译时将一个包含数据文件的文件夹复制到我的部署项目的 TARGETDIR 中。我可以看到如何添加单个文件(即右键单击文件系统并转到添加-> 文件),但我有一个文件夹,里面装满了不断添加的数据文件。我不希望每次编译时都添加新文件。

我尝试使用 PreBuildEvent 来复制文件:

复制 $(ProjectDir)..\Data*.* $(TargetDir)Data\

在我构建时失败,错误代码为 1。我不禁觉得我在这里错过了重点。有什么建议吗?

提前致谢。

格雷姆

【问题讨论】:

您是想自动将文件添加到 VS 项目中,还是只是在构建之前将它们复制到不同的文件夹? 【参考方案1】:

试试

xcopy $(ProjectDir)..\Data\*.* $(TargetDir)Data /e /c /i [/f] [/r] /y

/e 确保实现树形结构(如果要绕过空文件夹,请使用 /s) /c 继续出错(让构建过程完成) /i 如果不存在目标文件夹,则需要创建目标文件夹 /y 在以前存在的文件的情况下假设“是”覆盖

[可选] /f 如果您想查看复制产生的整个路径 /r 如果你想覆盖以前复制的只读文件

项目上的方法比文件上的方法更简单,是的。此外,在文件上,它只复制每次构建时修改/丢失的文件,但会强制您在每次数据包修改时维护​​项目。取决于整个数据大小和数据包的可变性。

如果您从数据包中删除一些文件并在不清空目标文件夹的情况下重新构建,请注意剩余的文件。

祝你好运。

【讨论】:

【参考方案2】:

我通过解决方法解决了这个问题:

添加将整个目录(可以过滤)打包到 ZIP 文件的构建操作。 向部署项目添加对空 ZIP 文件的引用。 向部署项目添加自定义操作以将 ZIP 解压缩到目标文件夹。

简单稳定。

【讨论】:

【参考方案3】:

您的错误可能是因为您的路径中有空格,而您没有引号中的路径。

ex copy "$(ProjectDir)..\Data*.*" "$(TargetDir)Data\"

我需要做类似的事情。正在考虑自定义操作...

【讨论】:

【参考方案4】:

我为此找到了不同的解决方法。我在我的解决方案中添加了一个 Web 项目,该项目指向我希望包含在部署项目中的数据目录。 Web 项目会自动拾取数据目录中的任何新文件,您可以参考部署项目中的项目内容。

【讨论】:

【参考方案5】:

去了这条路线。

新建工程(删除默认源文件Class1) 添加了项目所需的文件/文件夹。 在安装程序中添加项目作为项目输出,选择选项内容文件。

这消除了之前建议的压缩/解压缩文件的复杂性。

【讨论】:

以上是关于将文件动态添加到 Visual Studio 部署项目的主要内容,如果未能解决你的问题,请参考以下文章

将Boost库添加到Visual Studio 2017

visual studio 2008 c++ 中怎样添加动态链接库?

在 Visual Studio Code 中动态更改行号设置

如何在 Visual Studio 的发布配置文件中包含动态生成的文件

visual studio 如何生成动态库

使用 Visual Studio 扩展动态添加工具按钮