Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当程序复制到其他地方时,应用程序设置将在清除后显示_C#_Winforms_Visual Studio_Build_Application Settings - Fatal编程技术网

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
文件中的默认值现在为空。