【问题标题】:I need the version of my assembly but I got the version of the engine who run the tests我需要我的程序集版本,但我得到了运行测试的引擎版本
【发布时间】:2013-07-05 18:20:12
【问题描述】:

我正在使用 teamcity 进行夜间构建和测试运行。

我的代码是用 c# 用 Visual Studio 2010 Professional 编写的

我需要我的程序集版本,但我得到了运行测试的引擎版本

这是我的实际代码: String AssemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();

有什么想法吗?

【问题讨论】:

    标签: c# version teamcity .net-assembly


    【解决方案1】:

    您可以使用反射获取当前正在执行的程序集...

    Assembly.GetExecutingAssembly();
    

    或调用正在执行的方法的程序集......

    Assembly.GetCallingAssembly();
    

    或入口点程序集(启动此过程的程序集)。

    Assembly.GetEntryAssembly();
    

    否则,要获取任意加载的程序集,您需要指定在该程序集中定义的某些已定义 Typeclassstruct)的类型...

    Assembly.GetAsembly(Type myType);
    

    您想要哪个程序集的版本??

    【讨论】:

      【解决方案2】:

      而不是Assembly.GetExecutingAssembly(),只需检查程序集中某种类型的程序集:

      var assemblyVersion = typeof(MyType).Assembly.GetName().Version.ToString()
      

      【讨论】:

      • @JTomas MyType 是在您想要的版本的程序集中定义的某种类型(即您正在测试的程序集)
      【解决方案3】:

      这意味着在你的程序集中接受任何定义的类。

      例如,您在程序集中定义了一个 Employee 类,然后您可以将其用作

      var assemblyVersion = typeof(Employee).Assembly.GetName().Version.ToString()
      

      【讨论】:

        猜你喜欢
        • 2010-12-20
        • 2021-11-20
        • 2010-11-09
        • 1970-01-01
        • 2021-11-02
        • 2020-11-24
        • 1970-01-01
        • 1970-01-01
        • 2023-01-30
        相关资源
        最近更新 更多