gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:00:05 24 4
gpt4 key购买 nike

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

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

使用 x64 DLL When x64 DLLs are in reference, the reference is NOT listed

使用 x86 DLL When x86 DLLs are in reference, the reference IS listed

因此,在代码文件中我们得到“添加引用”的建议。此类“项目”在很大程度上受 web.config 监管。 .但是我找不到任何有用的开关。我还在工具中打开了“使用 64 位 IIS”,但没有帮助。

我们知道什么

  • 这是一个设计时问题
  • 如果我使用 Aspnet_compiler针对这个具有 x64 依赖项的 WSP,它编译得很好
  • 在 Dev box 上,我可以使用 x86 依赖项并以这种方式工作(并且已经使用了 18 年)。但是在 build box 上我们需要 x64 DLL。++ 这个需要解释一下。我们过去只为发布预编译(aspnet_compiler)。但是现在,我们还想在预编译之前构建和验证。未经验证的预编译有几个缺点 - 它不验证 ashx处理程序,它不会拉取依赖项 - 我们必须知道要提供哪些 DLL,然后它才会编译。

在我看来,我需要以某种方式告诉 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 节点并选择Property Pages

  • Build 选项卡上,将 Before running startup 页面选项更改为 “No build”,然后取消选中 构建网站作为解决方案的一部分

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

关于asp.net - 在 ASP.NET 网站项目中使用 64 位引用 - 设计时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57225260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com