我如何找到哪个mscorlib.dll程序正在使用

本文关键字:程序 dll mscorlib 何找 | 更新日期: 2023-09-27 17:50:28

我在电脑上安装了一个第三方程序。我在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个文件。这些概要文件之间的区别是什么?

这是什么。net解决方案的。dll地狱问题看起来像?完整的许多版本的相同文件+公钥安全地识别。dll.

谁删除不再使用的。dll ?似乎每个程序都有自己的。net版本。最后一定要填满磁盘吗?

我如何找到哪个mscorlib.dll程序正在使用

你刚刚发现了一个简单的事实,. net已经非常流行了,13年过去了,它有很多版本。大多数程序员都知道桌面版的1.0、1.1、2.0和4.0。它总是由NGEN预编译,所以乘以2。大多数人不知道mscorlib.dll包含非托管代码,所以它有两个不同的版本,一个是32位代码,一个是64位代码,再乘以2。

那只是桌面的。然后是针对不同运行时环境的版本。Silverlight有5个不同的版本。Windows Phone, 4个版本。Windows Store, 2个版本。和XBox。它们很重要,因为你可以构建运行在这些目标上的程序。

还有可移植类库,它们允许你选择你想要支持的目标集。每种选择的排列都有自己独特的引用程序集,因此您不会意外地使用在其中一个目标上不可用的类型。

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

一定要记住,你找到的绝大多数都只是引用程序集。它们只包含元数据,没有代码,存在于c:'Program Files (x86)'Reference Assemblies目录中。您只在构建程序时使用它们。在运行时使用"真正的",它与您构建时使用的非常不同。这是微软的责任,以确保他们匹配,你不会有问题,他们是非常擅长的。

除此之外,您所列出的那个没有什么特别之处。它要求v2.0版本,即。net框架2.0到3.5版本中使用的版本。即使你的桌面上没有安装这些版本中的任何一个,如果你有4.0、4.5或4.6,你仍然可以运行它。桌面CLR会自动将2.0.0.0版本的请求转换为4.0.0.0版本,这是非常兼容的。