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

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

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

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

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

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

提前致谢。

格雷姆

【问题讨论】:

  • 您是想自动将文件添加到 VS 项目中,还是只是在构建之前将它们复制到不同的文件夹?

标签: copy directory compile-time deployment-project


【解决方案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)
          • 添加了项目所需的文件/文件夹。
          • 在安装程序中添加项目作为项目输出,选择选项内容文件。

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

          【讨论】:

            猜你喜欢
            • 2010-11-06
            • 1970-01-01
            • 1970-01-01
            • 2012-12-08
            • 1970-01-01
            • 2015-03-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多