【发布时间】:2021-04-19 14:25:07
【问题描述】:
我们有一个类似结构的项目:
- 项目A
- 其他文件
- 文件A.json
- 文件B.json
- 其他文件
- 项目 B
在这种情况下,项目 B 是我们的主要项目,包括项目 A。当我构建和运行它时,一切正常。在我将应用程序发布到一个简单的文件夹中并将其复制并粘贴到另一台机器之后,它也可以正常工作。
由于我们想在网络驱动器上部署应用程序并希望应用程序自动更新,我们想使用“ClickOnce”(遗憾的是,Azure 和 Docker 没有选择)。当我点击“发布”时,一切都按预期工作,我得到了所有文件,当我将它们移动到网络驱动器时,我可以轻松地在设备上安装应用程序(它们还会检查更新)。
我遇到的唯一问题:项目 A 中的“附加文件”文件夹在安装过程中没有被复制!这意味着应用程序无法使用这些文件并且无法工作。在 Visual Studio 中,我将这些文件 Copy to Output Directory 设置为 Copy always。此外,我尝试更改Build Action,但这没有用。如果我检查发布的输出,文件夹就在那里。它只是在安装过程中没有复制。
有没有办法告诉 ClickOnce 安装程序在安装过程中也移动此文件夹?
【问题讨论】:
-
根据我的测试,我将复制到输出目录设置为始终复制并将构建操作设置为内容。安装后我可以成功看到文件夹和文件。你想在哪里看到这两个文件?
-
我有这个设置,它不会移动文件。我希望它们位于安装文件夹中,因为项目 A 尝试使用路径“./Additional Files/FileA.json”加载文件。请记住,此路径只是一个占位符,路径中没有空格。我现在唯一的解决方法是,我将文件移动到“C:/MyProject/Files”或类似的地方,然后直接从那里加载。但我想避免这种情况,因为这种方法对用户来说是反直觉的。
-
还有一点附加信息:文件在发布文件夹中!一旦我运行了这个过程,一切都在那里。如果我启动位于该文件夹中的 .exe,一切正常。它实际上只是关于 ClickOnce 的安装过程。
-
安装应用后可以参考链接Where does ClickOnce put files?查看文件是否存在。
标签: .net visual-studio clickonce publish