visual studio 2019 packages.config

visual studio 2019 packages.config

我正在使用 VS 2019 CE v 16.64 和 Net Framework 4.8.03761
我有两个项目 TestSql 和 Notebook TestSql 首先构建,唯一安装的包是 System Data SQLite Core
在对 VS 2019 进行了几次更新后,我构建了笔记本,我只安装了系统数据 SQLite 核心和 WeCantSpell.Hunspell

当我查看笔记本的文件夹 packages.config 时,我看到安装了以下软件包并需要更新
系统缓冲区
系统内存
系统数值向量
系统运行时 CompileServices 不安全
好吧,如果我没有安装它们,只需卸载它们那行不通吗?

另一个问题是 “如果它没坏就不要修复它” TestSql 项目在解决方案探索 I 的底部有 packages.config 文件夹从 packages.config 迁移到 PackageReference
当我看到短语 Benefits of using PackageReference 时,我应该知道这可能是个坏主意
Link to Benefits

所以问题是两个
如何让我的 packages.config 文件夹回到原来的位置? (见屏幕截图)
还是我的强迫症掩盖了我对包引用确实是更好的设计的现实感?
如何卸载我没有安装的软件包?是的,我尝试使用 Manage NuGet Packages

How do I get my packages.config folder back where it was?

如果你绝对不需要packages.config,那么不要回去。 PackageReference 格式提供了很多您不想在长 运行 中错过的好处,您的 link 不会说谎。它甚至可以解决您的下一个问题。

How do I Uninstall the packages I did not install?

您只需不要,因为它会破坏您的图书馆。 NuGet 包表示一个模块或一组功能,其中包含程序集、内容文件或构建脚本等工件。这样的模块可能具有工作所需的依赖项,例如 SQLite 库。包不是创建一个包含所有所需程序集和文件的巨大存档,而是指定对其他包的依赖关系。通过这种方式,您可以灵活地合并和更新包,尤其是在多个包存在共同依赖关系的情况下,这也可以防止在不同版本中拥有相同程序集或文件的多个副本,这可能会成为问题。

让我们看看您正在使用的包的依赖关系。

  • System.Data.SQLite.Core
    • 无依赖关系
  • WeCantSpell.Hunspell
    • System.Memory for .NET Framework >= 4.5

[...] the only package installed was System Data SQLite Core

此包没有任何依赖项,这就是为什么没有其他包的原因。

[...] I only installed System Data SQLite Core and WeCantSpell.Hunspell

如果您查看上面的列表,Hunspell 软件包需要 System.Memory,这也解释了安装它的原因。没有它,Hunspell 将无法工作,它 依赖于 。我听到你问,其他包裹从哪里来?每个包都可以有依赖关系。因此,一个包可以依赖于一个包,而另一个包又依赖于其他包……我想你明白了。那么让我们再看看 .NET Framework >= 4.6.1.

的依赖项
  • System.Memory
    • System.Buffers
    • System.Numerics.Vectors
    • System.Runtime.CompilerServices.Unsafe

我认为这些就是您正在寻找的所有依赖项。所有这些包都将添加到您的 packages.config,这是迁移到 PackageReference 的一个很好的理由,因为它可以更好地处理 transitive 包引用。假设您添加一个包 A,它依赖于包 B,并且它依赖于包 C。然后 AC 有依赖性。这称为传递依赖

较旧的 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>