Visual Studio 2019 包.config

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 包
测试Sql 笔记本

tha*_*guy 7

如何将 packages.config 文件夹恢复到原来的位置?

如果你不是绝对需要 packages.config,那就不要回去。从长远来看,这种PackageReference格式提供了许多您不想错过的好处,您的链接不会说谎。它甚至可以解决您的下一个问题。

如何卸载我没有安装的软件包?

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

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

  • 系统.Data.SQLite.Core
    • 无依赖关系
  • 我们不能拼写.Hunspell
    • .NET Framework >= 4.5 的系统内存

[...]安装的唯一软件包是 System Data SQLite Core

该软件包没有任何依赖项,这就是没有其他软件包的原因。

[...]我只安装了 System Data SQLite Core 和 WeCantSpell.Hunspell

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

  • 系统内存
    • 系统缓冲区
    • 系统.数值.向量
    • System.Runtime.CompilerServices.Unsafe

我认为这些都是您正在寻找的依赖项。所有这些包都将添加到您的包中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)