2012-12-03 27 views
4

我建立一個Windows使用.NET Framework 3.5及更高版本窗體應用程序。我遇到了使用用戶範圍中的應用程序設置的問題。淨的用戶範圍應用程序設置文件路徑問題

當我第一次讀到我明白,我的應用程序將與設置給用戶的用戶範圍應用程序設置。我也從MSDN瞭解到,該設置將在user.config文件堅持的路徑下:%LOCALAPPDATA%\公司名稱\產品名稱\的ProductVersion 這是由外地返回Application.LocalUserAppDataPath 完全相同的值參考:http://msdn.microsoft.com/en-us/library/8eyb2ct1.aspx

這裏的問題是,所有的什麼寫在MSDN有關文件的路徑是完全錯誤的。和實驗清楚地表明,事實上,文件路徑爲:%LOCALAPPDATA%\公司名稱\ appdomainname_eid_hash \ verison

首先,我真的很在乎知道什麼可能是爲什麼這樣的信息的一個重要部分合理的解釋在MSDN中是錯誤的?

其次,這裏的問題是我沒有在.Net中使用Deployment方法(例如Windows Installer或ClickOnce),我不打算使用它們,我不想使用它們。在這裏,我只是建立一個版本,他們將release exe文件複製到主機。因爲我不使用安裝程序,每次我改變了組件(即EXE文件)的位置.Net框架識別組件不同的應用程序,它與不同哈希和一個新的用戶創建一個新的文件夾。配置文件。當然,這是我的問題,因爲這意味着那些我正在考慮是不是「用戶設置」,而他們是「用戶和程序集設置」,它只是在邏輯上不適合我。我不覺得

更多了,完全相同的問題是使用面向我一個理由,爲什麼用戶可以重新定位裝配到任何地方,仍然可以訪問相同的設置文件(如MSDN虛假陳述!!) IsolatedStorage。此外,在IsolatedStorage,我搬遷了同樣的確切原因的exe文件與應用程序設置的問題都是我存儲在當組件處於某個位置的數據變得完全不可訪問。

我該如何解決這個問題,或者至少我可以知道在.Net中使用哈希的命名約定來自哪裏,以及當決定考慮相應的EXE重定位時微軟可能會做出什麼推理?

回答

1

我沒有爲什麼MSDN上的文檔是不正確的答案,但你必須確保你正在尋找正確版本的文件對.NET 3.5的https://msdn.microsoft.com/en-us/library/8eyb2ct1(v=vs.90).aspx

還發現,根據文檔:

設置文件位置

的app.exe.config的位置和 user.config文件將有所不同基於應用程序是如何 已安裝。(我的強調加入)

應用程序設置進程緊密耦合到您正在繞過的部署。即使使用點擊一次,某些部署策略也需要根據應用程序以編程方式獲取以前版本的設置(https://msdn.microsoft.com/en-us/library/system.configuration.applicationsettingsbase.getpreviousversion(v=vs.90).aspx

如果需要每次有更新時手動複製.exe,你自己的用戶設置對象和使用序列化將是一個更好的選擇?然後,您可以將用戶範圍設置存儲在常見應用程序文件夾等常見位置,並在應用程序啓動時基於用戶反序列化用戶設置。

+0

剛剛意識到這個職位多大年紀了......哇 – dhope

相關問題