【问题标题】:Can I rely on specific capitalization of .Net assembly names?我可以依赖 .Net 程序集名称的特定大写吗?
【发布时间】:2013-02-15 15:35:31
【问题描述】:

在我的代码中,我想检查是否加载了特定程序集。我有这个代码:

var assembly = AppDomain.CurrentDomain.GetAssemblies().Where(
    a => a.FullName.StartsWith("Microsoft.WindowsAzure.ServiceRuntime")).SingleOrDefault();

现在这段代码依赖于程序集的特定大小写 - 比较区分大小写。

我是否需要在比较时不区分大小写,或者我是否可以一直期待特定的大写?

【问题讨论】:

  • 对于 Microsoft 程序集,是的。
  • @Hans Passant:我不太明白。您的意思是“由 MS 发货”吗?

标签: c# .net reflection assemblies


【解决方案1】:

根据this,运行时将程序集名称视为不区分大小写。也就是说,您不会同时加载两个名称​​仅大小写不同的程序集。

因此,如果您只想检查特定程序集名称,则应使用 this overload of StartsWithStringComparison .InvariantCultureIgnoreCase 进行不区分大小写的比较,以避免(非常罕见的)程序集名称大写的情况变了。

a.FullName.StartsWith("Microsoft.WindowsAzure.ServiceRuntime",
     StringComparison.InvariantCultureIgnoreCase)

【讨论】:

    猜你喜欢
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2011-01-23
    相关资源
    最近更新 更多