我已经将我的项目复制到一台干净的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为目标,还是有其他方法来引用正确的程序集?


当前回答

请遵循以下步骤:

Update Visual Studio to to latest version (it matters) Remove all binding redirects from web.config Add this to the .csproj file: <PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup> Build the project In the bin folder there should be a (WebAppName).dll.config file It should have redirects in it, copy these to the web.config Remove the above snipped from the .csproj file

它应该会起作用。

其他回答

4.6.1-2在VS2017中,用户可能会遇到他们的System.Net.Http版本被VS2017或Msbuild 15想要使用的版本替换。

我们在这里删除了这个版本:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Http.dll

在这里:

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Http.dll

然后用我们通过NuGet引用的版本构建项目。

更改我的网页中的绑定信息。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>

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

请遵循以下步骤:

Update Visual Studio to to latest version (it matters) Remove all binding redirects from web.config Add this to the .csproj file: <PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup> Build the project In the bin folder there should be a (WebAppName).dll.config file It should have redirects in it, copy these to the web.config Remove the above snipped from the .csproj file

它应该会起作用。

对我来说,我已经将我的项目设置为在最新版本的。net Framework上运行(从。net Framework 4.6.1到4.7.2的更改)。

一切都正常工作,没有错误,发布也没有问题,只是由于偶然的机会,我遇到了System.Net.Http错误消息,它显示在我正在工作的网站上的一个很小的,很难注意到的,但非常重要的API请求中。

我回滚到4.6.1,一切恢复正常。