【问题标题】:Why use NuGet over installing libraries directly on my machine为什么使用 NuGet 而不是直接在我的机器上安装库
【发布时间】:2012-04-04 18:22:36
【问题描述】:

我不明白 - 谁能向我解释为什么我应该使用 NuGet 而不是通过 setup.exe 或 MSI 安装一堆库?有什么优势?

例如,通过 NuGet 安装 Entity Framework 4.3 是否比下载安装程序更好?此外,如果我通过 NuGet 安装实体框架,那么它是否可用于我创建的任何新解决方案或项目(这里有点混淆)。

基本上,NuGet 做了哪些普通安装不做的事情(反之亦然!)

【问题讨论】:

    标签: visual-studio nuget


    【解决方案1】:

    除了让项目添加包变得简单之外,我认为 NuGet 的最大优势在于依赖管理。

    NuGet 允许项目所有者将其库打包为包。以前,如果他们依赖于 log4net 等其他库,他们会将这些程序集包含在他们的 setup/zip 文件中并上传到他们的网站。

    使用 NuGet,他们只需在 .nuspec 文件中添加对这些外部包的引用。当 NuGet 安装包时,它会看到存在依赖项,并会自动下载并安装这些包。它还支持冲突管理,如果两个包依赖于不同的版本,它会找出正确的一个来安装。

    我认为确定 NuGet 是否适合您的最佳方法是实际尝试使用它。我相信一旦你这样做了,你就会意识到它有很多好处。

    【讨论】:

    • will automatically download and install those packages as well,如果网站上没有网络怎么办?
    • “将自动下载”是指依赖关系。初始软件包安装由用户启动。至于不能上网,你可以从另一个位置下载你需要的所有包,然后将它们复制到目标机器上。现在你可以将本地文件夹添加到你的 NuGet 包存储库,安装将从那里而不是 nuget.org。
    • 我最近遇到了一个让我很困惑的问题。我开发了一个具有多个帮助(我的)库的解决方案,不同的库使用通过 nuget 添加的不同包。我将其中一个库(单个 dll 文件)引用到另一个解决方案中,在构建时,VS2010 抱怨引用的库而不是缺少的包。在这种特殊情况下,我有什么办法可以知道缺少/需要哪个包。
    【解决方案2】:

    Nuget 提供了几个额外的好处:

    • 它通过添加对必要程序集的引用、创建和添加项目文件(例如配置)等自动配置您的项目。
    • 它提供包更新
    • 非常方便地完成了所有这些操作

    【讨论】:

      【解决方案3】:

      有什么优势?

      Nuget 简化了第三个库的合并:使用单个命令行 (Install-Package EntityFramework),您可以使您的包可用于您的项目。而不是谷歌搜索-找到包-下载-设置-引用您项目中的包...

      自动更新不是强制性的,Nuget 配置文件可让您指定与您的应用程序兼容的版本或版本范围。

      另外,如果我通过 Nuget 安装实体框架,那么它是否可用于我创建的任何新解决方案或项目

      安装包后,dll 会复制到解决方案级别的目录中,然后您可以在解决方案的其他项目中从那里引用它们。

      对于每个新的解决方案,重新安装软件包是一个更好的解决方案。由于使用 nuget 非常简单,所以不会有问题。

      【讨论】:

      • +1 表示软件包安装在解决方案级别。在一个解决方案中拥有多个 Web 应用程序(项目)并不少见,而 nuget 已经涵盖了这一点。
      • 我开发了一个具有多个帮助库的解决方案,不同的库使用通过 nuget 添加的不同包。我将其中一个库(单个 dll 文件)引用到另一个解决方案中,在构建时,VS2010 抱怨引用的库而不是缺少的包。
      【解决方案4】:

      Nuget 有助于创建 DLL 地狱并使解决方案很快失控,尤其是当所谓的“包”的不同版本开始发挥作用时。除了程序集版本控制之外,现在还有 nuget 包版本。 Nuget 只是在 DLL 上添加了另一个包装器,并没有做任何让开发人员的生活更轻松的事情。

      【讨论】:

      • 问题是 - 为什么要使用 Nuget。我的回答是——让他们的生活更艰难,并增强 dll 地狱问题。这怎么不能提供答案?
      • 感谢您提供平衡的声音。我希望 OP 会要求利弊。
      • 如果有人问“我为什么这么漂亮?”在堆栈溢出时,应该出现的唯一答案是关于那个人有多漂亮的解释?即使问题是在寻求积极的方面,但也考虑消极方面更具建设性。
      猜你喜欢
      • 2016-11-23
      • 1970-01-01
      • 2020-05-09
      • 2014-07-08
      • 1970-01-01
      • 2021-03-04
      • 2012-10-22
      • 2012-10-28
      • 1970-01-01
      相关资源
      最近更新 更多