resharper - Visual Studio 中的包和程序集之间有什么联系?

标签 resharper assemblies nuget nuget-package visual-studio-2013

在试图找出这个问题的解决方案(没有双关语): How can I get my Web API app to run again after upgrading to MVC 5 and Web API 2? 时,我意识到我已经忽略了包和引用的程序集之间的关系(没有给他们太多考虑)。

那么这种关系是什么?我使用 NuGet 管理包,并通过项目引用文件夹下的上下文菜单管理程序集,但仔细检查后发现,其中一些程序集之间似乎存在 1:1 对应关系。

例如,我的项目的 NuGet 包管理器中有 Entity Framework ,而且我还有对 EntityFramework 的程序集引用。然而,这并不是全面的通信。

毕竟,在选择上下文菜单项(我不知道它是来自 Visual Studio 还是 Resharper)“删除未使用的引用”后,我引用了 14 个项目;但在 NuGet 包管理器中,我在“已安装的包 | 全部”表格中列出了 30 个包。

然而,当我突出显示它们时,它们带有“管理”按钮;似乎在其他项目中他们说“已安装”并带有绿色复选标记或其他东西......???

最佳答案

一个包由 1 个或多个程序集组成。它还可以包含其他非程序集(也称为非 dll 文件),但这是查看它们的简单方法。

当您向 Visual Studio 项目添加“包”时,会发生一些事情。

  1. 创建了一些 xml,表示“此包是此项目的一部分(例如 csproj)。
  2. 该包所需的 1 个或多个程序集已下载到本地。
  3. 必要的引用已添加到您的项目中(例如 csproj)。这个逻辑是写在nuget包里面的。这模仿您执行“右键单击/添加引用”。
  4. 可能会发生其他情况,但以上是简单版本。

了解包的一个好/快速的方法是

获取 MyPackage.nupkg 文件。 将扩展名重命名...从“.nupkg”到“.zip”。 并查看 .zip 文件内容。

您会看到类似的文件夹

.\content
.\lib
.\lib\net20
.\lib\net40

并查找一些 .ps1 文件......有时也会显示一些巫术。

这是简单的版本。但它会让你起步。

关于resharper - Visual Studio 中的包和程序集之间有什么联系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19459166/

相关文章:

resharper - 停止 ReSharper 清理重新排序单元测试

c# - 引用非托管程序集

c# - Azure 上的 GhostScriptSharp

c# - 如何让 Resharper 将成员上的 "private"和类上的 "internal"显示为冗余错误?

c# - 最新的 Resharper 更新后无法编辑文件

c# - 从 asp.net 上的另一个文件夹引用 dotnetnuke.dll

entity-framework - Entity Framework 对不同程序集的继承

visual-studio - 无法在具有慢速(玻利维亚)互联网的 Visual Studio for Mac 和 dotnet 核心中恢复 nuget 包

unit-testing - 什么是 AutoUnify 以及为什么它会导致 TFS 2015 中的工作测试失败

resharper - 在 ReSharper 中指定 C# 版本