代码之家  ›  专栏  ›  技术社区  ›  Mike Stockdale

如何判断.NET程序集是否是动态的?

  •  43
  • Mike Stockdale  · 技术社区  · 15 年前

    3 回复  |  直到 15 年前
        1
  •  44
  •   Bhushan Firake    10 年前

    要检查部件是否为动态部件,请执行以下操作:

    if (assembly.ManifestModule is System.Reflection.Emit.ModuleBuilder)
    

    我花了一段时间才弄明白,所以这里有人问我并回答了。

    更新:

    在.NET 4.0中,现在有一个属性:

    if (assembly.IsDynamic)
    
        2
  •  22
  •   Nich Overend    13 年前

    在.NET 4中,还可以检查Assembly.IsDynamic属性。

        3
  •  0
  •   Ron    12 年前

    public override string CodeBase
    {
        get
        {
            throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicAssembly"));
        }
    }
    

    在.NET Framework 4中,检查Assembly.IsDynamic属性应该更可取,因为它更易读,并且可能更适合未来,以防出现重写IsDynamic的新类。由于AssemblyBuilder.IsDynamic始终返回true,这是AssemblyBuilder对象始终等效于“动态dll”的更多证据。

    以下是.NET 4 AssemblyBuilder的IsDynamic:

    public override bool IsDynamic
    { 
        get {
            return true; 
        } 
    }