.NET 3.5 未能加载文件或程序集“Microsoft.Web.Infrastructure”(解决后追加50-200悬赏)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET 3.5 未能加载文件或程序集“Microsoft.Web.Infrastructure”(解决后追加50-200悬赏)相关的知识,希望对你有一定的参考价值。
我使用的 .NET 主机是网上购买的虚拟空间,估计这个空间也不是很多组件都齐全,应该有不少漏洞或者奇葩的东西。在自己电脑上用 VS2013 写好的一个基于 .NET 3.5 Framework 的网站,在电脑上用 IIS 8 Express 测试时没有任何问题的,可是放到那个空间上面就出现了:
未能加载文件或程序集“Microsoft.Web.Infrastructure”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。
以上是出错提示的截图。
下面写着对方服务器的程序版本是:Microsoft .NET Framework 版本:2.0.50727.3053; ASP.NET 版本:2.0.50727.3053
我在网上也找过关于“Microsoft.Web.Infrastructure”的内容,他们都说这个是 .NET 4.0 以上的特性,可是我这个主机用的版本是 .NET 3.5 的,而且我在自己写的网站里面也没出现过这个程序集的地方,为什么会出现对这个程序集的引用呢?或者有什么办法能够修复这个错误呢?(IIS我是肯定不能配置的,我只能够通过FTP来控制里面的文件而已)
PS:悬赏只放了50,怕没人能够答得上,如果问题解决了,就说要多些悬赏也是可以的,50-200 都是没问题的,或者想要更多就再讨论吧,能解决这个问题就好。
我的网站用的是 .NET 3.5 框架呀,换成 4.0 就用不了了。
参考技术B 看看这个http://stackoverflow.com/questions/12669206/error-microsoft-web-infrastructure-version-1-0-0-0-culture-neutral-publickeyt追问
您提供的这个里面,他的情况应该是缺少了Infrastructure这个程序集的类库,可是我这里用的不是 .NET 4.0,应该不会引用到这个程序集吧。
我之前是成功的,可是后来我用到了一个 System.Web.Routing 的程序集,会不会和这个由关联?这个程序集的 dll 我已经放在 bin 里面了,是不是这个程序集内部要引用 Infrastructure 呢?
再试试这个,添加这些文件引用
http://www.cnblogs.com/taven/archive/2011/8/14.html
提示好像不是说找不到对应的 dll,而是说 dll 比现在用的框架新。应该是版本不对,可是我根本都没引用过那个 Infrastructure 的程序集。
.net 无法加载文件或程序集 MySql.Data。强名称验证失败 (0x8013141A)
【中文标题】.net 无法加载文件或程序集 MySql.Data。强名称验证失败 (0x8013141A)【英文标题】:.net Could not load file or assembly MySql.Data. Strong name validation failed (0x8013141A) 【发布时间】:2018-01-27 17:54:24 【问题描述】:错误:
An unhandled exception of type 'System.IO.FileLoadException' occurred in WindowsFormsApplication4.exe
Additional information: Could not load file or assembly 'MySql.Data, Version=8.0.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A)
信息:
Visual Studio 2015 Windows 10 - x64 C# MySQL 6.9.9问题:
我使用 MySQL 制作了一个类库来对我的在线数据库运行各种查询。
在我的单独项目中包含 dll 后,我使用的唯一代码行如下:(它会引发异常)
// Runs a simple select statement to find matches for 'John Doe' in my online MySQL database table... and stores results to a dataset
DataSet ds = MyDllNameSpace.Database.People.Load("John", "Doe");
App.Config 文件:
我的 dll 项目:(我没有签署这个项目)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data></configuration>
我的单独项目:(我没有签署这个项目)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.8.0" newVersion="8.0.8.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
我搜索过/尝试过的内容:
确保在两个项目中使用相同版本的 MySQL 将 dll 放入我的库和 MySQL 中的我的单独项目的 bin 文件夹中,并将它们添加为参考 还尝试将我的库和 MySQL 的 dll 添加到单独的项目中并选择“始终复制” 更改 App.config 文件(假设问题出在此处?) 最后,我尝试对 dll 项目和使用相同密码的 dll 的项目进行签名(检查对程序集进行签名)。这也无济于事。 :(谢谢
【问题讨论】:
经过数小时试图找出问题...原来是由于在包管理器中使用了最新的预发行版 MySql.Data。切换到最新的 STABLE 版本后,一切正常。 【参考方案1】:您是否尝试过签署项目?这可能会消除您的错误。
也许这个关于你的错误的链接会有所帮助:https://blogs.msdn.microsoft.com/keithmg/2012/03/20/strong-name-validation-failed-exception-from-hresult-0x8013141a/
或者这个***问题: Strong Name Validation Failed
【讨论】:
是的,我忘了提。我尝试签署 dll 项目,以及使用 dll 的项目(都使用相同的密码)。这是我第一次签署一个项目,所以希望我没有做任何愚蠢的事情来导致这个。我会检查这些链接,但我想我已经看过了。感谢您的回复以上是关于.NET 3.5 未能加载文件或程序集“Microsoft.Web.Infrastructure”(解决后追加50-200悬赏)的主要内容,如果未能解决你的问题,请参考以下文章