.Net Framework 3.5 以降を使用して Windows フォーム アプリを構築しています。ユーザー スコープでアプリケーション設定を使用して問題に直面しています。
ユーザー スコープのアプリケーション設定について初めて読んだとき、アプリケーションが設定をユーザーに関連付けることを理解しました。また、MSDN から、パスの下のuser.configファイルに設定が保持されることも知りました: %LOCALAPPDATA%\CompanyName\ProductName\ProductVersion フィールドApplication.LocalUserAppDataPath Reference: http://msdn によって返される値とまったく同じ値です。 microsoft.com/en-us/library/8eyb2ct1.aspx
ここでの問題は、MSDN に書かれているファイル パスに関する記述がすべて完全に間違っていることです。そして、実験では、ファイル パスが実際には%LOCALAPPDATA%\companyname\appdomainname_eid_hash\verisonであることを明確に示しています。
まず第一に、なぜこのような重要な情報が MSDN で間違っているのかについて、合理的な説明を知りたいと思っています。
第 2 に、ここでの問題は、.Net で展開メソッド (Windows インストーラーや ClickOnce など) を使用しておらず、使用するつもりもありませんし、使用したくもないことです。ここでは、リリースをビルドするだけで、リリースの exe ファイルをホスト コンピューターにコピーします。インストーラーを使用していないため、アセンブリ (exe ファイルなど) の場所を変更するたびに、.Net Framework はアセンブリを別のアプリケーションとして認識し、別のハッシュで新しいフォルダーを作成します。および新しい user.config ファイル。これはもちろん私にとって問題です。私が検討しているのは「ユーザー設定」ではなく「ユーザーとアセンブリの設定」であることを意味するため、論理的には私には適していません。ユーザーがアセンブリをどこにでも再配置でき、同じ設定ファイルにアクセスできる理由がわかりません (MSDN が誤って述べているように!!)
さらに、IsolatedStorage を使用して、まったく同じ問題に直面しています。また、IsolatedStorage では、アプリケーション設定の問題とまったく同じ理由で exe ファイルを再配置すると、アセンブリがある場所にあるときに保存するすべてのデータに完全にアクセスできなくなります。
どうすればこれを解決できますか、または少なくとも、ハッシュを使用した命名規則が.Netのどこから発生したかを知ることができますか?それに応じてexeの再配置を検討することを決定したときにMicrosoftが行った理由は何ですか??