.net - 如何将 .NET 应用程序优化为 64 位?

标签 .net visual-studio optimization 64-bit

Visual Studio > Build > Configuration Manager您可以选择目标平台。

它有什么变化?

在面向 x64 平台时,还有其他方法可以优化我的 .NET 应用程序吗?

最佳答案

如前所述,.NET 程序集中的 IL 是独立于平台的(这就是 Any CPU 设置所暗示的)。 .NET 运行时的 JIT(即时)编译器会将此平台独立字节代码编译为平台特定的 native 代码,并针对该平台进行优化。所以通常没有什么你应该担心的。

但是,如果您明确将项目设置为使用 x64 作为平台目标构建,则程序集将不再在 x86 运行时上运行(反之亦然,对于平台目标上的 x86)。仅当您的代码依赖于 native x64/x86 库(例如进程内 COM 组件)时,这才有用。

正如 Rowland 在评论中补充的那样,平台目标不能与底层操作系统的位数混淆。以 x86 作为平台目标的 .NET 程序集将在 32 位和 64 位版本的 Windows 上运行(即作为 WOW64 模式下的 32 位进程)。

事实上,使用平台目标设置的最常见场景可能是您的 .NET 程序集引用了 32 位 COM 组件。为了能够在 x64 系统上执行程序集,必须使用 x86 标志编译程序集。在 64 位操作系统上并启用 Any CPU 设置时,运行时将在 64 位进程中执行程序集并且将 32 位 COM 组件加载到 64 位进程中将失败。使用 x86 标志进行编译会导致 .NET 运行时在 32 位进程中执行程序集,因此可以安全地加载 COM 组件。

关于.net - 如何将 .NET 应用程序优化为 64 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2184010/

相关文章:

python - 在 RK4 算法中使用 lambda 函数

.net - 哪个是最好的 .Net XML-RPC 库?

c++ - 为原生 x64 编辑并继续

c# - 在 Visual Studio 中复制断点的简单方法

c++ - 如何以编程方式检查 VC++ 中的 Internet 带宽?

python - 了解 scipy.optimize.basinhopping 的输出

iphone - 优化 iPhone 性能

.net - StopWatch.ElapsedTicks 和 StopWatch.Elapsed.Ticks 总是一样的吗?

c# - DataContract 向后兼容序列化

.net - Windows CE 中的多语言应用程序支持?