在 ASP.NET 网站项目中使用 64 位引用 - 设计时问题

Using 64-bit references in ASP.NET Web Site Project - design time issues

背景: 我们有老式的 ASP.NET WSP - 网站项目。这是一个不生成单个 DLL 并使用 dll.refresh 文件进行引用映射的文件。

问题: 使用 VS2017,我们可以毫无问题地使用它,但前提是我们引用的 DLL 不是 x64。见下图

使用 x64 DLL

使用 x86 DLL

因此,在代码文件中我们得到了 "add reference" 的建议。这种类型的 "project" 主要由 web.config 调节。但是我找不到任何有用的开关。我也在工具中打开了 "Use 64-bit IIS" 但没有帮助。

我们知道什么

在我看来,我需要以某种方式告诉 Visual Studio 使用 64 位工具,但我不知道如何。对于带有项目文件的项目,有 <AspNetToolPath> 标签。但是如何在这里复制呢?当我使用 MSBUILD 构建时,它给了我 ASPNETCOMPILER : error ASPCONFIG: Could not load file or assembly... incorrect format。所以,工具集有问题,VS 后台编译不工作。与 MSBuild 一样 - 它选择了错误的工具集,或者,它选择了应该使用的任何工具集,但我需要给出要使用的命令。

这是我从微软得到的官方答复

...不幸的是Visual Studio 对网站项目 的 64 位程序集没有很好的支持。通常,这是因为 Visual Studio 和用于 Asp.Net 智能感知的外部进程是 32 位应用程序,因此无法加载这些程序集。但是,由于这是一个网站,所以当页面被请求时,构建将在服务器上进行。因此,一般来说,为了改进 F5 内部循环,您可以关闭 VS 中的构建 - 它仅用于验证目的。为此:

  • 右键单击 Project 节点并选择 属性 Pages

  • Build 选项卡上将 Before 运行 startup 页面选项更改为 "No build",并取消选中 构建网站 作为解决方案的一部分

这样做意味着 您不会在 IDE 中看到构建错误,而是 当您浏览到受影响的文件时,它们会出现在浏览器中页intellisense 将不准确 因为 64 位程序集的类型将无法识别。