C# 使用ClickOnce部署更新本地SQL Server数据库
我正在构建一个应用程序,它将使用一些设置和本地SQL Server。我的问题是,何时更新应用程序;设置或数据是否会被覆盖C# 使用ClickOnce部署更新本地SQL Server数据库,c#,.net,deployment,clickonce,sql-server-ce,C#,.net,Deployment,Clickonce,Sql Server Ce,我正在构建一个应用程序,它将使用一些设置和本地SQL Server。我的问题是,何时更新应用程序;设置或数据是否会被覆盖 如果我想在将来更改某些表,会发生什么情况?在通过ClickOnce进行更新期间,用户级设置不会被覆盖,但您可以推送新的应用程序级设置,因为更新期间将覆盖[YourExeName].exe.config文件 如果需要覆盖用户级设置,则必须以编程方式完成。坦率地说,我一直认为ClickOnce处理数据的方式是危险的。如果使用ClickOnce部署数据库,它会将其放在DataDir
如果我想在将来更改某些表,会发生什么情况?在通过ClickOnce进行更新期间,用户级设置不会被覆盖,但您可以推送新的应用程序级设置,因为更新期间将覆盖
[YourExeName].exe.config
文件
如果需要覆盖用户级设置,则必须以编程方式完成。坦率地说,我一直认为ClickOnce处理数据的方式是危险的。如果使用ClickOnce部署数据库,它会将其放在DataDirectory中。然后,当您将更新部署到应用程序时,它会将数据库复制到安装下一版本应用程序的文件夹中。但是,如果数据库发生更改,它会将其复制到+\pre文件夹,并将一个新文件夹放入datadirectory中。如果你没有意识到你改变了它,它会取代它。如果您打开一个SQLCE数据库并检查数据结构,那么将部署它。惊喜 我认为将数据存储在用户配置文件下的另一个文件夹中更有意义,而且更安全。然后,您可以选择何时更新数据库。将显示如何移动您的数据,使其不受ClickOnce更新的影响 此外,当您确实希望对数据库进行更改时,可以使用SQL语句进行更改,如“ALTERTABLE”等。我创建了一个脚本,并将其作为一个长字符串(其中包含回车符)进行部署,并让应用程序通过回车符将资源拆分,然后逐个执行语句。你知道大概的意思了 关于用户设置的一个注释——您可以通过UI以编程方式更改这些设置(即,为用户提供功能)。但请注意,如果您更改应用程序的证书并运行足够高的.NET版本(3.5,4),它本身不会给您带来问题,但它与ClickOnce应用程序具有不同的标识,并且在发布下一次更新时不会结转用户设置。出于这个原因,我还为配置数据滚动了自己的XML文件,并将其存储在LocalApplicationData中