gpt4 book ai didi

visual-studio - 为什么我们需要像 Nuget 这样的包管理器?

转载 作者:行者123 更新时间:2023-12-04 13:08:35 26 4
gpt4 key购买 nike

我知道当我们想使用第三方组件时,像 NuGet 这样的包管理器会帮助我们。

从 Nuget Codeplex 页面:

NuGet is a free, open source developer focused package management system for the .NET platform intent on simplifying the process of incorporating third party libraries into a .NET application during development.

There are a large number of useful 3rd party open source libraries out there for the .NET platform, but for those not familiar with the OSS ecosystem, it can be a pain to pull these libraries into a project.

Let’s take ELMAH as an example. It’s a fine error logging utility which has no dependencies on other libraries, but is still a challenge to integrate into a project. These are the steps it takes:

Find ELMAH
Download the correct zip package.
“Unblock” the package.
Verify its hash against the one provided by the hosting environment.
Unzip the package contents into a specific location in the solution.
Add an assembly reference to the assembly.
Update web.config with the correct settings which a developer needs to search for.

And this is for a library that has no dependencies. Imagine doing this for NHibernate.Linq which has multiple dependencies each needing similar steps. We can do much better!

NuGet automates all these common and tedious tasks for a package as well as its dependencies. It removes nearly all of the challenges of incorporating a third party open source library into a project’s source tree



这些步骤是我们要设置项目时执行的简单任务。它仅用于自动添加 3rd 方组件并确定配置文件中出错的机会?或者它有更多的责任!?

最佳答案

它的值(value)隐藏在公开之中:一个包经理 例如 NuGet 可帮助您使用自动化处理软件依赖项。许多人假设它仅适用于开源或第三方组件,但您同样可以将其用于您自己的内部包。

NuGet 的优点是(仅举几例):

  • NuGet 鼓励重用组件,因为您隐含地依赖实际的“发布”(即使是预发布),而不是分支源
  • 您可以摆脱使 VCS 存储库膨胀的二进制文件(包还原功能)
  • 它迫使包创建者考虑使用包的方式,并让他们在包安装期间处理组件的配置(谁比包创建者最了解如何配置包?)。以 ELMAH 为例。
  • 有效地在包存储库上自动创建和发布包是持续交付的一种形式(对于软件组件)。 OctopusDeploy 甚至更进一步,可以打包整个网站以供部署。
  • NuGet 鼓励并且有时会强制您遵循一些 ALM 最佳实践。例如。一个包有一个版本,所以你必须考虑你的版本控制策略(例如 SemVer.org)
  • NuGet 与 SymbolSource.org 集成(它也有一个社区版来设置你自己的):这允许人们轻松调试已发布的包,而不必一直发送此信息
  • 拥有一个或多个包存储库使组织可以轻松维护依赖关系矩阵,甚至可以构建多个项目正在使用的 OSS 许可证 list
  • NuGet 通知您可用的包更新
  • 创建包让人想到组件架构(所有依赖项也应该打包)
  • 包的依赖会自动解析(所以你不会忘记任何)
  • NuGet 足够聪明,可以在需要时添加程序集绑定(bind)重定向

  • 上面的列表并不详尽,但我希望我涵盖了这个答案中的主要好处。我敢肯定还有更多。

    干杯,
    泽维尔

    关于visual-studio - 为什么我们需要像 Nuget 这样的包管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13002185/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com