如何获取部件信息

本文关键字:信息 获取 何获取 | 更新日期: 2023-09-27 18:21:43

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

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

现在我想在我的App.xaml.cs中的OnLaunched(LaunchActivatedEventArgs e)方法中获得这些信息。

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

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

但这不适用于Windows10。那么Windows 10有类似的功能吗?

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

如何获取部件信息

如果您需要获得有关应用程序版本的一般信息,可以使用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);

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

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;