2011-05-18 12 views
4

我一直在調查這幾個小時。我找到了很多鏈接,其中包括幾個聲明顯示如何查找啓動路徑或應用程序目錄的鏈接。所有的解決方案的建議返回一個位置:如何確定我的WPF(xbap)應用程序是從哪個文件夾開始的?

C:\Users\<my user name>\AppData\Local\Apps\2.0\XO8PWL8B.5HH\1GZX7M0H.N1J\<temp location>\

當我的WPF XBAP從遠程位置運行。我需要確定遠程位置的實際文件夾。

\\ABCDEF\myApp.xbap 

我希望以編程方式確定服務器和文件夾:

我才能運行此應用程序,我進入這個部署到內部服務器ABCDEF,所以。我之所以這樣做,是因爲每次發佈WPF時都會打開「automatically increment revision with each publish」。附加DLL所在的文件夾發生更改,該程序依賴於其他程序。

我想能夠動態地確定正確的文件夾來查看。

我曾嘗試:

'Dim path As String = Reflection.Assembly.GetEntryAssembly().Location 
'Dim Path As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) 
'System.IO.Path.GetDirectoryName(System.Reflection. Assembly.GetExecutingAssembly.Location) 
'application.StartupPath 

所有這一切都沒有工作。

這些環節提出了許多的方法我都試過:

Link1

Link2

Link3

Link4

Link5

+0

只是好奇,這些DLL .NET應用程序依賴的程序集?如果是這樣,你不需要擔心這一點,只要你在構建中包含程序集,清單應該爲你處理這個問題。項目屬性 - >發佈 - >應用程序文件 - >確保你的應用程序已經標記了依賴程序集。 – 2011-05-18 20:06:16

+0

你會想,但是,我的前任有一個網頁設計,專門告訴應用程序的一切。我現在將其轉換爲WPF,我相信如果我可以確定DLL的位置會更簡單。該DLL來自我的主要應用程序依賴的30個項目。 – 2011-05-18 20:21:23

回答

4

我認爲這會引導你走向正確的方向。因爲它聽起來像你通過的ClickOnce部署你應該得到的信息,你需要在這裏:

System.Deployment.Application.ApplicationDeployment.CurrentDeployment 

這個類可以在System.Deployment.dll

發現不幸的是,CurrentDeployment對象實際上並沒有告訴你在哪裏申請住所以你必須,如果你將這些都做一些更多的工作:(

var datadir = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory 

you'l升得到這樣的事情(爲DataDirectory目錄)

C:\用戶\管理\應用程序數據\本地\ APPS \ 2.0 \ DATA \ BVPTZA5G.3AC \ WC2WBZ92.D96 \ expe..tion_ba14dd6bedbd6876_0000.0009_7919ca38a4e51341 \ DATA \ 1.0.0.0

從那裏,你需要得到上面以粗體顯示文件夾的文件夾名稱,因爲 申請住在這裏(不是數據目錄):

C:\用戶\管理\應用程序數據\本地\ APPS \ 2。0 \ RCVHD71Y.7CQ \ BC42YMHT.ZQ0 \ expe..tion_ba14dd6bedbd6876_0000.0009_7919ca38a4e51341

因此,我將創建

  • 注意到在第一文件路徑
  • 確定隨機生成的文件夾名的函數
  • 根據該文件夾名稱(包含您的可執行文件)找到應用程序的文件夾

I t在類型ApplicationDeployment上創建擴展方法的hink會很合適。

希望幫助

+0

我會在AM中嘗試一下,感謝您的輸入。 – 2011-05-18 20:49:08

0

這爲我工作:

串exePath = System.Reflection.Assembly.GetExecutingAssembly()GetModules()[0] .FullyQualifiedName。 string dir = Path.GetDirectoryName(exePath);

相關問題