我想显示我的桌面应用程序的发布版本。我正在尝试使用以下代码:
_appVersion.Content = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
问题是我没有得到我在项目属性中的发布版本。下面是它的屏幕截图:
但是我正在得到3.0.0.12546,有人知道问题出在哪里吗?
3.0.0.12546
icnyk63a1#
我们可以创建一个属性,它将返回下面提到的版本信息,我们可以使用该属性。
public string VersionLabel { get { if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed) { Version ver = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion; return string.Format("Product Name: {4}, Version: {0}.{1}.{2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision, Assembly.GetEntryAssembly().GetName().Name); } else { var ver = Assembly.GetExecutingAssembly().GetName().Version; return string.Format("Product Name: {4}, Version: {0}.{1}.{2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision, Assembly.GetEntryAssembly().GetName().Name); } } }
ohtdti5x2#
我也遇到了这个问题,发现AssemblyInfo.cs中设置的版本号干扰了Properties中设置的版本号:
AssemblyInfo.cs
Properties
[assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]
我通常注解掉AssemblyInfo中的这些行,并将其替换为
AssemblyInfo
[assembly: AssemblyVersion("1.0.*")]
检查这些值是否已硬编码到AssemblyInfo文件中。查看this SO question了解自动版本控制的有趣讨论。当检查AssemblyInfo.cs时,确保您的自动增量(*-如果您正在使用它)只针对AssemblyVersion,而不是AssemblyFileVersion。调试程序时,可以在中检查程序集的属性
*
AssemblyVersion
AssemblyFileVersion
\bin\Release\app.publish
在Details选项卡下,检查版本号。它是否与您在VS中指定的任何设置匹配?
Details
cetgtptt3#
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
将获取AssemblyInfo.cs文件中存在的程序集版本,若要获取您在发布对话框中设置的发布版本,应使用
System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion
但请注意,您必须添加对System.deployment的引用,并且只有在通过右键单击项目文件并单击“发布”来发布应用程序后,它才起作用,每次发布时,它都将递增修订版本。如果您尝试在调试模式下调用上面的代码行,它将不起作用,并将引发异常,因此您可以使用以下代码:
try { return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion; } catch(Exception ex) { return Assembly.GetExecutingAssembly().GetName().Version; }
1qczuiv04#
使用带有Lambda表达式的C# 6.0
private string GetVersion => ApplicationDeployment.IsNetworkDeployed ? $"Version: {ApplicationDeployment.CurrentDeployment.CurrentVersion}" : $"Version: {Application.ProductVersion}";
4条答案
按热度按时间icnyk63a1#
我们可以创建一个属性,它将返回下面提到的版本信息,我们可以使用该属性。
ohtdti5x2#
我也遇到了这个问题,发现
AssemblyInfo.cs
中设置的版本号干扰了Properties
中设置的版本号:我通常注解掉
AssemblyInfo
中的这些行,并将其替换为检查这些值是否已硬编码到
AssemblyInfo
文件中。查看this SO question了解自动版本控制的有趣讨论。当检查
AssemblyInfo.cs
时,确保您的自动增量(*
-如果您正在使用它)只针对AssemblyVersion
,而不是AssemblyFileVersion
。调试程序时,可以在中检查程序集的属性
在
Details
选项卡下,检查版本号。它是否与您在VS中指定的任何设置匹配?cetgtptt3#
将获取AssemblyInfo.cs文件中存在的程序集版本,若要获取您在发布对话框中设置的发布版本,应使用
但请注意,您必须添加对System.deployment的引用,并且只有在通过右键单击项目文件并单击“发布”来发布应用程序后,它才起作用,每次发布时,它都将递增修订版本。
如果您尝试在调试模式下调用上面的代码行,它将不起作用,并将引发异常,因此您可以使用以下代码:
1qczuiv04#
使用带有Lambda表达式的C# 6.0