【问题标题】:Compile ASP.NET to 64 BIT将 ASP.NET 编译为 64 位
【发布时间】:2014-10-01 09:13:22
【问题描述】:

我的开发机器是 Win XP Pro 32 位,生产机器是带有 IIS 7 的 Windows Server 2008(64 位)。在我的开发机器上,我想将 ASP.NET(使用 aspnet 编译器)编译为 64 位字节码。

谁能告诉我该怎么做?请不要建议任何在 64 位环境下运行 32 位应用程序的方法。

我希望在 32 位机器上编译 64 位应用程序,以便在运行时充分利用 64 位操作系统而无需任何仿真。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    将目标平台留在 AnyCpu 上,当在 64 位操作系统上执行时,.NET 将自动在 64 位上本地运行

    澄清:

    (最初是一条评论,但我认为这个问题也可能很有趣)

    实际上,您永远不会编译成特殊的架构。你总是编译成 IL。

    这类似于 Java 字节码。并且该字节码对于 32 位和 64 位是相同的。

    执行代码的机器上的虚拟机 (.NET Framework) 然后在运行时将 IL 编译为实际的机器代码(通过即时编译)。所以,无论你在哪里编译,你总是会遇到有点无知的 IL。

    .NET 中的设置只是 IL 中的一条指令,告诉 JIT(即时编译器)专门使用 32 位/64 位。通过翻转程序集中的那一位,您仍然可以在 AnyCpu 或 x64 中执行它而无需重新编译。

    此设置仅在您调用非位忽略的本机代码时使用和需要(在与 COM 组件交互或执行 p/invoke 调用时)

    【讨论】:

    • 我正在通过 aspnet_compiler 编译 ASP.NET(文件系统模式而不是 Web 应用程序项目)(仅安装 .NET 2.0 32 位,因此使用 32 位框架)。我的理解是,如果我将 \bin 下的所有 dll 复制到我的生产机器上,它将完全以 64 位模式运行而无需任何仿真。我只是想确认当应用程序在 32 位机器上编译并在 64 位上运行时不应该有任何性能问题。由于我没有 Web 应用程序项目,那么在这种情况下,aspnet_compiler 会编译为 AnyCPU 模式吗??提前致谢
    【解决方案2】:

    现在 Visual Studio 2013 中有一个选项可以指示 IIS Express(通常用于调试)在 64 位模式下运行。

    Tools -> Options -> Projects and Solutions -> Web Projects -> Use the 64 bit version of IIS Express…

    【讨论】:

    • 这个答案今天解决了我的问题。去投票,并意识到这是我两年前的答案,FTW!
    • 还有一个特定于项目的设置,因此您不必覆盖整个 IDE 默认值(并依赖于其他人设置它们)。 Project Properties -> Web -> Servers section -> Bitness: x64。您可以选择将其保存到项目文件中,以便每个人都有相同的设置。 (这是VS2017的,不知道其他版本有)
    【解决方案3】:

    .net 应用程序将针对目标机器环境重新定位自己,假设您没有特别选择在 32 位模式下编译。这可以在项目构建选项下找到。

    【讨论】:

    • 正确,只要确保您没有针对特定架构进行优化,您就应该做好准备。
    猜你喜欢
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 2016-02-28
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多