【问题标题】:How to compile x64 asp.net website?如何编译 x64 asp.net 网站?
【发布时间】:2010-04-07 23:57:05
【问题描述】:

我正在尝试使用 Chilkat 库 编译(使用 Visual Studio)一个 ASP.Net 网站。由于此错误,编译失败:

无法加载文件或程序集 'ChilkatDotNet2, Version=9.0.8.0, 文化=中性, PublicKeyToken=eb5fc1fc52ef09bd' 或 它的依赖项之一。一次尝试 被用来加载一个程序 格式不正确。

我被告知此错误是由于平台不合规而发生的。

奇怪的是,虽然编译失败,但网站一旦从浏览器访问就可以工作。我的理论是 IIS 编译使用来自 Framework64(64 位)文件夹的 csc.exe 编译器,而 Visual Studio 使用来自 Framework(32 位)的 csc.exe 编译器文件夹。如果确实如此,如何配置我的 Visual Studio 以使用 64 位编译器运行 ASP.Net 站点?

这是我目前的开发配置:

  • Windows 7 (x64)。
  • Visual Studio 2008 Pro(当然是 x86...)。
  • Chilkat 库 (x64)
  • IIS/Asp.net (x64)。

【问题讨论】:

    标签: asp.net visual-studio iis 64-bit chilkat


    【解决方案1】:

    原因
    您的网站(托管部分,可能全部为非第三方)不是以 32 位或 64 位模式编译的,至少不是您想的那样。不同之处在于,Visual Studio 用于其网络服务器的WebDevServer.exeCassini 的一个版本)完全是 32 位的。因此,它只加载 32 位兼容的 DLL。

    64 位机器上的 IIS 可以在 32 或 64 位模式下运行(默认为 64 位),具体取决于配置设置,因此加载应用程序没有问题。

    解决方案: 不幸的是,这里没有很多选择,I asked the same question a while ago。最好的办法是使用 IIS 进行调试。您可以这样设置:

    • Web 项目 > 设置
    • “Web”选项卡
    • 在服务器下,选择使用本地 IIS Web 服务器

    【讨论】:

    • 实际上,对于 64 位的此类项目(OP 似乎表明),我看到 编译 失败。 (在 Visual Studio 中......但该网站在 IIS 或 64 位构建的 cassinidev 中运行良好)没有什么比等到您的网页加载后发现 lint x = 1; 应该是 int x = 1; 更令人沮丧的了
    【解决方案2】:

    解决方案是将两个 DLL(x64 和 x86 DLL)都放在 GAC 中,让每个应用程序动态决定何时使用 x64 或 x86 DLL(当然,您必须在您的项目)。

    我已与 ChilkatDotNet2 的开发人员亲自讨论过,这是我们都同意的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      相关资源
      最近更新 更多