usar - que se puede crear con c#
¿Cómo obtengo la versión publicada actual en una aplicación.NET? (6)
Quiero poder mostrar la versión actual de una aplicación .NET que he implementado usando el asistente de publicación. Hay una buena opción para actualizar automáticamente el número de versión cada vez que publico mi aplicación.
Encontré otra pregunta ( actualizar automáticamente el número de versión ) que tenía esto para obtener la versión actual:
Assembly.GetExecutingAssembly().GetName().Version
Esto le proporciona la versión que establece en las propiedades del proyecto, pero no la versión que se incrementa automáticamente cada vez que publica.
Basado en la respuesta de Jason , terminé con esto:
Agregar referencia a System.Deployment.
string versionDeploy = Application.ProductVersion;
if (System.Diagnostics.Debugger.IsAttached)
{
this.lblVersion.Caption = string.Format("Versión {0} DESA", versionDeploy);
}
else
{
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
Version Deploy = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion;
versionDeploy = string.Format("{0}.{1}.{2}.{3}", Deploy.Major, Deploy.Minor, Deploy.Build, Deploy.Revision);
}
this.lblVersion.Caption = string.Format("Versión {0} PROD", versionDeploy);
}
Espero eso ayude.
Puedes usar la siguiente prueba
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed) {
return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion;
}
para evitar la excepción (como se detalla en esta publicación ).
Además, no creo que pueda obtener la versión actual de publicación a través de la depuración de Visual Studio porque al acceder a CurrentDeployment
lanzará InvalidDeploymentException
.
Terminé usando este pequeño código para obtener la versión implementada actual o si no se implementó la versión de ensamblado actual.
private Version GetRunningVersion()
{
try
{
return Application.ApplicationDeployment.CurrentDeployment.CurrentVersion;
}
catch
{
return Assembly.GetExecutingAssembly().GetName().Version;
}
}
Tuve que agregar referencias a System.Deployment
y System.Reflection
.
Usé la siguiente solución para este problema, y está funcionando para mí:
DataSet ds = new DataSet();
ds.ReadXml(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "MyProd.application"));
DataTable dt = new DataTable();
if (ds.Tables.Count > 1) {
dt = ds.Tables[1];
MessageBox.Show(dt.Rows[0]["version"].ToString());
}
Imports System.Configuration
Public Function GetAppVersion() As String
Dim ass As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
Dim ver As System.Version = ass.GetName().Version
Return ver.Major & "." & ver.Minor & "." & ver.Revision
End Function
using System.Deployment.Application;
y
string yourPublishedVersionNumber=ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString()