FileNotFoundException: 无法加载文件或程序集 'System.Net.Http.WebRequest'

FileNotFoundException: Could not load file or assembly 'System.Net.Http.WebRequest'

我已经下载了最新的 .NET Framework,并且正在 VS 2017 15.8.7 上开发 .NET Core 2.0 应用程序。 这是我安装的包。

using (var client = new PowerBIClient(new Uri(ApiUrl), tokenCredentials))
      {

      }

我在这一行收到错误消息:

FileNotFoundException: Could not load file or assembly 'System.Net.Http.WebRequest, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.

这是我的 .csproj

 <PackageReference Include="Microsoft.AspNetCore.App" />
 <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
 <PackageReference Include="Microsoft.PowerBI.Api" Version="2.0.14" />
 <PackageReference Include="Microsoft.PowerBI.Core" Version="1.1.11" />
 <PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.6" />
 <PackageReference Include="System.Net.Http" Version="4.3.4" />

为什么我会收到此错误。我可以添加参考以使其正常工作吗?

[更新] 我在我的 csproj 中添加了以下行,并且不再收到此错误。

<ItemGroup>
    <Reference Include="System.Net.Http">
      <HintPath>..\..\..\..\..\..\Windows\Microsoft.NET\Framework\v4.0.30319\System.Net.Http.dll</HintPath>
    </Reference>
    <Reference Include="System.Net.Http.WebRequest">
      <HintPath>..\..\..\..\..\..\Windows\Microsoft.NET\Framework\v4.0.30319\System.Net.Http.WebRequest.dll</HintPath>
    </Reference>
  </ItemGroup>

这是你的问题。您的目标是 .NET Core。您使用的代码在幕后使用 WebRequest,这在 .NET Core 中不存在。您需要以完整框架为目标:

<TargetFramework>net461</TargetFramework>

或者您想要定位的任何版本。这当然意味着您只能在 Windows 服务器上 运行 这个应用程序。

我知道有两种情况会出现此错误:

  • 解决方案的 "client project" 中未安装 nuget 包(仅向解决方案的 common/factorized 项目添加依赖项是不够的;有时您需要将依赖项添加到使用它的项目本身)
  • 您定义的框架版本与您解决方案的所有项目不兼容,或者与已安装的 nuget 包不兼容;您可以考虑对所有 nuget 包进行大升级,并检查每个项目上定义的框架版本

有时,在 NuGet (System.Net.Http) 上安装可能丢失的包的最高版本会有所帮助。 ASP.NET 可能会使用与 PowerBI 不同的版本,并且可能需要绑定重定向。