При установке пакета SQLite NuGet пакет устанавливается, но ссылка на него недоступна. Сообщество VS2019 - PullRequest
0 голосов
/ 14 февраля 2020

Я пишу приложение c# с использованием SQLite, и мне нужна ссылка на SQLite. С помощью NuGet я нахожу пакет, и окно вывода показывает успешную установку.

Просмотр файла конфигурации пакетов в в обозревателе решений отображается установленная версия.

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="SQLite" version="3.13.0" targetFramework="net472" />
</packages>

Однако в проекте Ссылки в обозревателе решений SQLite не существует.

Я смотрел онлайн-учебники, в которых выполняется тот же процесс. другие машины, и все в порядке, все ссылки появляются после завершения установки NuGet.

Я использую VS2019, и насколько я понимаю, были некоторые изменения в работе NuGet, однако у меня были VS2015 и VS2017 Сообщество, и у меня были те же проблемы. Я действительно нахожусь в постоянном положении, так как я не знаю, как получить ссылку для отображения, чтобы я мог получить к ней доступ в своей программе.

SQLite не имеет ссылки на сборку, поэтому добавление это не вариант.

Я видел сообщения о конфигурационном файле NuGet и пакете Conf ig файл, а также возможность установки пакета вне папки решений, но я не знаю, где. Я посмотрел в выходное местоположение решения, и ни одна из ссылок не находится в папке отладки.

Я чувствую, что Dll устанавливаются за пределами папки решения, но я не знаю, где и как чтобы Visual Studio мог найти их в нужном месте или правильно ссылаться на существующее местоположение.

Перестройка и восстановление пакетов NuGet не дают решения.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 14 февраля 2020

При установке пакета SQLite NuGet пакет устанавливается, но ссылка недоступна. Сообщество VS2019

Я предполагаю, что вы установили sqlite версии 3.13.0 пакет nuget. Если так, то это поведение этого пакета nuget. Этот пакет является особенным в том смысле, что это транзакционный механизм базы данных SQL, который реализует автономную, без сервера, нулевую конфигурацию.

Проще говоря , это пакет функций конфигурации, который работает с соответствующими данными во время выполнения проекта, а не пакет, который предоставляет библиотеку ссылочных классов для проекта.

Позвольте мне объяснить это в подробнее :

Это содержимое пакета nuget sqlite version 3.13.0

enter image description here

Обратите внимание , что каждая папка предоставляет определенные c функциональные возможности для проекта установки. А функция папки lib заключается в добавлении ее содержимого (xxxx.dlls) в качестве ссылки на новый проект. Одним словом , только Dlls в папке lib может быть распознан nuget и добавлен в Reference .

Вы можете обратиться к эта ссылка для более подробной информации о функциях папок.

Second , в папке Build есть файл с именем SQLite.props. Файл сделает настройку для вашего проекта в процессе сборки.

В нем вы можете увидеть следующие файлы:

<Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\win7-x64\native\*">
      <Link>x64\%(Filename)%(Extension)</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <Visible>False</Visible>
    </Content>
  </ItemGroup>
  <ItemGroup Condition=" (Exists('packages.config') Or Exists('packages.$(MSBuildProjectName).config')) And '$(Platform)' == 'x86'">
    <Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\win7-x86\native\*">
      <Link>%(Filename)%(Extension)</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <Visible>False</Visible>
    </Content>
  </ItemGroup>
  <ItemGroup Condition=" (Exists('packages.config') Or Exists('packages.$(MSBuildProjectName).config')) And '$(Platform)' == 'x64'">
    <Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\win7-x64\native\*">
      <Link>%(Filename)%(Extension)</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <Visible>False</Visible>
    </Content>

Итак, при создании проекта будет выполнен файл SQLite.props, и они будут предоставлять услуги во время сборки или во время выполнения.

Все это указывает на то, что это пакет для определенных c функций выполнения, а не пакет nuget для добавления библиотек ссылок в проект.

Предложение

В качестве предложения вы можете установить System.Data.SQLite в своем проекте. И этот пакет nuget предоставляет dll, который вам нужен в Reference .

Надеюсь, он может вам помочь.

...