我已经将我的项目复制到一台干净的Windows 10机器上,只安装了Visual Studio 2015 Community和SQL Server 2016 Express。除了Windows 10和VS2015或SQL Server安装的框架版本外,没有安装其他框架版本。

当我尝试启动WebApi项目时,我得到了这样的消息:

无法加载文件或程序集"System.Net。Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。系统无法找到指定的文件。

项目包包括:

<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" />

在使用。net Framework 4.6.1构建项目后,在bin文件夹中找不到System.Net.Http文件。

文件的路径指向:

C:\Program Files (x86)\Reference程序集\Microsoft\ framework.net框架\v4.6.1\System.Net.Http.dll

System.Net.Http.Formatting的文件路径指向:

C: \开发\ MyApp \ \ Microsoft.AspNet.WebApi.Client.5.2.3 \ lib \ net45 \ System.Net.Http.Formatting.dll包

整个项目应该以4.5.1为目标,还是有其他方法来引用正确的程序集?


当前回答

开放网络。配置并删除<runtime>,包括其中的所有内容 < * *运行时> < assemblyBinding xmlns = " urn: schemas-microsoft-com: asm。v1 " > < /运行时> 保存并关闭Web.config 打开Package Manager Console,执行该命令 Add-BindingRedirect

当我的团队成员从。net Framework 4.6.1升级到。net Framework 4.8,从VS 2017升级到VS 2022时,这解决了我的问题

其他回答

对我来说,我又加了一块鸡块,问题就解决了

在做一些技巧和复杂的配置之前,尝试删除bin和obj文件夹,然后进行编译。解决了同样的问题

我在把项目从。net Framework 4.6升级到。net Framework 4.8后遇到了这个问题。在配置文件中,我仍然有旧版本的行

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>

并且服务器没有安装。net Framework 4.8。

在纠正上面的代码行之后,在服务器上安装。net Framework 4.8并重新启动它,现在它可以工作了。

更改我的网页中的绑定信息。config(或app.config) -虽然在我看来是一个“黑客”,允许你在NuGet包更新后继续你的项目,并给你System.Net.Http错误。

设置oldVersion="0.0.0.0-4.1.1.0"和newVersion="4.0.0.0"如下所示

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.0.0.0" />
</dependentAssembly>

检查.net框架版本。 我最初的。net框架是旧版本。 当我安装了。net framework 4.6之后,这个问题就自动解决了。