【发布时间】:2017-11-20 14:18:05
【问题描述】:
我正在为我拥有的 Windows 应用程序使用 ClickOnce 部署。但是,当我上传新版本时,它会创建一个新的安装路径,并且不会重复使用第一次安装的初始路径?
我依赖于位于第一个路径中的文件夹中的自动附加数据库,因此当更新查找文件时它没有找到它,因为它正在新安装路径中的文件夹中查找?
知道如何强制 ClickOnce 覆盖初始安装吗?我认为这是默认的 ClickOnce 行为,我想我错了。
/鲍勃
【问题讨论】:
我正在为我拥有的 Windows 应用程序使用 ClickOnce 部署。但是,当我上传新版本时,它会创建一个新的安装路径,并且不会重复使用第一次安装的初始路径?
我依赖于位于第一个路径中的文件夹中的自动附加数据库,因此当更新查找文件时它没有找到它,因为它正在新安装路径中的文件夹中查找?
知道如何强制 ClickOnce 覆盖初始安装吗?我认为这是默认的 ClickOnce 行为,我想我错了。
/鲍勃
【问题讨论】:
当您将数据库文件添加到您的项目时,默认的Build Action 将为Content,而在Publish 页面的Application Files 设置中,发布状态将为Data File (Auto)。
虽然您不更改项目的数据库文件,但当您发布项目并安装新版本时,将使用之前版本的数据库文件。但是,如果您更改项目的数据库文件,例如添加一些表或一些测试数据,您使用更改的数据库文件创建的新安装将覆盖以前版本的数据库。
如果项目中的数据库文件有一些变化,当你发布和安装应用程序时,之前版本的数据库仍然可以访问,并复制到你应用程序的data文件夹中名为.pre的文件夹中.
您可以使用以下命令找到安装的数据文件夹:
System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory
数据目录下.pre文件夹下有旧版数据库mdf和ldf文件,你可以根据需要使用。
【讨论】:
.pre 文件夹复制到主数据目录并在新的 mdf 上覆盖它们和ldf文件。然后删除旧的 mdf 和 ldf 文件。这样,无论更改项目数据库文件,我都可以在安装之间保留数据库。但是,我建议您遵循我在答案的前两段中描述的设置。我在 cmets 中描述的案例只是为了展示如何使用旧数据文件,例如用于数据迁移。