Я использую VS2019 Pro v16.3.5
У меня есть решение, содержащее проект функций Azure, который ссылается на несколько проектов библиотеки классов.
Проект верхнего уровня не может быть скомпилирован сследующая ошибка:
System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'Microsoft.Extensions.Logging.Abstractions, версия = 2.2.0.0, культура = нейтральная, PublicKeyToken = adb9793829ddae60'. Системе не удается найти указанный файл.
В проекте есть ссылка на пакет: PackageReference Include = "Microsoft.AspNetCore.App" , и эта структура включает отсутствующую dll, поэтомуЯ не знаю, почему у него проблемы.
Возможно, мои мысли о том, что один из упомянутых проектов зависит от другой версии, но я ее не вижу.
Я действительно пытался ссылаться явнопакет в проекте верхнего уровня, но это не имеет значения:
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0.0" />
Вот текущая копия файла csproj верхнего уровня:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Base.Core.SharedKernel" Version="1.0.0.23885" />
<PackageReference Include="FluentValidation" Version="8.4.0" />
<PackageReference Include="FluentValidation.AspNetCore" Version="8.4.0" />
<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="7.0.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="3.0.2" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="1.8.2" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="3.0.5" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.27" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Interfaces.Avaloq.Application\Interfaces.Avaloq.Application.csproj" />
<ProjectReference Include="..\Interfaces.Avaloq.Common\Interfaces.Avaloq.Common.csproj" />
<ProjectReference Include="..\Interfaces.Avaloq.Infrastructure\Interfaces.Avaloq.Infrastructure.csproj" />
<ProjectReference Include="..\Interfaces.Avaloq.Persistence\Interfaces.Avaloq.Persistence.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
Проблемы со ссылкамипакет Nuget Я вижу, что сборки для «рабочих» ссылок на пакеты (например, FluentValidation.dll) можно найти в папке глобальных пакетов в папке «C: \ Users \ bowman_rob_a.nuget \ packages». Однако в папке глобальных пакетов нет версии 2.0.0.0 Microsoft.Extensions.Logging.Abstractions, она содержит много версий, но пропускает с 2.1.0 до 3.0.0.
Если я запускаю изконсоль диспетчера пакетов: «install-package Microsoft.Extensions.Logging.Abstractions -Version 2.2.0», затем я получаю следующую ошибку:
Методы WriteObject и WriteError не могут вызываться извне переопределенийметоды BeginProcessing, ProcessRecord и EndProcessing, и их можно вызывать только из одного потока
Несмотря на ошибку, пакет появляется в разделе пакетов проекта в обозревателе решений. Однако он указан со странным путем "C: \ Program Files \ dotnet \ sdk \ NuGetFallbackFolder \ microsoft.extensions.logging.abstractions \ 2.2.0"
Проблемы со ссылкой на общий пакет Поскольку v2.2.0.0 включен в общую ссылку на пакет «Microsoft.AspNetCore.App», то я думаю, что сборка должна быть извлечена оттуда? Сборки для общих пакетов находятся в "C: \ Program Files \ dotnet \ shared". Существует множество версий общего пакета «Microsoft.AspNetCore.App», но опять 2.2.0.0 пропускается, с 2.1.13 до 2.2.4. Однако папка «C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App \ 2.2.4 \ Microsoft.Extensions.Logging.Abstractions.dll» содержит v2.2.0.0 библиотеки DLL.
Конфликт версий Я думаю, что основной причиной проблемы может быть то, что функции Azure зависят от цепочки пакетов nuget: Microsoft.Azure.WebJobs.Extensions -> Microsoft.Azure. WebJobs -> Microsoft.Extensions.Logging.Abstractions. Последней версией Microsoft.Azure.WebJobs.Extensions является 3.0.2, и это приводит к v2.1.0 Microsoft.Extentions.Logging.Abstractions - это более старая версия v2.2.0.0, включенная в Shared Framework Microsoft. AspNetCore.App. Кто-нибудь знает, как я могу изменить версию Shared Framework, которая используется компилятором? Я нигде не могу найти файл runtimeconfig.json!
Работа вокруг Мне удалось создать решение, удалив общую ссылку из всех проектов в решении и добавив каждый необходимыйПакет nuget индивидуально - с использованием более старых версий 2.1.0.