如何处理我的项目存储库中的 EF、MVC4、WebPages 和朋友等包

How to handle packages such as EF, MVC4, WebPages and friends in my project repository

我有一个使用 EF、MVC4 和一些附加包的 asp.net 应用程序。每当我尝试在另一台 PC 上打开项目时,我都会遇到安装包的问题。我的引用被标记为缺失,代码远非可编译。上次我通过删除引用和包并一个一个安装所需的包来解决它。我发现解决方案很乏味。有没有更好的全球解决方案?这应该怎么做?这不应该是自动化的吗?

感谢帮助和指点!

更新

我确实使用 NuGet 包(否则很难获得所有这些 dll)但不知何故我总是以卸载并重新安装包来使我的项目正常运行而告终。我总是以错误的版本结束,而不是编译代码。

我最终做了以下事情:

我认为卸载-安装可以替换为Update-Package –reinstall A.B.C

我希望有一个更简单的解决方案。

在不知道哪些引用损坏的情况下,我假设您至少可以使用 NuGet 包来管理 Entity Framework 和其他框架引用。

如果使用visual studio;您可以启用自动包还原; article 详细概述了 nuget。

如果您转到 Tools -> Options -> NuGetPackage Manager,您可以确保自动下载已启用。请参阅下面的屏幕截图。

正如 lucian.jp 所说,nuget 可能是正确的选择。在我的公司,我们通常会竭尽全力只查找和使用维护了 nuget 包的包,甚至大多数核心 Microsoft 包都有它们,例如 https://www.nuget.org/packages/Microsoft.AspNet.Mvc/

对于其他的,在你的存储库的根目录中保留一个带有外部 assemblies/dlls 的小第三方文件夹,然后从你的项目引用那个而不是从你硬盘上的某个随机位置。 IE。将第三方程序集检查到您的项目中不是您的 bin 目录的地方。

因此,如果您有一个现有项目,我建议您采取以下措施以避免将来出现问题:

  1. 对于每个程序集,包括您的 MVC 程序集,找到等效的 nuget,从您的项目中删除 dll,然后使用 nuget 包管理器将其添加回来。
  2. 获取所有剩余程序集的副本并在存储库的根目录中创建一个文件夹并将它们放在那里,然后删除所有这些程序集并将它们添加回去以引用该文件夹中的 dll。
  3. 如果您使用 git 我也会使用 .gitignore 来不检查您的 bin 目录。这将强制重新部署您的代码以从各自的来源获取程序集。

将 Nuget 用于 EF 和 MVC 等 DLL 包。但是不要将 Nuget 用于 JS / CSS 包,而是使用 bower。 CSS 和 JS 库的 Nuget 包很好,但它们的安装和卸载很棘手,可能与您的项目结构不匹配。