Ошибка на опубликованном основном сайте ASP.NET: не удается найти расположение библиотеки компиляции для пакета Microsoft.AspNet.WebApi.Client

Мое приложение 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>

person JoshM    schedule 26.08.2018    source источник
comment
знаю, что он старый, но для меня этот комментарий к проблеме стал действительно полезным github.com/ dotnet / roslyn / issues / 37760 # issuecomment-518783156   -  person WhiteKnight    schedule 08.08.2019


Ответы (2)


У меня была такая же проблема с Microsoft Azure.

Решением в этом случае было очистить папку wwwroot в нашем веб-приложении с помощью Kudu (Инструменты разработки -> Дополнительные параметры), потому что некоторые старые библиотеки DLL все еще оставались до обновления до .NET Core. 2.1, поскольку .NET Core 1 публикует библиотеки DLL в папке wwwroot, тогда как в версии 2.1 библиотеки DLL загружаются из глобального хранилища.

После полной очистки папки wwwroot и повторного развертывания приложения ошибка была устранена, и приложение работало должным образом.

person Jesse    schedule 29.10.2018
comment
Я отмечу это как ответ, так как он близок к тому, что я наконец понял (но забыл вернуться и добавить к разговору). В моем случае это было у хостинг-провайдера, но это связано с удалением старых DLL, которые приложение должно было подбирать, вместо правильных. - person JoshM; 29.10.2018
comment
Просто примечание о том, как очистить папку wwwroot с помощью PowerShell в Kudu. Во-первых, убедитесь, что ваше приложение остановлено. Затем используйте эту команду, чтобы очистить wwwroot: Remove-Item D:\home\site\wwwroot\* -Recurse -Force (или заменить путь к месту, где находится ваш wwwroot). - person gosr; 20.07.2019

Мне пришлось

(1)

Отредактируйте .csproj и добавьте

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

(2)

Измените целевую среду выполнения публикации на win-x64 (ранее она была x86). Я не знаю, зачем это нужно, потому что свойства моего проекта - ›Цель платформы - Любой ЦП.

(У меня есть два других аналогичных веб-сайта в том же решении, ни один из этих файлов .csproj не требует этой строки, и оба все еще публикуются на x86).

person BurnsBA    schedule 05.07.2020