无法加载文件或程序集“App_Code”或其依赖项之一。

Posted

技术标签:

【中文标题】无法加载文件或程序集“App_Code”或其依赖项之一。【英文标题】:Could not load file or assembly 'App_Code' or one of its dependencies. 【发布时间】:2018-09-12 06:58:47 【问题描述】:

问题:我想将修改后的代码部署到 Web 服务器。 Web 服务器的 IIS 版本设置为 V2.0。现在我已经在本地机器上开发并发布了 4.0 版本的代码。 (所有 dll 文件中都有 App_code.dll)。

现在,每当我将所有文件与 App_code.dll 一起部署时,我都会收到以下错误:" 此程序集由比当前加载的运行时更新的运行时构建,无法加载”

1) 我的问题是如何在旧版本中构建 App_code.dll。 2)我尝试在发布时将目标框架更改为 V2.0,但由于其他 dll 中的 AJAX 函数未编译,因此无法正常工作。

任何人都可以建议如何运行该网站..

感谢您的帮助。

谢谢

【问题讨论】:

我要问一个显而易见的问题,但是你能改变 IIS 应用程序以在 4.0 中运行吗? @AlwaysLearning:它在本地工作,但即使在 UAT 服务器上也安装了 .net 版本 4.6,我尝试更改为最新版本仍然给出一些错误。这个问题还有其他解决方案吗? 在 UAT 上运行的应用程序的 IIS 应用程序池是什么版本的 .net? 2.0 还是 4.0? @AlwaysLearning:它的 V2.0。在 UAT 中安装了 .net 框架 4.6,我尝试将 IIS 更改为 4.0,但得到 HTTP 服务 **** 类似的错误。问题仅在于在本地机器上以 V4.0 构建的 App_code.dll。我想在 v2.0 中构建它,但由于其他与 ajax 相关的错误而无法构建。 【参考方案1】:

很抱歉我给出的答案...但是试试这个...

尝试将<codeBase> 元素添加到应用程序配置文件中,以指定每个 dll 的确切位置以及所需的 .Net 版本。显然,这是因为<codebase> 在每次需要加载程序集时探测启发式开始时检查。

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="sharedlibA" culture="neutral" publicKeyToken="..." />
      <codeBase version="1.0.0.0" href="bin\sharedlibA.dll" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="sharedlibB" culture="neutral" publicKeyToken="..." />
      <codeBase version="1.0.0.0" href="bin\sharedlibB.dll" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

如果这不起作用,请尝试this。

【讨论】:

感谢回复,知道如何获取publicKeyToken吗?我会试试这个【参考方案2】:

迟到的答案,但是,我正在为未来的观众写这篇文章。 将应用程序发布到服务器后,我遇到了同样的错误。 我想这样做。

发布时设置中有配置。

在发布部分有一个名为

的选项

发布期间预编译

您必须选中复选框并保存然后发布。这将获取您的代码文件 .vb/.cs 并将它们转换为已编译的 DLL 文件。 在我的情况下,它没有被选中。

【讨论】:

以上是关于无法加载文件或程序集“App_Code”或其依赖项之一。的主要内容,如果未能解决你的问题,请参考以下文章

无法加载文件或程序集 此处的程序集名称 或其依赖项之一。访问被拒绝

无法加载文件或程序集“CefSharp.dll”或其依赖项之一

无法加载文件或程序集“***.dll”或其依赖项之一

BadImageFormatException 无法加载文件或程序集或其依赖项之一。试图加载格式不正确的程序

无法加载文件或程序集“Oracle.ManagedDataAccessDTC.DLL”或其依赖项之一

无法加载文件或程序集“msshrtmi”或其依赖项之一(Azure 表存储访问)