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 不同的版本,并且可能需要绑定重定向。
我已经下载了最新的 .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 不同的版本,并且可能需要绑定重定向。