現在、.NET アプリで奇妙な状況が発生しています。Visual Studio (デバッグ ビルド) 内でアプリケーションを起動すると、.xml にある .xml ファイルが開き、読み込まれ C:\ProgramData\MyApp\Settings.config
ます。
唯一の問題は、このファイルが存在しないことです。すべての設定をクリアするために削除しましたが、アプリはまだそれをロードしています(私の古い設定)。リリースモードでは、設定がないことを正しく検出し、新しいファイルを作成します。しかし、それを削除してデバッガー内で再起動すると、以前のファイルが再度読み込まれます。
ロードしている行にブレークポイントを配置しました。ファイル名は明らかに上記のものです。フォルダー全体 ( C:\ProgramData\MyApp
) も削除しましたが、アプリはまだそれを読み込んでいます。ブレークポイントの正確な文字列を Windows エクスプローラーにコピーすると、そのようなファイルはないと表示されます。しかし、FileStream
が作成され、正しい長さで、XmlSerializer
完全に読み取られます。
Windows エクスプローラー (非表示およびシステム) ですべてのファイルを表示できます。フォルダーを削除しようとしました。また、NTFS ジャンクションなどもありません。
Visual Studio はどこからこのファイルを読み込んでいますか?
[編集]
以下の @MichaelBurr のコメントのおかげで、(Process Monitor を使用して) ファイルが から読み取られていることがわかりましたC:\Users\MyAccount\AppData\Local\VirtualStore\ProgramData\MyApp\Settings.config
。この「リダイレクト」は、デバッグ モードでのみ発生します (その特定のファイルに対して、作成したばかりの新しいテスト コンソール アプリでも)。
なぜこれが起こっているのか誰でも説明できますか?
[編集2]
これが役立つかどうかはわかりませんが、ある時点で、WiX インストーラーを使用して、このアプリのリリース バージョンをマシンにインストールおよびアンインストールしました。その時点で Visual Studio も実行されていた場合、独自の目的でこのフォルダーの「仮想コピー」を作成することを決定した可能性はありますか?
はいの場合、絶対パスを再度使用するにはどうすればよいですか?