【发布时间】: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