Проблема с копированием библиотек из NuGet пакетов при сборке библиотеки классов

Я пишу утилиту, работающую на .NET 6.0 для одной CAD системы(более свежие версии .NET она не принимает). При создании проекта выбрал шаблон "библиотека классов Майкрософт". Хотел добавить в свое приложение работу с бд, чтобы в ней хранить размеры из ГОСТа.

В качестве субд выбрал SQLite. Через Nuget Package Manager установил .nuget пакет System.Data.SQLite.Core. Запустил в режиме отладки программу, и при попытке подключиться к бд всплыло следующее исключение: System.IO.FileNotFoundException: 'Could not load file or assembly 'System.Data.SQLite, Version=1.0.119.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139'. Не удается найти указанный файл.'.

Я пытался понять, что не так, и вот что выяснил: если к проекту, который не является библиотекой классов Майкрософт, подключить .nuget пакеты, а затем его скомпилировать, то в папку Debug добавятся библиотеки, входящие в состав пакета: введите сюда описание изображения

Если же проект является библиотекой классов Майкрософт, то библиотеки из пакета почему - то не добавляются в папку вывода: введите сюда описание изображения

Как можно сделать так, чтобы при сборке библиотеки из пакета добавлялись в Debug?


Ответы (1 шт):

Автор решения: aepot

Документация

The CopyLocalLockFileAssemblies property is useful for plugin projects that have dependencies on other libraries. If you set this property to true, any transitive NuGet package dependencies are copied to the output directory. That means you can use the output of dotnet build to run your plugin on any machine.

<PropertyGroup>
  <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

The default value of CopyLocalLockFileAssemblies can vary based on the output type. For example, for class libraries the default value is false, while for console applications the default is true. You can specify this property explicitly to override the default if needed.

Alternatively, you can use dotnet publish to publish the class library. For more information, see dotnet publish.

Вам нужно добавить в .csproj файл опцию

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

В качестве альтернативы, можно опубликовать библиотеку через меню Build -> Publish, чтобы получить готовую для использования в продакшне сборку. Файлы будут скопированы автоматически без дополнительных настроек.

→ Ссылка