你如何组织开放源代码的Visual Studio项目与开源的依赖呢?(How do you orga

2019-07-21 10:51发布

我开始是使用一些其他开源项目作为一个依赖一个开源项目MVC4。 我已经分叉的其他项目,并会根据我的需要来修改它。 我现在面临的问题是如何让这些项目依赖于对方,但单独进行维护。 然而,谁拉的git我的项目的人,将得到的依赖项目呢?

  1. 我可以踩住从其他项目中的所有相关代码到我的仓库,但这样一来我就不能促成相关项目的一个分支。 我会成为我的版本库的一部分。 不是真的想这样做。
  2. 我可以完全独立地维护其他项目和* .dll文件复制到我的项目。 并提交相关的dll文件到饭桶。 这是很好的,但我失去开发两个项目的同时,与步入相关的代码上调试沿着能力(好吧,也许不是,如果复制* .pdb文件一起)
  3. 类似于2点,我可以从相关的项目建设的NuGet包,并将其添加到我的主要项目 - 再次,不能真正发展,同时这两个项目,需要切换上下文。
  4. 随着一些魔术,结合项目从我的仓库和依赖库解决方案文件。 在每一个构建,相关的DLL文件复制到/ lib文件夹,并承诺他们。 这样我就不需要单独的项目之间切换上下文。 但缺点是,当其他贡献者的git拉我的项目,他们没有得到相关的项目和解决方案文件可能会被打破他们,因为它会引用项目,是不是在回购协议。

你如何组织你的代码在这种情况下?

Answer 1:

通常我使用的NuGet为我所有的依赖关系。 当我叉一个项目,我将它部署到的NuGet还对符号源 。 通过这种方式,你可以依赖源内部步骤没有任何问题。

有关符号源的详细信息和的NuGet另见: 创建和发布符号封装 。 为了使符号的代码调试看http://www.symbolsource.org/Public/Home/VisualStudio 。

你还必须记住,使NuGet包恢复 。

有了这个解决方案不能修改的源代码,但至少你可以调试。



Answer 2:

我使用Visual Studio中的概念CMake的相似,但完全的东西。 还有的属性文件,可以通过解决方案包括在相对未知的功能。 这使您可以创建一个包含只依赖路径的文件,包括你可以在图书馆和设置相对路径,然后需要人来设置相应的路径,你不能/不希望包括其他依赖。

随着工作的一点点,它出来还算干净,并且是超级容易通过的TeamCity和其他类似的工具(每个生成代理可以设置变量来表示它一直依赖)实现自动化。

对于小的依赖性,并且已经过调整,与我的项目工作的人,我把档案或资源库中的松散文件,并使用属性文件引用的。 其他人在哪里可以找到它们以及如何编辑的路径说明。

如果你有兴趣使用这样的方法,我可以进入一些更详细。 它采取了一些工作要弄清楚,因为财产的文件不超有据可查的,但工作得很整齐。



Answer 3:

如果你没有创建循环依赖 ,下面是一个想法:

  1. 添加一个新的Class Library项目一个独特的名字,说ClassLibrary1 ,到解决方案

  2. Build它的项目设置页面,配置Output path到应用程序输出路径

  3. Build Events页面,添加以下行来Post-build event command line块:

     del "$(TargetPath)" 
  4. 重复步骤1至3,但给出其他名称,说ClassLibrary2 ,和配置Output path到的源路径ClassLibrary1

  5. 设置Project DependanciesClassLibrary1 ,检查ClassLibrary2

  6. 添加所有其他项目作为项目参考 ClassLibrary2 ,留下Copy Local使用默认值true

  7. 建立ClassLibrary2一次,所有DLL现在是在源路径ClassLibrary1

  8. 将它们添加到的引用ClassLibrary1离开Copy Local使用默认值true

  9. 设置Project Dependancies的应用程序以及未造成循环依赖的所有其他项目,检查ClassLibrary1

  10. 添加其他项目的引用,从DLL文件放入路径ClassLibrary1

  11. 设置Copy Local在其他项目中的所有这些附加的DLL false

因此,该项目ClassLibrary1是解决方案的外部库的中央控制。 每次Rebuild Solution (或者只是构建应用程序), ClassLibrary1副本最新的DLL文件添加到它引用到应用程序输出文件夹,并删除它本身产生的DLL命名ClassLibrary1.DLL 。 该应用程序在编译时或运行时将使用的DLL的相同版本的依赖关系,你不需要做额外的部署或检查每个部署。



文章来源: How do you organise open-source Visual Studio projects with open-source dependencies?