我的.NET应用程序现在处于最奇怪的状态。当我在Visual Studio(调试版本)中启动应用程序时,它会打开并加载位于C:\ProgramData\MyApp\Settings.config
的.xml文件。
唯一的问题是,此文件不存在。我删除它以清除所有设置,但应用程序仍在加载它(我的旧设置)。在发布模式下,它会正确检测到没有设置,并创建新文件。但是当我删除它并在调试器内重新启动时,它会再次加载上一个文件。
我在我正在加载它的行上放置了断点,文件名显然是上面提到的。我甚至删除了整个文件夹(C:\ProgramData\MyApp
),应用程序仍在加载它。当我将断点处的确切字符串复制到Windows资源管理器中时,它表示没有这样的文件。但FileStream
已创建,其长度正确,XmlSerializer
完全读取。
我可以在Windows资源管理器中看到所有文件(隐藏和系统),我甚至尝试删除该文件夹。我也没有任何NTFS联结和类似的东西。
Visual Studio从哪里加载此文件?
[编辑]
感谢@ MichaelBurr在下面的评论,我发现(使用Process Monitor)正在从C:\Users\MyAccount\AppData\Local\VirtualStore\ProgramData\MyApp\Settings.config
读取文件。这种“重定向”仅在调试模式下发生(即使在我刚刚为该特定文件编写的全新测试控制台应用程序中)。
任何人都可以解释为什么会这样吗?
[EDIT2]
不知道这是否有帮助,但是:在某些时候,我使用其WiX安装程序在我的机器上安装并卸载了此应用程序的发行版本。如果Visual Studio当时也在运行,它是否有可能决定为自己的目的创建此文件夹的“虚拟副本”?
如果是,我如何让它再次使用绝对路径?