2

在试图找出这个问题的解决方案(没有双关语):升级到 MVC 5 和 Web API 2 后,如何让我的 Web API 应用程序再次运行?,我意识到我已经忽略了包和引用程序集之间的关系(没有给他们太多考虑)。

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

例如,我在我的项目的 NuGet 包管理器中有实体框架,并且我还有一个对 EntityFramework 的程序集引用。然而,这种通信并没有全面延伸。

毕竟,在选择了上下文菜单项(我不知道是来自 Visual Studio 还是 Resharper)“Remove Unused References”之后,我有 14 个 Items 被引用;但是在 NuGet 包管理器中,我在“已安装的包 | 全部”表中列出了 30 个包。

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

4

1 回答 1

2

一个包由 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 文件.......有时也会显示一些巫术。

那是简单的版本。但它会让你离开地面。

于 2013-10-21T19:05:44.450 回答