我有一些.NET项目开始变得足够大,值得研究依赖管理解决方案,因此我们不必将二进制文件从一个项目复制到另一个项目。到目前为止,我发现的是:
最近有使用这些依赖管理工具(或任何其他工作良好的)经验的人会与您分享经验吗?NuGet是否足够成熟,可以用于依赖关系管理?如果没有,它缺少什么?
发布于 2012-06-05 19:55:49
NuGet很可能是我的答案。在使用了RubyGems之上的前体(Nu)之后,我可以说,将资源用于某些方面是有帮助的。现在,一旦作业完成,我就得到了可执行文件的修补版本,因为除了远程存储库之外,我们还有一个本地存储库。我不确定他们是否修复了这个问题,但是由于他们接受补丁,所以应该很容易纠正。在.NET领域的所有开源项目上,我们现在都是通过NuGet完成的。这要容易得多,尽管上链出版确实需要一段时间。
OpenWrap是一种选择,但一切都需要构建。屁股有点疼。如果你不能使项目建设正确,它需要一段时间来处理。Openwrap已经尝试了很长一段时间来解决这个问题,而且仍然很尴尬。二进制只分发要容易得多(有时).
另外两个我不熟悉。所以我不能对他们发表评论。
发布于 2012-06-06 21:52:29
我刚刚下载了一个最新版本的NuGet,看看上次发生了什么变化。如果我错了,请纠正我(我真的在考虑把我的东西迁移到nuget):
NuGet包仍然没有将"platform“指定为包依赖项。我刚刚安装了"Ninject“,它在子文件夹"packages”中引用了.NET 4.0版本。我认为这是一个最好的猜测,因为我的项目是在4.0,但这是相当危险的假设。我也不明白哪个平台将由包的依赖性来选择。
“包恢复”功能转换了我的解决方案,添加了一个自定义的预构建步骤。我不喜欢修改我的解决方案文件,但这不是问题。我不明白它多久检查一次新版本(我想为私有存储库设置频繁的频率)。
我在这里可能完全错了,但是看起来nuget在升级包版本时不会自动升级项目的依赖性。包还原将为新的包版本创建一个新的子文件夹,但是我必须手动从Visual中选择该文件夹,提前删除引用。
一些包(如jQuery)将在启动时运行嵌入式PowerShell脚本。我真的不喜欢任何自定义执行和PS依赖,它并不总是在窗口上,完全缺失在构建中。顺便说一句,正如我前面提到的MSBuild,对于某些C++构建来说,即使是这种依赖也可能不现实(否则我会错过包恢复功能?)。
最后一个可能并不重要,但是当我有相当多的依赖项时,需要一些合理的时间来恢复它们。
发布于 2015-08-14 15:56:22
到目前为止,NuGet仍然是最好的选择。
NuGet作为依赖管理器的主要问题是,它被设想为“开发时”依赖管理器,而不是“构建时”依赖管理器。
开发人员将通过Visual NuGet还原Studio...and包,这可以在修复过程中运行修改项目中文件的PowerShell脚本。
这与我看到的其他依赖管理系统不同,因为添加依赖项并解决依赖关系可以更改引用依赖项的系统。
在PowerShell脚本中没有确保或检查幂等性的内置机制,因此在同一组文件上多次运行它可能不是确定性的。
在开发过程中,似乎很多人使用NuGet来通过Visual拉包,但我不知道如何在构建服务器上使用它。
https://softwareengineering.stackexchange.com/questions/148875
复制相似问题