【问题标题】:Checking .nupkg files into Source Control - how to restore on build?将 .nupkg 文件签入源代码管理 - 如何在构建时恢复?
【发布时间】:2015-09-25 01:11:26
【问题描述】:

好的,我想将我的依赖项检查到源代码控制中。许多人会出于各种原因反对这一点,但这不是我在这个问题中要寻找的。​​p>

请接受我的要求是我希望我的依赖项在源代码管理中。

我正在使用 NuGet 包,所以我的解决方案的根目录中有一个 packages 文件夹。包中的每个文件夹都包含.nupkg 文件以及该包的提取内容(二进制文件、xml 等)。

由于.nupkg 文件是压缩包的内容,因此将其与解压缩的内容一起签入对我来说毫无意义。我只想签入.nupkg 文件并在构建过程中恢复它们。这就是问题所在。 NuGet 还原时只检查 .nupkg 文件是否存在,如果发现表明该包已安装,则不会解包。

我发现解压这些文件的唯一方法是运行nuget.exe install 并指定特定项目的packages.config 文件并使用选项-OutputDirectory {solutionDir}\packages

例如

nuget.exe install {solutionDir}\{projectDir}\packages.config -OutputDirectory {solutionDir}\packages

但这仅适用于项目级别,不适用于解决方案级别。所以我必须为解决方案中的每个项目创建一个脚本来执行此操作。

我很想依赖 nuget.exe restore MySolution.sln,但它会检测到 .nupkg 文件并且不会解压缩它们。

.nupkg 文件存在但未解包时,是否有人有更简单的方法来恢复所有 NuGet 包以获得解决方案?

【问题讨论】:

  • I 图像,您必须编写脚本或控制台应用程序才能找到所有 nupkg 文件并提取它们。
  • @jrummell NuGet 恢复不这样做似乎很奇怪。我觉得有一个我只是想念的选项可以做到这一点。感觉就像是因为我想将依赖项检查到源代码控制中,所以我必须将它们添加两次,压缩在 nupkg 文件中,以及未压缩的内容。其他人一定遇到过这个问题?
  • 好吧,nuget 确实希望以这种方式使用。您可以尝试联系 nuget 团队,并将其作为功能请求提出建议。
  • 为什么这被否决了?这是一个合理的问题。默认情况下,Visual Studio 会将所有 packages 文件夹内容粘贴到源代码管理中,除了 dll。我不会认为这是人们遇到并且必须手动修复的不寻常的事情......
  • 这个小宝石“NuGet 还原时只检查 .nupkg 文件是否存在,如果发现该包已安装,则不会对其进行解包。”对我很有用,所以对此部分表示赞成。 :-)

标签: c# .net nuget projects-and-solutions nuget-package-restore


【解决方案1】:

如果不想从 Internet 下载 nuget 包,只需将它们添加到名为 nuget_repo 的单独文件夹中,然后在 nuget.config 文件中将此文件夹注册为 a package source 。将 nuget_repo 文件夹和 nuget.config 与您的源代码一起检查到源代码控制中。

【讨论】:

    猜你喜欢
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 2011-02-20
    • 2018-02-04
    • 1970-01-01
    • 2012-10-05
    • 2017-02-25
    相关资源
    最近更新 更多