【问题标题】:How do I find which mscorlib.dll a program is using?如何找到程序正在使用的 mscorlib.dll?
【发布时间】:2015-05-22 23:07:02
【问题描述】:

我已在我的计算机上安装了第 3 方程序。 我在 ildasm.exe 中打开了该程序附带的 .dll 之一并检查了清单:

.assembly extern mscorlib
{
   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )              // .z\V.4..
   .ver 2:0:0:0
}

所以程序使用 .net 2.0、3.0 或 3.5。

我在我的电脑上搜索了 mscorlib.dll,发现了 61 个文件。

我如何找到程序实际使用的这些 .dll 中的哪一个?

我还注意到其中一些位于名为: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable\v4.0\Profile\ProfileXXX\mscorlib.dll,其中 XXX 是 1-3 位数字。

这里发生了什么?我可以理解每个 .net 版本(2.0、3.0、3.5 ...)都会有一个不同的文件,但不应该添加多达 61 个文件。这些配置文件之间有什么区别?

.dll地狱问题的.net解决方案是这样的吗? 同一文件的大量版本 + 用于安全识别 .dll 的公钥。

谁会删除不再使用的 .dll?似乎每个程序都有自己的 .net 版本。最终必须填满磁盘吗?

【问题讨论】:

  • 你试过Fusion Log viewer吗?不过,我还没有查看是否可以使用它来检查 mscorlib.dll。 stackoverflow.com/a/3952202/255562
  • 看起来像是重复的,尽管这些答案已经有好几年了,可能已经过时了。 stackoverflow.com/questions/227886/…
  • .NET 客户端配置文件是 .NET Framework 的子集,随 .NET Framework 4 及更早版本一起提供。查看 MSDN herehere
  • @Andy 不,它不是颠覆,而是一个子集(只是整个框架的一部分),以实现更小的应用程序。
  • @Andy 我对此不太确定,但我认为我硬盘上的这些配置文件是由 Visual Studio 创建的,我制作的每个应用程序都有一个配置文件。如果我从 Visual Studio 中删除了我的任何旧项目,然后使用文件资源管理器删除了关联的文件,那么稍后我需要手动删除关联的 .net 配置文件。

标签: c# .net


【解决方案1】:

您刚刚发现了一个简单的事实,.NET 已经非常流行,并且在 13 年后有很多版本。大多数程序员都知道桌面版本的 1.0、1.1、2.0 和 4.0 版本。而且它总是由 NGEN 预先处理,因此乘以 2。大多数人不知道 mscorlib.dll 包含非托管代码,因此它有两个不同的版本,一个用于 32 位代码,一个用于 64 位代码,乘以2 再次。

这仅适用于桌面。然后你就有了针对不同运行时环境的版本。有 Silverlight,5 个不同的版本。 Windows Phone,4 个版本。 Windows 应用商店,2 个版本。和Xbox。它们很重要,因为您可以构建在这些目标上运行的程序。

然后是可移植类库,它们允许您选择要支持的目标集。选择的每个排列都有自己独特的引用程序集,因此您不会意外使用在某个目标上不可用的类型。

所以真正令人惊讶的是,你发现了这么 几个

请记住,您发现的绝大多数只是参考程序集。它们只包含元数据,没有代码,存在于 c:\Program Files (x86)\Reference Assemblies 目录中。只有在构建程序时才使用它们。在运行时使用“真实的”,它与您构建的非常不同。确保它们匹配并且您不会遇到问题是 Microsoft 的负担,它们非常擅长。

除此之外,您列出的没有什么特别之处。它要求 v2.0 版本,即 .NET Framework 2.0 到 3.5 版本中使用的版本。即使您的桌面上没有安装这些版本之一,如果您有 4.0、4.5 或 4.6,您仍然可以运行它。桌面 CLR 自动将 2.0.0.0 的请求翻译成 4.0.0.0 版本,非常兼容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多