2012-01-09 60 views
1

我正在開發一個庫,試圖獲取使用它的應用程序的版本號。從庫中獲取應用程序的版本號

在我的測試應用中,當LIB正在讀取使用的版本號:

Assembly.GetExecutingAssembly().FullName; 

我得到的lib,而不是主體工程的版本號。

有沒有簡單的方法來找到主應用程序的版本號,而不是我的庫?

謝謝。

+0

參見:http://stackoverflow.com/ questions/14224032/getting-main-assembly-version-number – holmis83 2015-01-20 13:27:15

回答

7

您可以使用Application.Current訪問啓動應用程序的應用實例:

Application.Current.GetType().FullName 

話雖如此,我不認爲有一個適用於應用程序作爲一個整體的版本號。爲此,您需要打開WMAppManifest.xml文件並從中讀取版本。您可以使用獲得訪問清單文件:

var manifestUri = new Uri("WMAppManifest.xml", UriKind.Relative); 
Stream manifestStream = Application.GetResourceStream(manifestUri); 
+0

Application.Current.GetType()。Assembly.FullName的作用像一個魅力:)謝謝。 – 2012-01-10 09:08:27

+0

Application.Current.GetType()。Assembly.FullName實際上在wp8中不起作用 – 2014-08-09 21:26:42

1
Assembly.GetEntryAssemlby().FullName; 

假設這是在WP7上支持的。如果不是,請嘗試:

typeof(sometype).Assembly.FullName; 

在您的主模塊的其中一種類型上。

+0

謝謝。但是我不能從生產的主要應用程序中知道一種類型。所以這種方法不夠。不幸的是,GetEntryAssembly()在Windows Phone 7上不起作用。 – 2012-01-09 18:13:48

8

要獲取的版本號(1.2.0.0),使用下面的代碼:

string version = XDocument.Load("WMAppManifest.xml").Root.Element("App").Attribute("Version").Value; 
+0

很適合從WMAppManifest.xml獲取值。謝謝! – Harri 2013-04-26 11:57:22

+0

這絕對是正確的答案。謝謝! – 2014-08-09 21:29:35

相關問題