Visual Studio调试版本应用程序打开已删除的文件

时间:2012-10-20 21:17:04

标签: .net debugging visual-studio-2012 virtualstore

我的.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当时也在运行,它是否有可能决定为自己的目的创建此文件夹的“虚拟副本”?

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

0 个答案:

没有答案