首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Assembly.GetExecutingAssembly()性能

Assembly.GetExecutingAssembly()性能
EN

Stack Overflow用户
提问于 2012-06-14 10:29:51
回答 1查看 2.4K关注 0票数 3

我正在研究创建一种自动化的方法来检查我们系统的运行版本。每当我们发布要测试的代码时,版本都会使用

代码语言:javascript
复制
[assembly: AssemblyVersion("1.21.0.13329")]
[assembly: AssemblyFileVersion("1.21.0.13329")]

现在,我想扩展我们的ASP.Net Web Web ,以显示这个版本号。所以Web应用程序会把它放在主页的某个地方,web服务可能会有一个返回版本号的web方法。

我在考虑用

代码语言:javascript
复制
Version version = Assembly.GetExecutingAssembly().GetName().Version;

做这件事。但我担心,因为这是在使用反射,它可能会给我的代码增加性能开销。它可能会被打几次电话,特别是在主页上,我不希望这样会减慢响应时间。

我有另一个解决方案,所以我不想要替代方案,我只想知道是否有人知道这样做的性能开销是否会比较大?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-14 10:33:56

性能开销以及它是否重要的问题实际上取决于访问了多少。在一个页面命中,可能不是-代码执行时间被测量的一些ms。如果服务器负载很大,很有可能。

但你就不能只做一次(也就是仍然使用反射,但不是每次):

我假设在web应用程序实例的生命周期中,这种情况不会改变--那么为什么不捕获一次这个信息并存储它呢?

也许可以创建一个类来捕获它,例如:

代码语言:javascript
复制
public class AppVersion
{
    private static readonly Version _applicationVersion = Assembly.GetExecutingAssembly().GetName().Version;

    public static Version ApplicationVersion
    {
        get { return _applicationVersion; }
    }
}

您现在可以通过以下方式在代码中访问它:

代码语言:javascript
复制
var version = AppVersion.ApplicationVersion
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11031233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档