2

現在、.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 も実行されていた場合、独自の目的でこのフォルダーの「仮想コピー」を作成することを決定した可能性はありますか?

はいの場合、絶対パスを再度使用するにはどうすればよいですか?

4

0 に答える 0