Vec*_*tor 0 visual-studio-2010 nuget
我正在使用 VS 2019 CE v 16.64 和 Net Framework 4.8.03761
我有两个项目 TestSql 和 Notebook 首先构建了 TestSql,安装的唯一包是 System Data SQLite Core
在对 VS 2019 进行了一些更新之后,我构建了 Notebook 我只安装了 System Data SQLite Core 和 WeCantSpell.Hunspell
当我查看笔记本的 packages.config 文件夹时,我看到安装了以下软件包,并且想要更新
系统缓冲区
系统内存
系统数字向量
系统运行时编译服务不安全
那么如果我没有安装它们,只需卸载它们这不起作用?
另一个问题是“如果它没有损坏,请不要修复它”, TestSql 项目在解决方案探索的底部有packages.config 文件夹,
当我看到短语“使用的好处”时,我做了从packages.config 迁移到PackageReference PackageReference 我早该知道这可能是个坏主意
优点链接
所以问题是两个
如何将我的packages.config文件夹恢复到原来的位置?(参见屏幕截图)
或者我的强迫症是否使我对“包参考”确实是更好的设计的现实感感到困惑?
如何卸载我没有安装的软件包?是的,我尝试过管理 NuGet 包
如何将 packages.config 文件夹恢复到原来的位置?
如果你不是绝对需要 packages.config
,那就不要回去。从长远来看,这种PackageReference
格式提供了许多您不想错过的好处,您的链接不会说谎。它甚至可以解决您的下一个问题。
如何卸载我没有安装的软件包?
你根本不这样做,因为它会破坏你的图书馆。NuGet 包表示由程序集、内容文件或构建脚本等工件组成的模块或功能集。这样的模块可能具有工作所需的依赖项,例如 SQLite 库。包不是创建一个包含所需的所有程序集和文件的巨大存档,而是指定对其他包的依赖关系。这样,您可以灵活地整合和更新包,特别是在多个包存在共同依赖项的情况下,这也可以防止在不同版本中拥有相同程序集或文件的多个副本,这可能会出现问题。
让我们看看您正在使用的包的依赖关系。
[...]安装的唯一软件包是 System Data SQLite Core
该软件包没有任何依赖项,这就是没有其他软件包的原因。
[...]我只安装了 System Data SQLite Core 和 WeCantSpell.Hunspell
如果您查看上面的列表,您会发现 Hunspell 软件包需要System.Memory
,这也解释了安装它的原因。没有它,Hunspell 就无法工作,这取决于它。我听到你问,那么其他包裹从哪里来?每个包都可以有依赖项。因此,一个包可以依赖于另一个包,而另一个包又依赖于其他包……我想你明白了。因此,让我们再看看 .NET Framework >= 4.6.1 的依赖关系。
我认为这些都是您正在寻找的依赖项。所有这些包都将添加到您的包中packages.config
,这是迁移到 的一个很好的理由PackageReference
,因为它可以更好地处理传递包引用。假设您添加一个A
依赖于 package 的包B
,并且该包也依赖于 package C
。然后A
有对 的依赖C
。这称为传递依赖。
较旧的packages.config
将添加所有包,而PackageReferece
只会添加A
并且足够聪明包括其他包,而不显式添加它们。在您的示例中,项目文件将仅包含以下引用。
<PackageReference Include="System.Data.SQLite.Core">
<Version>1.0.113.1</Version>
</PackageReference>
<PackageReference Include="WeCantSpell.Hunspell">
<Version>3.0.1</Version>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)