【问题标题】:Error on published ASP.NET core site: Cannot find compilation library location for package 'Microsoft.AspNet.WebApi.Client'已发布的 ASP.NET 核心站点上的错误:找不到包“Microsoft.AspNet.WebApi.Client”的编译库位置
【发布时间】:2018-08-26 04:51:31
【问题描述】:

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

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>

【问题讨论】:

标签: c# asp.net-core asp.net-core-2.1


【解决方案1】:

我在使用 Microsoft Azure 时遇到了同样的问题。

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

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

【讨论】:

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

我不得不

(1)

编辑 .csproj 并添加

<PropertyGroup>
  <MvcRazorExcludeRefAssembliesFromPublish>False</MvcRazorExcludeRefAssembliesFromPublish>
</PropertyGroup>

(2)

将发布“目标运行时”更改为“win-x64”(以前是 x86)。我不知道为什么需要这样做,因为我的项目属性 -> 平台目标是“任何 CPU”。

(我在同一个解决方案中还有另外两个类似的网站,这些 .csproj 文件都不需要该行,并且都仍在发布到 x86)。

【讨论】:

    猜你喜欢
    • 2019-05-08
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 2018-12-07
    • 2017-05-04
    • 1970-01-01
    相关资源
    最近更新 更多