2

我的 .NET 应用程序现在遇到了最奇怪的情况。当我在 Visual Studio(调试版本)中启动应用程序时,它会打开并加载位于 .xml 的 .xml 文件 C:\ProgramData\MyApp\Settings.config

唯一的问题是,这个文件不存在。我删除它以清除所有设置,但应用程序仍在加载它(我的旧设置)。在发布模式下,它会正确检测到没有设置,并创建一个新文件。但是当我删除它并在调试器中重新启动时,它会再次加载以前的文件。

我在加载它的行上放置了一个断点,文件名显然就是上面提到的那个。我什至删除了整个文件夹 ( C:\ProgramData\MyApp),应用程序仍在加载它。当我将断点处的确切字符串复制到 Windows 资源管理器中时,它说没有这样的文件。但是它FileStream被创建,它具有正确的长度,并且XmlSerializer完全读取它。

我可以在 Windows 资源管理器(隐藏和系统)中看到所有文件,我什至尝试删除该文件夹。我也没有任何 NTFS 连接和类似的东西。

Visual Studio 从哪里加载这个文件?

[编辑]

感谢@MichaelBurr 在下面的评论,我发现(使用进程监视器)该文件正在从C:\Users\MyAccount\AppData\Local\VirtualStore\ProgramData\MyApp\Settings.config. 这种“重定向”仅在调试模式下发生(即使在我刚刚为该特定文件编写的全新测试控制台应用程序中)。

谁能解释为什么会这样?

[编辑2]

不知道这是否有帮助,但是:在某些时候,我使用它的 WiX 安装程序在我的机器上安装和卸载了这个应用程序的发布版本。如果当时 Visual Studio 也在运行,它是否有可能决定为自己的目的创建此文件夹的“虚拟副本”?

如果是,我如何让它再次使用绝对路径?

4

0 回答 0