如何获取 AssemblyInformation

How to get AssemblyInformations

在我的 AssemblyInfo.cs 文件中,我有如下属性:

   [assembly: AssemblyVersion("1.0.*")]
   [assembly: AssemblyCopyright("Copyright ©  2015")]

现在我想在 App.xaml.csOnLaunched(LaunchActivatedEventArgs e) 方法中获取这些信息。

当我在互联网和 SO 上搜索这个时,我总是这样解决:

   System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
   FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
   string version = fvi.FileVersion;

但这对 Windows 10 不起作用。那么 Windows 10 是否有类似的东西?

编辑:
我正在开发 Windows 10 UWP 应用程序。

您可以使用此代码查找属性:

var currentAsembly = typeof(App).GetTypeInfo().Assembly;
var customAttributes = currentAssembly.CustomAttributes;

CustomAttributes 是可用属性的 IEnumerable 对象,您可以在其中找到有关程序集和文件版本的信息

编辑:

完整代码如下:

var currentAssembly = typeof(App).GetTypeInfo().Assembly; 
var customAttributes = currentAssembly.CustomAttributes; 
var list = customAttributes.ToList(); 
var res = list[0]; 
var result = list.FirstOrDefault(x => x.AttributeType.Name == "AssemblyFileVersionAttribute"); 
var ver = result.ConstructorArguments[0].Value;

如果您需要获取有关应用程序版本的一般信息,可以使用Package.Current 属性。

using Windows.ApplicationModel;

Package package = Package.Current;
PackageId packageId = package.Id;
PackageVersion version = packageId.Version;

String output = String.Format(
               "Name: \"{0}\"\n" +
               "Version: {1}.{2}.{3}.{4}\n" +
               "Architecture: {5}\n" +
               "ResourceId: \"{6}\"\n" +
               "Publisher: \"{7}\"\n" +
               "PublisherId: \"{8}\"\n" +
               "FullName: \"{9}\"\n" +
               "FamilyName: \"{10}\"\n" +
               "IsFramework: {11}",
               packageId.Name,
               version.Major, version.Minor, version.Build, version.Revision,
               packageId.Architecture,
               packageId.ResourceId,
               packageId.Publisher,
               packageId.PublisherId,
               packageId.FullName,
               packageId.FamilyName,
               package.IsFramework);