我正在使用SQLite编写c#应用程序,并且需要SQLite参考。使用NuGet,我找到了程序包,输出窗口显示安装成功。
在解决方案资源管理器中查看软件包配置文件,它会显示已安装的版本。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="SQLite" version="3.13.0" targetFramework="net472" />
</packages>
但是在项目下,Solution Explorer SQLite中的“引用”不存在。
我在线观看了教程,其中在其他计算机上完成了相同的过程,并且一切正常,在NuGet完成安装后,所有参考都弹出。
我正在使用VS2019,据我了解,NuGet的运行方式有些变化,但是我拥有VS2015和VS2017社区,并且遇到了相同的问题。我真的处于站立状态,因为我不知道如何显示参考,因此可以在程序中访问它。
SQLite没有程序集引用,因此添加它没有任何选择。
我看过有关NuGet配置文件和程序包配置文件的帖子,以及将程序包安装在解决方案文件夹之外的可能性,但我不知道在哪里。我已经查看了解决方案的输出位置,并且没有任何引用位于调试文件夹中的任何位置。
我觉得Dll正在安装在解决方案文件夹之外,但是我不知道在何处以及如何使Visual Studio将其放置到正确的位置或正确地引用那里的现有位置。
重建和还原NuGet程序包不提供解决方案。
任何帮助将不胜感激。
答案 0 :(得分:0)
安装SQLite NuGet软件包将安装该软件包,但参考 不可用。 VS2019社区
我假设您已经安装了sqlite version 3.13.0 nuget软件包。如果已安装,这就是该nuget软件包的行为。该软件包非常特别,因为它是一个实现自包含,无服务器,零配置的事务型SQL数据库引擎。
简单来说,它是一个配置功能包,可在项目运行时对相关数据进行操作,而不是为项目提供参考类库的包。
让我详细说明 :
这是nuget软件包cc770: CAN netdevice driver
cc770_isa cc770_isa.0 (unnamed net_device) (uninitialized) probing @0x00000220 failed (pattern)
cc770_isa cc770_isa.0: couldn't register device (err=-19)
cc770_isa: driver for max. 8 devices registered
注意,每个文件夹为安装项目提供特定的功能。
lib 文件夹的功能是添加其内容(sqlite version 3.13.0
)作为对新项目的引用。 总之,nuget只能识别 lib 文件夹中的Dll,并将其添加到参考中。
您可以参考this link了解有关文件夹功能的更多详细信息。
第二,在 Build 文件夹中有一个名为xxxx.dlls
的文件。该文件将在构建过程中do some configuration到您的项目。
在其中,您可以看到以下文件:
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>
文件,它们将在构建过程中或在运行时提供服务。
所有这些都表明它是用于特定执行功能的软件包,而不是用于将参考库添加到项目的nuget软件包。
建议
作为建议,您可以在项目中安装System.Data.SQLite。并且此nuget软件包在参考中提供了所需的dll。
希望它可以为您提供帮助。