发布的ASP.NET核心网站上的错误:找不到包'Microsoft.AspNet.WebApi.Client'的编译库位置

Jos*_*shM 5 c# asp.net-core asp.net-core-2.1

从Visual Studio运行时,我的webb应用程序运行良好,但是当我发布并尝试加载页面时,我得到:

InvalidOperationException:找不到包'Microsoft.AspNet.WebApi.Client'的编译库位置Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths(ICompilationAssemblyResolver解析程序,列出程序集)

我已经坚持了很长时间。我试图在线程https://github.com/dotnet/core-setup/issues/2981中应用各种变通办法,但没有一个起作用。

我的csproj文件粘贴在下面。我不确定还有哪些其他信息有用:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <UserSecretsId>aspnet-CrowdQuery2-8C668DB3-5C80-4D9E-851D-2434D0CDA7E9</UserSecretsId>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>

  <PropertyGroup>
    <RuntimeFrameworkVersion>2.1.2</RuntimeFrameworkVersion>    
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.6" />
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.3" PrivateAssets="All" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="ViewModels\" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

Jes*_*sse 12

使用Microsoft Azure时遇到了相同的问题。

在这种情况下,解决方案是wwwroot使用Kudu(开发工具->高级选项)清理Web应用程序中的文件夹,因为在升级到.NET Core 2.1之前还有一些旧的DLL,因为.NET Core 1已发布DLL到wwwroot文件夹,而在2.1中,DLL是从全局存储中加载的。

完全清空wwwroot文件夹并重新部署应用程序后,该错误已解决,该应用程序按预期运行。

  • 只是有关如何在Kudu中使用PowerShell清空wwwroot文件夹的注释。首先,请确保您的应用已停止。然后,使用以下命令清空wwwroot:`Remove-Item D:\ home \ site \ wwwroot \ * -Recurse -Force`(或替换路径到您的wwwroot所在的位置)。 (5认同)
  • 我将其标记为答案,因为它与我最终想出的结果很接近(但忘了回圈并添加到对话中)。以我为例,它在托管服务提供商上,但涉及删除应用程序必须已拾取的旧DLL,而不是正确的DLL。 (2认同)