错误:此程序集是由比当前加载的运行时更新的运行时构建的。

15

我从托管在Windows Server 2008上的Web应用程序中下载了已发布的文件(代码背后的文件不存在,与bin文件夹中的dll合并),并在使用Visual Studio打开它时,当我调试该应用程序时,显示以下错误:

"未能加载程序集,因为该程序集是由比当前加载的运行时更新的运行时构建的"

我不知道如何解决这个问题并在本地测试应用程序。 请帮帮我。

6个回答

19

当你使用的.Net框架版本比编译程序所用的旧版本还要老时,就会出现这个错误。你需要检查编译这些程序集所使用的框架版本,然后使用相同或更高版本进行调试。


我目前使用的是V2008,如果我安装了.NET Framework 4,那么我是否可以运行该应用程序,还是必须安装VS2010? - Arun Rana
@Arun - 如果你安装了dotNet 4,那就足够了,不需要安装vs2010。别担心。 - Sachin Shanbhag
这也可能发生在许多其他原因。 - Russell Horwood
1
在VS2017(或其他版本)中,展开项目的“引用”节点,并查看每个程序集在属性对话框中的“运行时版本”。其中一个程序集将是基于旧的.Net运行时目标构建的,而不是您项目的运行时目标。 - John Pittaway

6

当我运行 Windows 服务安装程序时,即使在创建安装程序的电脑上运行安装程序,我也遇到了相同的错误。

原来 Windows 服务项目已经升级到 .NET 4.5,但制作安装程序的安装程序项目仍设置为使用 .NET 2.0。

要检查安装程序项目是否使用比要安装的项目旧的 .NET 版本,请在 Visual Studio 解决方案资源管理器中进行以下操作:

  1. 展开安装程序项目

  2. 在安装程序项目下,展开检测到的依赖项

  3. 在检测到的依赖项下,选择Microsoft .NET Framework,并检查版本属性。从下拉列表中选择适当的 .NET 版本;

  4. 重新构建安装程序项目,以创建新版本的安装程序。


安装服务时我也遇到了这个问题。由于某些原因,检测到的 .Net Framework 依赖版本是错误的,当我更改它后问题就解决了。非常感谢! - dbostream
@Simon Tewsi是正确的,对于我的Visual Studio 2013和.net框架4的情况有效。我错误地选择了“任何”选项。谢谢兄弟! - Dung
谢谢。顺便提一下,你可能需要双击 Microsoft .NET Framework 才能打开属性。 - Augis

2

2
我在使用.NET 4的目标框架并且服务器上已安装了v4.0.30319时遇到了这个问题,其他4.0应用程序能够成功运行。问题是该应用最初是针对2.0构建的,然后推送了新的4.0程序集,但是没有推送app.config文件,通常我们会单独更新它。这意味着config中的supportedRuntime属性未更新,导致出现错误。将以下内容添加到app.config中即可解决此问题: <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>

我应该在 web.config 的哪个部分添加这个? - realtebo
1
在我的案例中,当我在服务器上运行多个应用程序(而不是 Web 应用程序)并且我正在将其中一个从 2.0 升级到 4.0 时,我忘记了随二进制文件更新 app.exe.config 文件。因此,我的问题不是 web.config,但 <startup> 标签是顶层 <configuration>元素的子元素,对于 web.config 也是如此,因此我只需要尝试在那个顶层,在 <configuration> 下面。 - Danny

0

同时检查一下此网站所运行的应用程序池。在某些较旧的Windows服务器上,可能默认为框架2.0。请将其更改为框架4.0。


0
项目中引用的某个程序集可能是使用较新版本的 .net 构建的,请检查每个程序集引用的版本并进行相应的更正。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接