【问题标题】:Building w/ NET 6 and Nuget使用 NET 6 和 Nuget 构建
【发布时间】:2023-01-13 21:40:20
【问题描述】:

我们有一个仅限 Windows 的 WPF 桌面应用程序,我们刚刚从 .NET Framework 4.8 迁移到 .NET 6.0。我们已经编译了所有内容,但是构建系统让我们很头疼。

我们的大部分代码都存储在一个连接到互联网的 git 仓库中。当我们构建时,所有 Nuget 包都按预期恢复。但是,packages 文件夹现在包含 200 多个包,而对于 .NET Framework 4.8,它仅包含我们通过 Visual Studio 中的 Nuget 包管理器明确添加的那些包(大约 20 个)。

Q1:我的理解是,这就是现在的工作方式,因为一切,包括任何 Microsoft、系统和运行时 dll,现在都是 Nuget 包本身。我的理解正确吗?

现在,这不是问题除了我们有自己的另一个开发环境离线git repo,包含在线 git repo 中的所有代码不能包含在在线仓库中的附加代码。为此,我们必须定期将“在线代码”复制到离线机器,合并两个代码库,然后将更改提交到离线仓库。我希望这很清楚。

由于 OFFLINE git repo 无法连接到互联网,我们也被迫复制 Nuget 包。同样,这在 .NET Framework 4.8 下不是问题,因为它是一小组包。现在 Nuget 包已经增长到 200 多个,大小接近 1.5GB,这使一切都变慢了——压缩、复制、刻录、解压缩、合并等。

我们想要做的是让 packages 文件夹只包含那些 Nuget 包必需的从互联网上下载,然后从本地系统中提取其他 dll - Microsoft、系统、运行时等。

Q2:我假设在安装.NET 6.0 SDK 时,这些包在本地系统上都是可用的。这个假设正确吗?

我们尝试在 nuget.config 文件和各种 MSBuild 设置中搞乱,但无济于事。

谁能指出我们正确的方向?

【问题讨论】:

    标签: .net msbuild nuget .net-6.0 visual-studio-2022


    【解决方案1】:

    长话短说

    仅将最少量的 nupkg 文件复制到离线计算机,然后在那里建立本地 nuget 提要。

    建立实际的依赖包

    在您的 .NET 6 场景中,nuget 包缓存(packages 文件夹)全局用于本地计算机用户的所有恢复。 这意味着该用户恢复的所有项目都会将其包的传递闭包添加到包缓存中。 此外,每个包参考版本更改都会为新版本添加另一个包。

    首先,确保您的规模估算确实只包含该项目所需的包。 为此,请清除 nuget 包缓存,然后完全构建相关项目。 您可以通过简单地删除整个 %userprofile%.nugetpackages 文件夹或执行 nuget locals packages-cache -clear 来清除 nuget 包缓存。 如果您的文件夹不是默认文件夹,另请参阅https://learn.microsoft.com/en-us/nuget/consume-packages/managing-the-global-packages-and-cache-folders。 然后再次查看 packages 文件夹,看看它是否真的有那么大。

    仅复制 nupkg 文件

    接下来是 packages 文件夹包含原始 nupkg 文件及其解压缩的内容。它在某种意义上比必要的要大得多(在我的机器上是 nupkg 文件的五倍)。您可以将所有nupkg 文件复制到您的离线计算机,比如文件夹C: ugettemp。这将大大减少需要传输的数据量。

    设置本地 nuget 提要

    然后,按照https://learn.microsoft.com/en-us/nuget/hosting-packages/local-feeds中的步骤在离线机器上设置本地nuget feed:执行nuget init C: ugettemp C: ugetfeed。 然后在那台机器上编辑你的nuget.config,只使用C: ugetfeed作为包源。 然后,您将能够在离线计算机上不访问互联网的情况下进行常规的nuget restore

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      • 2022-10-31
      • 1970-01-01
      • 2016-05-14
      相关资源
      最近更新 更多