gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:27:19 25 4
gpt4 key购买 nike

我在我的电脑上安装了第 3 方程序。我在 ildasm.exe 中打开了这个程序附带的 .dll 之一并检查了 list :

.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 hell 问题的 .net 解决方案吗?同一文件的大量版本 + 用于安全识别 .dll 的公钥。

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

最佳答案

您刚刚发现了一个简单的事实,.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 版本,非常兼容。

关于c# - 我如何找到程序正在使用哪个 mscorlib.dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30398391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com