【发布时间】: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/…
-
@Andy 不,它不是颠覆,而是一个子集(只是整个框架的一部分),以实现更小的应用程序。
-
@Andy 我对此不太确定,但我认为我硬盘上的这些配置文件是由 Visual Studio 创建的,我制作的每个应用程序都有一个配置文件。如果我从 Visual Studio 中删除了我的任何旧项目,然后使用文件资源管理器删除了关联的文件,那么稍后我需要手动删除关联的 .net 配置文件。