Я получаю System.IO.FileNotFoundException в моем .Net Core Web API.Поэтому я настроил приведенный ниже проект для демонстрации проблемы.
Я создал стандартную библиотеку .Net с именем DemoLibrary и добавил зависимость QRCoder через NuGet.
Отказ от ответственности: причина выбора QRCoder заключается в том, что веб-API не использует его по умолчанию.Я не использую это в своем проекте.Фактически я получаю это исключение для EntityFrameworkCore.
Я создал новый .Net Core Web API DemoWebAPI , который не имеет других зависимостей.
Тогдадобавил DemoLibrary к DemoWebAPI через Добавить ссылку -> Обзор -> DemoLibrary.dll.
Это мое решение:
Метод DemoMethod в классе Calculate просто создает объект QRCodeGenerator.
public class Calculate
{
public static string DemoMethod()
{
QRCodeGenerator qrGenerator = new QRCodeGenerator();
return "";
}
}
А мой ValuesController в DemoWebAPI просто вызывает метод:
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2", DemoLibrary.Calculate.DemoMethod() };
}
Теперь, когда я запускаю проект DemoWebAPI, я получаюниже исключение при вызове DemoMethod:
System.IO.FileNotFoundException: «Не удалось загрузить файл или сборку» QRCoder, версия = 1.3.5.0, культура = нейтральная, PublicKeyToken = null '.Системе не удается найти указанный файл. '
Я понимаю, что мне нужно скопировать куда-нибудь файл QRCoder.dll .Но я не понимаю, куда это поставить.Я уже пытался поместить его в "bin / debug / netcoreapp2.2" из DemoWebAPI и "bin / debug / netstandard2.0" из DemoLibrary.
Но я не смог заставить его работать.
Запрос: Пожалуйста, опишите свой ответ как можно более наглядно, потому что я новичок в .Net Core.
Редактировать : Мне известны серверы NuGet.Я читал такие темы, как размещение сервера NuGet в IIS и Azure.Причиной ссылки на DLL является то, что я хочу использовать свои библиотеки DLL в двух проектах, один из которых - API ядра .net, а другой - библиотека классов .net framework, скомпилированная NMAKE.Я не смог найти способ восстановить пакеты NuGet в файлах .MAK.