是否可以在应用程序运行时获取该应用程序的版本?
在Windows桌面应用程序中,我可以按如下方式获取它:
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
但Windows Phone 8.1中没有GetExecutingAssembly()
。
还有其他办法吗?
答案 0 :(得分:20)
这是:
PackageVersion pv = Package.Current.Id.Version;
Version version = new Version(Package.Current.Id.Version.Major,
Package.Current.Id.Version.Minor,
Package.Current.Id.Version.Revision,
Package.Current.Id.Version.Build);
答案 1 :(得分:0)
出于某种原因,上面的答案对我的项目不起作用(可能是因为我正在运行Windows Phone 10并且该应用程序是针对Windows Phone 8.1的)。既然有人也可能有这个错误,我会留下我找到的解决方案。
Type
type = typeof( App );
TypeInfo
typeInfo = type.GetTypeInfo();
Assembly
assembly = typeInfo.Assembly;
AssemblyName
assemblyName = assembly.GetName();
Version
version = assemblyName.Version;
String
versionString = String.Format( "{0}.{1}.{2}.{3}",
version.Major,
version.Minor,
version.Build,
version.Revision );
或者,以简化的方式:
Version
version = typeof( App ).GetTypeInfo().Assembly.GetName().Version;
String
versionString = String.Format( "{0}.{1}.{2}.{3}",
version.Major,
version.Minor,
version.Build,
version.Revision );
举个例子,虽然我的[assembly: AssemblyVersion( "0.1.*" )]
上有AssemblyInfo.cs
,但我会为Package.Current.Id.Version
生成构建和修订号,但我会0.1.0.0
0.1.5918.18756
我用上面描述的方法得到<%= render :partial => 'shared/order', :object => @order %>
<%- I18n.with_locale('en') do %>
<%= render :partial => 'shared/order', :object => @order %>
<%- end %>
。