我想要我的WPF应用程序发布版本。我尝试使用this问题的答案。它可以工作,但问题是我们可以手动更改那里的值。我想知道我的项目实际发布了多少次(不需要版本号。我发布了我的应用程序的次数)。可以这样做吗?
答案 0 :(得分:12)
使用Click Once,每次发布时,Visual Studio都会自动更改数字。每次发布时它都会增加值。您的问题是您已手动更改了号码。解决方案是发布并让Visual Studio更新值...您应该注意到您的项目需要在发布后保存。这是因为Visual Studio只为您增加了值。
更新>>>
如果要从代码中访问已发布的版本( 已在您的问题中明确指出),那么您可以使用此代码,但必须确保应用程序是网络部署的首先......这意味着它实际上已经发布,因此在调试时它不会起作用。试试这个:
private string GetPublishedVersion()
{
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.
CurrentVersion.ToString();
}
return "Not network deployed";
}
答案 1 :(得分:7)
您可能会被2组数字搞糊涂。请注意,您可以在两个不同的地方
中设置WPF应用的版本AssemblyVersion
,如果在“解决方案资源管理器”中展开“项目属性”节点,则可以找到该文件。它们的相似之处在于它们都提供4个数字:主要,次要,构建和修订。不同之处在于,如果应用实际上已发布(即已安装),Publish Version
仅可用。它在您的调试会话中不可用,也不是您只是将可执行文件复制到另一台计算机并在那里运行它。因此,如果您只需要跟踪EXE文件的版本,请使用 AssemblyInfo.cs 。
相应地,要读取数据,请使用以下代码:
1阅读发布版本(在“发布”标签中声明)
using System.Deployment.Application;
ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
请注意,在这种情况下:a)您需要添加对System.Deployment
程序集的引用,b)如果未部署应用程序,它将无效。
2阅读汇编版本(在AssemblyInfo.cs中声明)
Assembly.GetExecutingAssembly().GetName().Version;
这个一直有效。
答案 2 :(得分:3)
var obj=Assembly.GetExecutingAssembly().GetName().Version;
string version= string.Format("Application Version {0}.{1}", obj.Build, obj.Revision);
OR
string version= string.Format("Application Version {0}.{1}", obj.Major, obj.Minor);
适合您的任何属性。
答案 3 :(得分:2)
通用解决方案,如果我们从非启动程序集中获取应用程序版本:
var version = System.Reflection.Assembly.GetEntryAssembly().GetName().Version;
string appVersion = $"{version.Major}.{version.Minor}";
GetEntryAssembly提供启动项目的版本。