0

我有我的AssemblyInfo.cs一個版本號文件中像這樣:查詢AssemblyInformationalVersionAttribute同時配置的Windows Mobile 5.0的PocketPC

[assembly: AssemblyInformationalVersion("0.0.0.2")]

通常情況下,我可以使用FileVersionInfo訪問這些信息,我有一個參考到System.dll(通常定義此類的地方),但System.Diagnostics名稱空間似乎不可用。

下面是VS說的路徑是我引用的系統組件:

C:\ Program Files文件 (x86)的\ Microsoft.NET \ SDK \ CompactFramework \ v3.5版本\ Windows CE的\ SYSTEM .DLL

簡而言之:我怎樣才能顯示的版本字符串(AssemblyInformationalVersion)的我的應用程序我的應用程序?

編輯:使用

Assembly.GetExecutingAssembly().GetName().Version.ToString()

返回 「0.0.0.0」,因爲該屬性是不是在我的AssemblyInfo.cs文件中定義。

回答

0

的解決方案是手動輸入以下到AssemblyInfo.cs中:

[assembly: AssemblyVersion("1.2.3.4")]

我不確定爲什麼Visual Studio省略了它,但通過添加它,

Assembly.GetExecutingAssembly().GetName().Version

返回期望值。

總結:我使用的是正確的代碼,但是我的AssemblyInfo.cs文件中有錯誤的信息。

1

那麼,你試圖讓自己的應用程序的版本:

Debug.WriteLine(string.Format("My App Version: {0}", 
    Assembly.GetExecutingAssembly().GetName().Version.ToString())); 

或CF集的版本:

Debug.WriteLine(string.Format("System.dll Version: {0}", 
    typeof(int).Assembly.GetName().Version.ToString())); 

EDIT1

the actual native FileInfo version(我認爲這是你之後的)。

EDIT2

或者你可以爲託管程序做到這一點:

var a = Assembly.GetExecutingAssembly().GetCustomAttributes(
    typeof(AssemblyInformationalVersionAttribute), true) 
    .FirstOrDefault() as AssemblyInformationalVersionAttribute; 
Debug.WriteLine(string.Format("AssemblyInformationalVersion: {0}", 
a.InformationalVersion)); 
+0

更簡單的解決方案是自己編輯AssemblyInfo.cs文件 - 當文件最初創建時,VS忽略添加正確的屬性。不過,感謝您的幫助。 –

+0

雖然。通常看到一個「PocketPC」目標版本沒有將AssemblyVersion放入本地資源,但是如果你換成了「Windows CE」,它會這樣做。這聽起來像你並不擔心本地資源,但是。 – ctacke

+0

據我所知,我沒有什麼土生土長的 - 這都是託管的。我已經在我的設備上測試過了,它可以正常工作。這不是關鍵任務。 –

相關問題