.net - 使用 Nuget 库进行开发和调试

标签 .net nuget

我们选择使用 nuget 来管理私有(private) (.NET) 库,但 DLL 的版本控制已经变得令人厌烦。

假设我们在两个项目中有以下共享库:

  • Shared_DAL
  • Shared_Model
  • Shared_BLL(取决于 Shared_DAL 和 Shared_Model)
  • Shared_Mvc(取决于 Shared_BLL 和 Shared_Model

  • 然后,在每个特定项目中,我们有:
  • Project_Model(取决于 Shared_Model)
  • Project_BLL(取决于 Shared_DAL、Shared_Model 和 Project_Model)
  • Project_Mvc(取决于 Shared_Model、Shared_BLL、Project_Model 和 Project_BLL)

  • 我们现在遇到的问题是很难在特定项目中测试对 Shared_BLL 所做的更改。目前,我们必须:
  • 将 Shared_BLL 构建为 nuget 包
  • 将nuget包部署到私有(private)仓库
  • 在包含 Project_Mvc 和 Project_BLL
  • 的解决方案中运行 Update-Package Shared_BLL

    这是非常困难的并且开销很大。

    我们尝试了另一种方法,即暂时删除 DLL 引用并将其替换为对修改后的 DLL 的直接引用。但是,您必须撤消对项目的所有更改,这并不是特别好。

    我在这里错过了什么吗?如果您在开发生命周期中使用 NuGet,您将如何处理 DLL?

    更新:对于面临同样问题的人,我们已经远离 nuget,直到解决这个问题,并且依赖于将 DLL 放在特定文件夹中,并在每个项目文件的 HintPath 中使用绝对路径。生成事件会更新定义目录中的 DLL,并且可以调试 Shared 和 Project。

    最佳答案

    我看到您返回引用普通 DLL 而不是 nuget 包,但我决定回答。也许其他人会对我对这个话题的看法感兴趣。

    最后,我对此进行了大量研究,发现了一些可用于解决在远程 nuget 引用和本地 nuget 引用之间切换的问题的事实。

    可以调用 nuget update 来引用请求包的最新版本。
    所以...例如,您有两个 nuget 存储库(远程和本地)。本地存储库是普通文件夹。

    1.您从普通源构建 Project_Mvc 并从您拥有“生产构建”的远程存储库中自动恢复下载 Shared_BLL-1.0.0
    2. 您决定在本地构建 Shared_BLL。当您在 IDE 中执行此操作时,它会生成
    Shared_BLL.9.99.999.0 包。
    3. 你调用更新和重建 Project_Mvc 并且瞧! Shared_BLL.9.99.999.0 现在是
    在这里引用。

    你写道这是很大的开销......它可以通过向 VS 解决方案添加额外的项目来自动完成。例如 _UpdatePackages 项目(空 C# 项目模板),它将始终位于解决方案项目列表的顶部。此外,这也可以向后完成。当您从本地提要中删除 Shared_BLL.9.99.999.0 并调用更新时 - 引用将替换为第 1 点中的引用。

    处理此问题的另一种方法是使用 ripple .由于某些限制,我无法在我的项目中使用它,但在您的情况下可能没问题。

    关于.net - 使用 Nuget 库进行开发和调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22690115/

    相关文章:

    c# - 如何使用字符串执行数字有效排序?

    c# - 为 Roslyn 分析器升级 Microsoft.CodeAnalysis.CSharp

    Nuget 命令行 - 已安装但未在项目中添加为引用的包

    visual-studio-2010 - 如何创建包含 XML 智能感知数据的 NuGet 包

    c# - 分页 IEnumerable 数据集

    c# - clickonce安装下载失败

    c# - 我怎样才能改进这个设计?

    c# - 对象和集合初始值设定项 - 分配 self ?

    visual-studio - 使用 Visual Studio 包在 nuget 包中包含构建目录

    nuget - NuGet 中的包依赖解决方案和命名冲突