C# 关于管理DLL的建议

C# 关于管理DLL的建议,c#,visual-studio,dll,tfs,C#,Visual Studio,Dll,Tfs,我试图找出最好的方法来处理我们公司的dll更新。以前,我们有一个单一的代码库,每个项目只复制一个代码库。这不好玩 新设置总共有7个dll,然后是最终的Unity游戏 5个dll是独立的,它们没有依赖关系 6取决于前5个 7取决于前6个 Unity项目依赖于所有7个 更新低级dll时会出现问题。但是假设我们已经改变了6 在本地对#6进行更新,测试更改,它就可以工作了 从开发分支合并到主分支 *在这一点上#7没有意识到#6的变化,我们会说变化不会以任何方式影响#7 我们是否应该构建#6,更新

我试图找出最好的方法来处理我们公司的dll更新。以前,我们有一个单一的代码库,每个项目只复制一个代码库。这不好玩

  • 新设置总共有7个dll,然后是最终的Unity游戏
  • 5个dll是独立的,它们没有依赖关系
  • 6取决于前5个
  • 7取决于前6个
  • Unity项目依赖于所有7个
更新低级dll时会出现问题。但是假设我们已经改变了6

  • 在本地对#6进行更新,测试更改,它就可以工作了
  • 从开发分支合并到主分支 *在这一点上#7没有意识到#6的变化,我们会说变化不会以任何方式影响#7
我们是否应该构建#6,更新#7(从nuget软件包获取#6),将#7合并到Main,构建并使用所有需要的dll更新游戏?或者我们不应该麻烦从#^加载带有更新的#7,因为我们知道更改的内容不会影响该项目


总的来说,我只是想从其他一些地方寻找一些“我们是如何做到的”,他们在如何管理dll方面有着更丰富的经验

如果dll是公司内部的,但是项目/解决方案外部的,那么我们只能通过nuget接受他们的dll

如果依赖项目需要进行更新(关键),则由维护内部依赖关系的团队通知依赖项目。然后,根据团队风格,将其放入当前的sprint或作为瀑布式需求安排。否则,所有团队间依赖关系都将通过nuget部署,并根据团队实践在下一个或当前开发周期中自动接收

每个版本的QA都将执行完整的回归,所以这非常有效


因此,在您的情况下,对#6的更改不会立即传播,除非#6的团队认为it组织至关重要,在这种情况下,所有相关项目都必须更新#7的团队将收到此消息,进行自我更新、测试,然后向您发布所需更新。

如果DLL是公司内部的,但在项目/解决方案外部,则我们仅通过nuget接受他们的DLL

如果依赖项目需要进行更新(关键),则由维护内部依赖关系的团队通知依赖项目。然后,根据团队风格,将其放入当前的sprint或作为瀑布式需求安排。否则,所有团队间依赖关系都将通过nuget部署,并根据团队实践在下一个或当前开发周期中自动接收

每个版本的QA都将执行完整的回归,所以这非常有效


因此,在您的情况下,对#6的更改不会立即传播,除非#6的团队认为it组织至关重要,在这种情况下,所有相关项目都必须更新#7的团队将收到此消息,进行自我更新、测试,然后向您发布所需的更新。

这是我们公司正在使用的方法。我们有一个本地NuGet,每个公共dll都放在那里。其他项目可以通过NuGet包引用这些DLL。更新其中一个DLL时,将自动创建一个新的,并将其推送到本地NuGet。引用该dll的其余项目此时已过时,因此我们应该手动更新这些项目上的NuGet包

NuGet软件包的自动更新

我们按照以下步骤使用TFS进行持续集成:

  • 一个开发人员修改其中一个包含这些DLL的项目
  • 他/她创建拉取请求(PR)。第一个构建运行编译并运行测试
  • 当PR获得批准时,另一个构建将运行以进行部署
  • 第二个版本再次编译解决方案并再次运行测试
  • 然后,此构建中的NuGet Packager步骤符合新包
  • 最后,NuGet发布者步骤将出版物发布到本地NuGet

  • 这是我们公司正在使用的方法。我们有一个本地NuGet,每个公共dll都放在那里。其他项目可以通过NuGet包引用这些DLL。更新其中一个DLL时,将自动创建一个新的,并将其推送到本地NuGet。引用该dll的其余项目此时已过时,因此我们应该手动更新这些项目上的NuGet包

    NuGet软件包的自动更新

    我们按照以下步骤使用TFS进行持续集成:

  • 一个开发人员修改其中一个包含这些DLL的项目
  • 他/她创建拉取请求(PR)。第一个构建运行编译并运行测试
  • 当PR获得批准时,另一个构建将运行以进行部署
  • 第二个版本再次编译解决方案并再次运行测试
  • 然后,此构建中的NuGet Packager步骤符合新包
  • 最后,NuGet发布者步骤将出版物发布到本地NuGet

  • 您的方法似乎非常有条理,而且非常干净。您的方法似乎非常有条理,而且最近cleanI已经设置了这个确切的过程来帮助您。我很高兴听到这似乎是在正确的轨道上。我最近设置了这个确切的过程来帮助。我很高兴听到它似乎在正确的轨道上。