我必须将项目从32位升级到64位。我的项目目前在.net 2.0上(将很快4.0,但对于这个问题并不重要)。我的项目引用了一些旧的.net 1.1程序集,我只有二进制形式。众所周知,仅在.net 2.0中添加了64位支持,我预计我的应用程序将无法运行,因为那些旧的程序集。
但是,我的应用程序在64位模式下运行x64服务器(在任务管理器中没有显示星号),同时引用.net 1.1 dll。
我的问题是:
EDIT2:我刚刚尝试编译并运行为x64编译的应用程序。有用。因此它以纯64位模式运行,对此没有任何疑问。
答案 0 :(得分:6)
.NET 1.1程序集包含与.NET 2或.NET 4程序集相同的IL。只有元数据的格式发生了变化。抖动不介意将其转换为64位机器代码,CLR可以读取旧的元数据格式。仅当.NET 1.1程序集包含本机代码时才会出现问题。 Corflags.exe实用程序,ILONLY位。重建那个集会没有令人信服的理由。
答案 1 :(得分:0)
您的应用程序是否在wow32(32位仿真模式)下运行?大多数应用程序并不真正在x64模式下运行,它们强制应用程序在wow32(x86模式)下运行,以保持它们在旧版x86系统上的向后兼容性。否则,应用程序将仅在x64系统上运行,但不在x86上运行。
强制应用程序在x86模式下运行(即使在x64系统上)也可以运行任何机器,无论它是32位还是64位Windows操作系统。