我已经启动了一个开源 MVC4 项目,该项目使用其他一些开源项目作为依赖项。我已经 fork 了另一个项目,并将根据我的需要对其进行修改。我面临的问题是如何让这些项目相互依赖,但又分开维护。然而 git pull 我的项目的人也会得到依赖项目吗?
- 我可以将其他项目中的所有相关代码放入我的存储库中,但这样我将无法为依赖项目的分支做出贡献。我只是成为我的存储库的一部分。不是真的想那样做。
- 我可以完全独立地维护其他项目并将*.dll 文件复制到我的项目中。并将依赖的 dll 文件提交到 git 中。这很好,但我失去了同时开发两个项目的能力,以及在调试时进入依赖代码(好吧,如果复制 *.pdb 文件可能不会)
- 与第 2 点类似,我可以从依赖项目构建 nuget 包并将它们添加到我的主项目中 - 同样,不能真正同时开发两个项目,需要切换上下文。
- 神奇地得到了一个解决方案文件,它结合了我的存储库和依赖存储库中的项目。在每次构建时,将依赖的 dll 文件复制到/lib 文件夹并提交它们。这样我就不需要在不同的项目之间切换上下文。但缺点是当其他贡献者 git pull 我的项目时,他们没有获得依赖项目,并且解决方案文件可能会为他们破坏,因为它会引用不在 repo 中的项目。
在这种情况下,您如何组织代码?
最佳答案
通常我对所有依赖项都使用 nuget。当我 fork 一个项目时,我会把它部署在 nuget 上,也会部署在 symbol source 上。 .通过这种方式,您可以毫无问题地进入依赖源。
有关符号源和 nuget 的更多信息,另请参阅: Creating and Publishing a Symbol Package . 要启用符号源调试,请参阅 http://www.symbolsource.org/Public/Home/VisualStudio .
您还必须记住启用 Nuget package restore .
使用此解决方案,您无法修改源代码,但至少可以对其进行调试。
关于c# - 您如何组织具有开源依赖项的开源 Visual Studio 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15373465/