2014-02-27 85 views
0

我有一個使用C#和SQL的WinForm應用程序。 我有一個特殊的形式加載事件,返回我的應用程序currentversion。表單加載期間未設置應用程序版本

下面是它的外觀。

public Version assm 
{ 
    get 
    { 
     return ApplicationDeployment.CurrentDeployment.CurrentVersion; 
    } 
} 

我使用的assm函數得到釋放的細節,如主要版本,次要,建立等

label1.Text = assm.Major.ToString(); 
label5.Text = assm.Minor.ToString(); 
label6.Text = assm.Build.ToString(); 
label7.Text = assm.Revision.ToString(); 

但同時加載形式,它給出了「應用程序標識未設置」例外:return ApplicationDeployment.CurrentDeployment.CurrentVersion;

可能是什麼原因?

此外,還有任何其他方式來獲取應用程序版本的詳細信息?

+0

是您使用clickonce部署的應用程序嗎? ApplicationDeployment.CurrentDeployment只適用於 – Lev

回答

0

,你可以使用FileVersionInfo.ProductVersion該值。例如。

Assembly assembly = Assembly.GetExecutingAssembly(); 
FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(assembly.Location); 
string version = fileVersionInfo.ProductVersion; 

你把AssemblyInformationalVersion值可以是你喜歡的東西真的,它不侷限於MAJOR.MINOR等,所以值,如「1.5測試版1」,是完全有效的。

查看MSDN瞭解更多信息http://msdn.microsoft.com/en-us/library/system.diagnostics.fileversioninfo.productversion(v=vs.110).aspx

所以添加額外的版本信息,你就會有一個Assembly.cs,其中將包括類似:

[assembly: AssemblyVersion("1.5.*")] 
[assembly: AssemblyFileVersion("1.0.0.0")] 
[assembly: AssemblyInformationalVersion("1.5 beta 1")] 
+0

它需要使用'AssemblyInformationalVersion'進行設置。如果沒有設置,'FileVersionInfo.ProductVersion'的值將是'AssemblyFileVersion'屬性的值(我懷疑它是「1.0.0.0」)。 –

+0

更新我的答案一點。這有幫助嗎? –

0

你可以使用該程序集的版本:如果您在設置你的AssemblyInfo.cs中的AssemblyInformationalVersion屬性

public Version assm 
{ 
    get 
    { 
     return Assembly.GetExecutingAssembly().GetName().Version; 
    } 
} 
+0

這將返回assemblyinfo.cs版本..在我的這種情況下它的1.2 ,但我的發佈版本值是1.5.2.1 .. 我想顯示在標籤控件中的任何...任何如何做到這一點? –

0

我用這個:

public string GetVersion() 
     { 
      Version v = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; 
      return " v." + v.Major + "." + v.Minor + "." + v.Build + "." + v.Revision; 
     } 
相關問題