【问题标题】:How to manage Nuget Packages used more than once如何管理多次使用的 Nuget 包
【发布时间】:2016-11-09 22:46:54
【问题描述】:

我是恐龙开发人员,所以 NuGet 对我来说相对较新,我习惯于管理具有单个项目的第三方开源库,其中包含代码或二进制文件,我将在必要时保持更新,并且该项目发布我在所有项目中引用库的公共文件夹中的 dll(s)。这使得维护第三方库变得容易,在我的项目中,我只需要在更新库时重新构建,一切正常。现在许多开源项目在 NuGet 上发布他们的库,并且很容易在项目中引用它们,但我担心我必须为我使用它的每个项目下载一个库的副本,在我看来是会导致混乱的东西。特别是如果我有 2 个构建 dll 的项目最终使用相同包的 2 个不同版本并且在有问题和冲突的应用程序中都使用。所以我对那些长期使用 NuGet 的人的问题是: 我是否可以像使用其他库一样继续使用 NuGet 包并创建一个引用它们的项目,使用它在单个文件夹中发布 dll,然后从我的 dll 和已发布文件夹上的应用程序中引用包的 dll。

我希望我已经清楚了。感谢您在此主题上分享的任何想法 萨布丽娜

【问题讨论】:

  • 我还是不知道你为什么会这样。如果您不想更新软件包,则无需更新。更新包通常不会破坏事情,除非包做得不好。可能比尝试滥用 NuGet 更麻烦
  • 如果您使用的是 VS2015,您可以在 UI 中合并 NuGet 包版本,否则有一个名为 Sync-Package 的包管理器控制台命令也可以执行此操作 - 但我以前从未使用过它。

标签: c# .net dll


【解决方案1】:

将所有项目的所有 3rd 方库放在一个文件夹中可能会导致 dll 版本地狱。如果您更新包含重大更改并被其他项目引用的单个 dll,那么您将修复/重建所有引用它的项目。

要解决为每个项目下载相同包的问题,​​您可以创建local repositoryconfigure Visual Studio to use your local repository。因此,如果您的本地存储库包含单个版本的 log4net,您将只能使用该特定版本。您甚至可以将存储库配置为使用共享文件夹,在这种情况下,所有开发人员甚至您的构建服务器都可以使用该存储库。

a lot advantages使用NuGet,比如节省大量硬盘空间等。例如,我为我们的内部框架创建了 NuGet 包,因此我们所有的项目都只是引用这些包,而不是每个项目在其 bin 文件夹中都有自己的版本。

【讨论】:

  • 我已经阅读了您在本地存储库上链接的文章,我发现它非常有趣,它只是有点“古老”,但我已经找到了它的用途。不过,也许我有点老了,但是我将如何在我的本地存储库中下载包,是必须从 NuGet 完成的事情还是从 Visual Studio 完成的事情?我觉得自己又老又笨……对不起
  • 我已经更新了我的答案,提供了一个关于如何下载包和配置 Visual Studio 的链接
  • 那是最有用的!我在 NuGet.org 中找到了一些解决方案,例如 ASP 应用程序和 NuGet.Server 以及另一篇使用 TFS 的文章,但即使可行,它们对于我个人使用来说也太复杂了。再次感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多