.net Visual Studio调试生成应用程序打开已删除的文件

.net Visual Studio调试生成应用程序打开已删除的文件,.net,debugging,visual-studio-2012,virtualstore,.net,Debugging,Visual Studio 2012,Virtualstore,现在我的.NET应用程序遇到了一个最奇怪的情况。当我在Visual Studio(调试构建)中启动应用程序时,它会打开并加载一个.xml文件,该文件位于C:\ProgramData\MyApp\Settings.config 唯一的问题是,此文件不存在。我删除了它以清除所有设置,但应用程序仍在加载它(我的旧设置)。在释放模式下,它会正确地检测到没有设置,并创建一个新文件。但当我删除它并在调试器内重新启动时,它会再次加载上一个文件 我在加载它的行上放置了一个断点,文件名显然就是上面提到的那个。我甚

现在我的.NET应用程序遇到了一个最奇怪的情况。当我在Visual Studio(调试构建)中启动应用程序时,它会打开并加载一个.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
读取文件。这种“重定向”仅在调试模式下发生(即使是在我刚刚为该特定文件编写的全新测试控制台应用程序中)

有人能解释为什么会这样吗

[Edit2]

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


如果是,如何使其再次使用绝对路径?

使用SysInternals中的Process Monitor工具,查看打开文件时系统级发生的情况。@MichaelBurr:你说得对,这很有帮助。我已更新了我的问题。我对该主题了解不够,无法发布答案,但您似乎受到了“数据重定向”的影响:这似乎与我的问题有关。尽管如此,我并没有试图写入一个需要管理员权限的文件夹。不知道为什么它只在VisualStudio中发生。无论如何,谢谢!我现在知道该去哪里了,直到我明白到底发生了什么。