我必须将一个项目从 32 位升级到 64 位。我的项目目前在 .net 2.0 上(很快就会是 4.0,但对于这个问题来说并不重要)。我的项目引用了一些旧的 .net 1.1 程序集,我只有二进制形式。众所周知,仅在 .net 2.0 中添加了 64 位支持,我预计我的应用程序将因为那些旧程序集而无法运行。
但是,我的应用程序在 64 位模式下运行在 x64 服务器上(任务管理器中没有星号显示),同时引用 .net 1.1 dll。
我的问题是:
- 它为什么运行?我之前读到你不能使用 .net 1.1 64 位应用程序中的程序集。
- 保留1.1的程序集有什么缺点吗?还是我应该努力获取这些 1.1 程序集的更新版本?
编辑:我忘了提到要求是以 64 位 native 运行应用程序 (asp.net)。该应用程序以 64 位运行,因为我在我的应用程序池中禁用了 32 位兼容性。
EDIT2:我只是尝试编译并运行为 x64 编译的应用程序。有用。所以它在纯 64 位模式下运行,毫无疑问。
最佳答案
.NET 1.1 程序集包含与 .NET 2 或 .NET 4 程序集相同类型的 IL。只有元数据的格式发生了变化。抖动不介意将其转换为 64 位机器代码,并且 CLR 可以读取旧的元数据格式。只有当 .NET 1.1 程序集包含 native 代码时,您才会遇到问题。 Corflags.exe 实用程序,ILONLY 位。没有令人信服的理由重建该程序集。
关于c# - 从 64 位应用程序引用 .net 1.1 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6747266/