System.IO.FileNotFoundException: не удалось загрузить файл или сборку Microsoft.Extensions.Caching.Abstractions
Я запускаю стандартный проект.Net, который использует пакет nuget. Microsoft.Extensions.Caching.Memory
, и он вызывается из веб-проекта ASP.Net.Net Framework. При запуске кода, ссылающегося на этот пакет nuget, я получаю следующую ошибку:
System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.Extensions.Caching.Abstractions, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' or one of its dependencies. The system cannot find the file specified.'
Я пробовал добавить Microsoft.Extensions.Caching.Abstractions
nuget в мой проект.Net Standard, но это не помогло. Я также пробовал добавить в свой проект.Net Framework следующее, но это тоже не помогло:
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
Есть ли у кого-нибудь способ решения этой проблемы? Нет других проектов, ссылающихся наMicrosoft.Extensions.Caching.Abstractions
поэтому я не знаю, почему он не может найти его с правильной версией.
2 ответа
Добавьте тот же пакет,
Microsoft.Extensions.Caching.Memory
, в ваш проект .NET Framework.
Это приводит к тому, что он строится с использованием таргетинга на .NET Framework, как и в предыдущем ответе, но не загрязняет ваш проект .NET Standard и не требует от него знать, какую версию .NET Framework он должен поддерживать.
Я смог решить этот ад.Net Standard, добавив другие привязки фреймворка. Версия.Net Framework, которую я называл проектом.Net Standard, была 4.6.2, которую я не мог обновить, переход на 4.7. * Также мог решить эту проблему, но я не пробовал ее, так как она была нежизнеспособна в моем кейс. Все остальные решения, представленные выше, не работали, и.dll для пакетов nuget по какой-то причине не могли быть загружены.
В моем проекте.Net Standard я изменил:
<TargetFramework>netstandard2.0</TargetFramework>
кому:
<TargetFrameworks>netstandard2.0;net462;net47</TargetFrameworks>
Это, конечно, скомпилирует ваш проект со всеми фреймворками, на которых вам нужно строить.