C# 当程序复制到其他地方时,应用程序设置将在清除后显示
我有一个C# 当程序复制到其他地方时,应用程序设置将在清除后显示,c#,winforms,visual-studio,build,application-settings,C#,Winforms,Visual Studio,Build,Application Settings,我有一个WinForm项目,其中有一个表单和一个应用程序设置文件。当表单加载时,它会读取应用程序设置,如果程序成功运行(即文件写入目标),则会保存应用程序设置以供下次运行 在构建解决方案时,我注意到一个奇怪的行为: 当我在bin/Release文件夹中清理和重建解决方案并测试程序时,一切看起来都很好,应用程序设置也很清晰。但是,当我将相同的文件复制到另一个目标并从那里运行程序时(即使.exe.config文件也被替换为新的干净版本),复制版本似乎仍然记得我的应用程序设置。什么可能导致这种情况?当
WinForm
项目,其中有一个表单和一个应用程序设置文件。当表单加载时,它会读取应用程序设置,如果程序成功运行(即文件写入目标),则会保存应用程序设置以供下次运行
在构建解决方案时,我注意到一个奇怪的行为:
当我在
bin/Release
文件夹中清理和重建解决方案并测试程序时,一切看起来都很好,应用程序设置也很清晰。但是,当我将相同的文件复制到另一个目标并从那里运行程序时(即使.exe.config
文件也被替换为新的干净版本),复制版本似乎仍然记得我的应用程序设置。什么可能导致这种情况?当您以正常方式使用设置时,考虑这些事实将有助于您更好地了解用户设置:
- 使用
Properties.Default.settings.save()保存设置时,
用户设置的当前值存储在%userprofile%\appdata\local
文件夹中,该文件夹具有应用程序的名称,该子文件夹对于部署是唯一的
- 每个部署都有一个唯一的路径,因此,当您在以前使用的路径中复制应用程序时,它将假定为对以前部署的更新,以前的用户设置将被记住并与新添加的设置合并
- 如果以全新的路径复制应用程序,它将假定为新部署,并且不会记住以前的用户设置
- 只有默认值存储在应用程序的
.config
文件中.exe
旁边,因此删除它们不会影响记住用户保存的值
我以前的Windows服务存在此问题。VS似乎以某种方式缓存了一个旧版本。帮助我的是创建了一个全新的项目。@avantvous我明白了!还有什么能保证新项目不会被VisualStudio以同样的方式执行?不保证,但它每次都对我有效。尝试一下,但仍保留旧副本以防万一。@avantvous但从另一台计算机运行时,它会正常工作,对吗?@RezaAghaei Yes,.exe.config
文件中的默认值现在为空。