【问题标题】:Getting assembly version of executing web application获取执行 Web 应用程序的汇编版本
【发布时间】:2012-08-12 18:09:39
【问题描述】:

我想在我的库中实现一些缓存破坏代码,这些代码可以与 ASP.NET Web 应用程序/站点集成。这将通过将版本字符串附加到 URL 的末尾来实现。我想为缓存清除提供的默认版本提供程序将使用主机网站的程序集版本。

目前,这基本上是我提取此版本号的方式:

HttpContext.Current
           .ApplicationInstance
           .GetType()
           .Assembly
           .GetName()
           .Version
           .ToString()

不幸的是,至少对于我的示例测试站点,应用程序实例的Assembly 是一个生成的程序集(我猜是因为global.asax 被编译成一个新的程序集)。在Get web application assembly name, regardless of current executing assembly 中,SLaks 说您可以使用BaseType 来获取实际站点程序集的类型,但我假设如果站点不使用global.asax 文件,BaseType 会在 BCL 中为您提供一些东西。

是否有任何可靠的方法来提取 ASP.NET Web 应用程序的程序集版本号?我还准备了替代方法来生成每个构建唯一的令牌,这不需要应用程序开发人员额外的构建步骤。

【问题讨论】:

  • 尝试改用 this.GetType() .....

标签: asp.net reflection .net-assembly outputcache


【解决方案1】:

我的策略是从我的自定义类型中选择一个类型,然后向运行时询问该类型程序集的版本号。

 typeof( SomeKnownType ).Assembly.GetName().Version

【讨论】:

  • 如果与该库集成的站点位于 my 代码库下,那将起作用。然而,我的问题是关于我的库,others 插入到他们的 网站。我无法知道他们网站程序集中的类型。
  • 然后让您的配置与一个委托或一个实现您将调用的接口的类一起提供,从而获取版本信息。这不是自动的,但可以完全控制所需参数。
猜你喜欢
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多