【问题标题】:Getting the version number of an application from within a library从库中获取应用程序的版本号
【发布时间】:2012-01-09 17:54:50
【问题描述】:

我正在开发一个试图获取使用它的应用程序版本号的库。

在我的测试应用程序中,当 lib 读取版本号时,使用:

Assembly.GetExecutingAssembly().FullName;

我得到的是 lib 的版本号,而不是主项目。

有没有一种简单的方法可以找到主应用程序的版本号,而不是我的库的版本号?

谢谢。

【问题讨论】:

标签: c# .net windows-phone-7 assemblies version


【解决方案1】:

要获取版本号 (1.2.0.0) ,请使用以下代码:

string version = XDocument.Load("WMAppManifest.xml").Root.Element("App").Attribute("Version").Value;

【讨论】:

  • 非常适合从 WMAppManifest.xml 获取值。谢谢!
【解决方案2】:

您可以使用Application.Current 访问启动应用程序的应用程序实例:

Application.Current.GetType().FullName

话虽如此,我认为没有适用于整个应用程序的版本号。为此,您需要打开 WMAppManifest.xml 文件并从中读取版本。您可以使用以下方式访问清单文件:

var manifestUri = new Uri("WMAppManifest.xml", UriKind.Relative);
Stream manifestStream = Application.GetResourceStream(manifestUri);

【讨论】:

  • Application.Current.GetType().Assembly.FullName 就像一个魅力:) 谢谢。
  • Application.Current.GetType().Assembly.FullName 实际上在 wp8 中不起作用
【解决方案3】:
Assembly.GetEntryAssemlby().FullName;

假设这在 WP7 上受支持。如果没有,请尝试:

typeof(sometype).Assembly.FullName;

在您的主模块中的一种类型上。

【讨论】:

  • 谢谢。但是我无法从生产中的主要应用程序中知道类型。所以这个方法是不够的。不幸的是,GetEntryAssembly() 在 Windows Phone 7 上不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 2020-07-07
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多