Evey现在然后我看到了.NET程序集的x86和x64版本.考虑以下适用于SharePoint的Web部件.为什么开发人员不会只提供单个版本并让JIT编译器对其余版本进行排序?当我看到这些类型的产品时,开发人员是否决定使用像ngen这样的工具创建本机映像以避免JIT?
有人请帮帮我,我觉得我错过了一些注意事项.
更新
从我下面提到的,提供x86和x64版本是因为以下一个或多个原因:
开发人员希望避免JITing并创建他的代码的本机映像,使用像ngen.exe这样的工具来定位给定的体系结构.
程序集包含特定于平台的COM调用,因此无需将其构建为AnyCPU.在这些情况下,针对不同平台的构建可能包含不同的代码.
程序集可能包含使用pinvoke的Win32调用,它不会被JIT重新映射,因此构建应该以它所绑定的平台为目标.
Tom Anderson.. 6
如果他们使用特定的非.Net API,那么可能有两个代码库,一个完美的例子是COM控件.
正如你所提到的,ngen也是另一个很好的理由.
如果他们使用特定的非.Net API,那么可能有两个代码库,一个完美的例子是COM控件.
正如你所提到的,ngen也是另一个很好的理由.
编译.net应用程序时,必须在Build Settings中选择Platform Target.选择是AnyCPU,x86和x64.
常见的错误是在项目中指定AnyCPU,其中包括为x86编译的本机DLL.这将导致在64位计算机上运行时出错,这是在64位计算机上进行测试的一个很好的理由.
因此,为了支持被其他依赖项强迫的人直接为x86或x64构建,程序集提供了这两者.