在 Visual Studio 中添加引用和将 Nuget 包添加到项目之间的区别

Posted

技术标签:

【中文标题】在 Visual Studio 中添加引用和将 Nuget 包添加到项目之间的区别【英文标题】:Difference between adding a Reference and adding a Nuget package to a project in Visual Studio 【发布时间】:2018-10-19 19:31:59 【问题描述】:

我有一个 VS (2015) 项目。我看到我的项目的解决方案资源管理器视图中有一个“参考”部分,其中包括诸如 System.Core 之类的内容。我假设这些是已添加到项目中的 .dll?

我还可以右键单击项目文件(再次在解决方案资源管理器中)并选择“管理 NuGet 包”选项。我知道 NuGet 允许我向我的项目添加外部代码(例如,外部 .dll 和相关文件)。

添加对我的项目的引用和向我的项目添加 .nupkg 有什么区别?仅仅是 .nupkg 可以包含除 .dll 之外的一大堆其他东西(例如文档)吗?我为什么要使用其中一个?

【问题讨论】:

【参考方案1】:

添加对我的项目的引用和添加引用有什么区别? 将 .nupkg 添加到我的项目中?

NuGet 本质上与手动添加引用没有什么区别,最终还是添加了对项目的引用。它是一个自动向我们添加程序集并对其进行管理的工具,有效地提高了我们开发项目的效率。

更多详情可以查看the document about nuget:

简而言之,NuGet 包是一个扩展名为 .nupkg 的 ZIP 文件,其中包含已编译代码 (DLL)、与该代码相关的其他文件,以及包含包版本号等信息的描述性清单。具有共享代码的开发人员创建包并将它们发布到公共或私有主机。 包消费者从合适的主机获取这些包,将它们添加到他们的项目中,然后在他们的项目代码中调用包的功能。然后 NuGet 自己处理所有中间细节。

由于 NuGet 支持私有主机以及公共 nuget.org 主机,因此您可以使用 NuGet 包来共享组织或工作组专有的代码。您还可以使用 NuGet 包作为一种方便的方式来分解您自己的代码,以便仅在您自己的项目中使用。简而言之,NuGet 包是可共享的代码单元,但不需要也不暗示任何特定的共享方式。

.

仅仅是.nupkg 可以包含一大堆其他东西吗? 来自 .dll(例如文档)?

是的,NuGet 包可以在包中包含指定的文件。

我为什么要使用其中一个?

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

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

相信一旦你使用它,你就会发现它有很多好处。

查看Why use NuGet了解更多详情。

希望这会有所帮助。

【讨论】:

很好的答案,谢谢。为什么使用 Nuget 链接也很有帮助。

以上是关于在 Visual Studio 中添加引用和将 Nuget 包添加到项目之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

visual studio怎么添加对dll的引用

Visual Studio 怎样添加引用

visual studio 无法引用第三方库?

尝试在 Visual Studio 2012 中添加对项目的引用,“未找到项目”

无法从 Visual Studio 2008 添加对 WixUIExtension.dll、WixUtilExtension.dll 和 WixNetFxExtension.dll 的引用

Visual Studio 2010 显示旧的 Visual Studio 2008“添加引用”对话框