VS 2008 / VB.Net / WinForms
我有一个项目的应用程序设置(Settings.settings),我正在使用Click Once部署。
我使用VS编辑器创建设置,我可以在app.config文件中看到该设置
<applicationSettings>
<MyApp.Win.My.MySettings>
<setting name="MySetting" serializeAs="String">
<value>False</value>
</setting>
</MyApp.Win.My.MySettings>
</applicationSettings>
我想在单击一次打包应用程序后更新此设置。该设置仅用于测试目的。
如果我更改xxx.config.deploy并重新安装应用程序,请单击一次。新设置值不会更改(似乎在某处缓存)。即使我更改了我的本地电脑,设置似乎也在某处缓存。如果我进入VS,它会要求我重新同步设置。但是我需要在单击一次打包应用程序后执行此操作。
更新
我可以更改其他设置,例如连接字符串,并在安装应用程序后反映出来。我只对“MySettings”设置有问题。
澄清步骤:
感谢您的帮助
答案 0 :(得分:0)
有趣。我本以为安装会失败,但我只是尝试了,在config.deploy中更改了一个值,安装工作正常,正如你所说,我改变的值仍然具有原始值。
创建部署文件时,clickonce会创建清单并进行检查以确保每个文件都保持不变,如果任何文件不同,则安装失败。
似乎没有检查config.deploy所以我认为创建清单时它必须记录内容并在客户端安装时使用这些内容。
那么如何更新你的价值呢?问题是,清单的创建发生在MsBuild的CoreBuild目标期间。之后的任何更改都会使已发布的构建失效,因此我认为更新它的最佳位置是BeforeBuild事件。更新文件时需要考虑很多事情,所以检查我的blog entry,这对你想做的事情有点过分,但即使你想做的事情看起来很简单,但要做到这一点也很棘手。