c# - obligatoria - publicar proyecto visual studio 2017
Mostrando la versión de implementación de ClickOnce en la aplicación WPF (5)
¿Qué error obtienes? No hay diferencia en la API de ClickOnce entre Windows Forms y WPF. No depende de ningún marco de UI.
¿Recordó agregar una referencia a System.Deployment.dll?
Estoy implementando ahora un proyecto WPF c # y quiero poner la versión de clic (en lugar de la versión del producto o assymbly) en el título de la pantalla. Solía hacerlo en la aplicación Win form de la siguiente manera. Pero parece que no es el camino en las aplicaciones de WPF. Busco en Google bu no encontré nada. Por favor ayuda.
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
lblVer.Text = "V" + ad.CurrentVersion.ToString();
}
else
lblVer.Text = "V" + Application.ProductVersion.ToString();
Prueba esto:
public static Version GetPublishedVersion()
{
XmlDocument xmlDoc = new XmlDocument();
Assembly asmCurrent = System.Reflection.Assembly.GetExecutingAssembly();
string executePath = new Uri(asmCurrent.GetName().CodeBase).LocalPath;
xmlDoc.Load(executePath + ".manifest");
string retval = string.Empty;
if (xmlDoc.HasChildNodes)
{
retval = xmlDoc.ChildNodes[1].ChildNodes[0].Attributes.GetNamedItem("version").Value.ToString();
}
return new Version(retval);
}
Esta solución es similar a @Engin, pero usa XPath.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("...");
XmlNamespaceManager ns = new XmlNamespaceManager(xmlDoc.NameTable);
ns.AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1");
string xPath = "/asmv1:assembly/asmv1:assemblyIdentity/@version";
XmlNode node = xmlDoc.SelectSingleNode(xPath, ns);
string version = node.Value;
using System;
using System.Deployment.Application;
namespace Utils
{
public class ClickOnce
{
public static Version GetPublishedVersion()
{
return ApplicationDeployment.IsNetworkDeployed
? ApplicationDeployment.CurrentDeployment.CurrentVersion
: System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
}
}
}
Si obtiene un error sobre System.Deployment.Application
, entonces Solution> Project> References> Add Reference> Assemblies> Framework> System.Deployment.
No analice el XML del ensamblado para esta información; confía en un comportamiento no documentado que simplemente funciona ''por ahora''.
OK, encontré el problema. Tuve que agregar una referencia al sistema. System.Deployment
Es por eso que no pude usarlo. Este dll es para winforms también.