DLL和NuGet包有什么区别?

35

首先,如果这是一个基础问题,我很抱歉。我曾试图查找答案,但不知何故,更加困惑了。所以,我决定在这里提问。DLL文件和NuGet包是否相同?它们都只是被引用到项目中吗?

3个回答

33

当你通过NuGet包向项目添加功能时,实际上只是向项目中添加文件。这些文件可以是JavaScript文件(例如jQuery),也可以是项目引用的DLL(例如Newtonsoft JSON),甚至可能是许多东西(例如Entity Framework或Owin/SignalR)-- 实际上可以是任何类型的文件。

NuGet包系统的优点在于它为你跟踪所有这些内容。如果你添加的包有更新,它会通知你;如果你从项目中删除包,它会移除文件并取消引用。它会为你处理所有这些事情,因此你不需要跟踪NuGet包添加的文件、将它们放在特定的文件夹中、确保它们在构建过程中被复制,以及其他一些微观管理工作。


当两者都可用时,是否使用对dll的引用比NuGet包更好呢? - niico
3
niico - 我尽可能使用Nuget包。这使得删除包(引用)变得容易,而不必担心在某个目录中清理DLL。VS集成让我知道Nuget引用何时有更新。我真的更喜欢Nuget,而不仅仅是放置一个引用文件。 - Jason
一个相关的注意事项:微软最近开始将NuGet称为“服务器端包管理器”,并推出了Bower和其他客户端包管理器,用于管理jQuery之类的客户端库(尽管它们有时也可以通过NuGet获得)。 - niico
在大型项目中,由多个软件/应用程序组成且存储在不同的代码库中,当公司成员打开另一个团队的解决方案时,所需的第三方NuGet软件包将自动下载和安装,而无需跟踪依赖项。 - AbbasAli Hashemian

10

从文档中,https://www.nuget.org

"什么是NuGet?NuGet是微软开发平台(包括.NET)的包管理器。NuGet客户端工具提供生成和使用包的能力。NuGet Gallery是所有包作者和使用者使用的中央包存储库。"


一个包可以包含一个或多个dll,以及其他资产,例如配置文件等。

3
您可以通过引用将库添加到您的项目中,但是当它们更新时,您可能没有注意到。
NuGet是Visual Studio扩展程序,它使得不仅能够轻松地拉取库和组件,而且还能将它们的配置导入到您的Visual Studio项目中。它将帮助您管理安装在项目上的软件包,并在软件包有新版本发布时通知您。
比如说,如果我创建了自己的DLL,我可以通过引用添加我的DLL。然而,在我将其打包和发布以使其在NuGet Package Gallery上可用之前,它将不会在NuGet上可用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接