2016-03-04 57 views
2

我们目前不对我们的依赖项使用nuget,宁愿采用旧的skool方式,并将它们全部放入libs文件夹并从那里引用。我知道。所以1990年代。Nuget - 在源代码控制中存储软件包,还是不是?

无论如何,nuget总让我感觉有点que ... ......你知道,依靠云和所有这些。因此,我发现自己在主与马克西曼同意(在这里看到:http://blog.ploeh.dk/2014/01/29/nuget-package-restore-considered-harmful/)谁说:

就个人而言,我总是禁用该功能,而是检查在我的库中的所有包。这永远不会给我任何问题。

问题是,在版本3中这已经发生变化,您不能在软件包旁边存储软件包,如下所示:https://oren.codes/2016/02/08/project-json-all-the-things/。检查它们到源代码中的哪一种类型。

那么,我在这里什么都不担心?我应该从Nuget那里喝酒,还是与Seeman先生一起喝酒,呃谨慎一些?

+0

个人而言,我永远不会在源代码管理中存储包。它们存储在Nuget中是有原因的,为什么你想用特定版本阻止你的git回购?升级时,你的开发人员是否清理本地副本?不。或者至少,不太可能。如果您使用最新的nuget范例,那么软件包将自动恢复,如果找不到它们的话。你也可以用'nuget restore xxxx.sln'编织这个命令行选项 – SpaceBison

+0

如果你主要关心的是访问nuget.org repo(连接),那么设置一个私人nuget服务器来缓存你需要的包。这可能是一个文件共享或免费的nuget服务器(nuget.org回购是OSS) –

+0

[可以(应该)我把第三方库在版本控制?](https://stackoverflow.com/questions/ 1710027/can-should-i-put-3rd-party-libraries-in-version-control) – CJBS

回答

4

在源代码控制中存储NuGet包是一个真的,真的坏主意。 我不小心做了一次,我最终膨胀了我的源代码相当大,这是在.NET核心...

从NuGet井深。大多数软件组件现在都以类似的方式打包(NPM,Bower等)。引用的博客文章已有两年历史,.NET世界中的包管理正在迅速发生变化,所以最近我的经验如下。

  • NuGet包不能从nuget.org删除。他们可以隐藏, 但如果您的应用程序请求一个隐藏的包,它会像平常一样下载它 。它永远不会消失在虚空中。
  • '启用软件包恢复'不再会出现问题,因为它现在是NuGet 2.7+中的默认选项。你别无选择了。
  • 不再按每个解决方案存储软件包,而是每台机器,这将节省大量的带宽,并且会减少构建时的初始读取周期。
  • 如果您使用.NET Core构建一个新项目,那么您将拥有数十个包,因为整个BCL将作为NuGet包提供。你真的想把所有的System. *包检入到源代码中吗?
+2

>“NuGet包不能从nuget中删除。org。“ - 这是不真实的。'Microsoft.Net.Compilers 2.0.0'包过早发布,我的一些项目自动更新到它,然后这个包被从NuGet中提取出来,我根本无法构建我的解决方案NuGet抱怨无法下载它,我不得不手动调整我的'packages.config'和'csproj'文件以引用'1.3.2'。请参阅https://github.com/dotnet/roslyn/issues/14591 – Dai

+1

只是说,我们和nuget一起去了,版本3比版本2好得多。我们从来没有遇到过任何问题,它在解决方案层面非常出色。这是要走的路,介意你,我不要打开自动更新。 – intinit

相关问题