2013-07-17 19 views
22

Witam ponownie wszystkich,jak wyświetlić wersję publiczną w polu tekstowym?

kolejne interesujące pytanie. W tej chwili ręcznie aktualizuję pole wersji (pole tekstowe) w mojej aplikacji za każdym razem, gdy ją publikuję. Zastanawiam się, czy istnieje sposób, aby moja aplikacja dostała te dane skądś i pokazała mi je w pudełku. Używam VS2012 i nie jestem pewien, jak osiągnąć to w C#. Poniżej znajduje się zrzut ekranu okna właściwości VS2012, o którym mówię.

Publish image from VS2012

nowy obraz:

enter image description here

Odpowiedz

11

Nie zapomnij sprawdzić, czy aplikacja jest networkdeployed inaczej nie będzie działać w trybie debugowania.

if (ApplicationDeployment.IsNetworkDeployed) 
{ 
    this.Text = string.Format("Your application name - v{0}", ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString(4)); 
} 
+0

'IsNetworkDeployed' zwraca wartość false. Jaki może być problem? – jackjop

+1

Gdy używasz wersji debugowania pod IDE, to z definicji nie będziesz wdrażany w sieci, a 'ApplicationDeployment.CurrentDeployment.CurrentVersion' rzuci' System.Deployment.Application.InvalidDeploymentException', dlatego musisz sprawdzić na '. IsNetworkDeployed'. Aby sprawdzić, czy to działa, opublikuj go w sieci, a następnie zainstaluj! Możesz również wypróbować 'Application.ProductVersion' zgodnie z odpowiedzią @Christos Lytras. – woodvi

15

Spróbuj tego:

using System.Deployment.Application; 

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

następnie dzwoniącego do nieruchomości pochłaniacza może de-informacyjna Major, Minor, Build i Revision właściwości, takie jak to:

YourVersionTextBox.Text = AssemblyVersion.Major.ToString() + "." + AssemblyVersion.Minor.ToString() + "." + AssemblyVersion.Build.ToString() + "." + AssemblyVersion.Revision.ToString(); 
+0

Podjęłam próbę Twojej sugestii, jednak w bloku try aplikacja aplikacji otrzymała błąd "system.windows.forms.application nie zawiera definicji aplikacji" nawet po dodaniu sekcji "używanie" –

+2

Czy masz odniesienia do 'System.Deployment.dll' w projekcie Windows Forms? –

+0

Naprawdę, co jest dla mnie zagadkowe, że na początku ma problemy z tym. –

7

Również możemy użyć przeciążony ToString z System.Version

using System.Deployment.Application; 

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


YourVersionTextBox.Text = AssemblyVersion.ToString(1); // 1 - get only major 
YourVersionTextBox.Text = AssemblyVersion.ToString(2); // 1.0 - get only major, minor 
YourVersionTextBox.Text = AssemblyVersion.ToString(3); // 1.0.3 - get only major, minor, build 
YourVersionTextBox.Text = AssemblyVersion.ToString(4); // 1.0.3.4 - get only major, minor, build, revision 
0

Jeśli pojawi się błąd ApplicationDeployment, to można spróbować to:

Dla globalnej wersji z dostępem przez Program oświadczyć wewnątrz Program Klasa:

private static Version version = new Version(Application.ProductVersion); 

public static Version Version 
{ 
    get 
    { 
     return version; 
    } 
} 

Teraz masz Program.Version wszędzie dostępny w programie i można go użyć, aby uzyskać informacje o wersji w następujący sposób:

LabelVersion.Text = String.Format("Version {0}.{1}", 
    Program.Version.Major.ToString(), 
    Program.Version.Minor.ToString()); 
Powiązane problemy