c# - 您如何组织具有开源依赖项的开源 Visual Studio 项目?

标签 c# github open-source projects-and-solutions

我已经启动了一个开源 MVC4 项目,该项目使用其他一些开源项目作为依赖项。我已经 fork 了另一个项目,并将根据我的需要对其进行修改。我面临的问题是如何让这些项目相互依赖,但又分开维护。然而 git pull 我的项目的人也会得到依赖项目吗?

  1. 我可以将其他项目中的所有相关代码放入我的存储库中,但这样我将无法为依赖项目的分支做出贡献。我只是成为我的存储库的一部分。不是真的想那样做。
  2. 我可以完全独立地维护其他项目并将*.dll 文件复制到我的项目中。并将依赖的 dll 文件提交到 git 中。这很好,但我失去了同时开发两个项目的能力,以及在调试时进入依赖代码(好吧,如果复制 *.pdb 文件可能不会)
  3. 与第 2 点类似,我可以从依赖项目构建 nuget 包并将它们添加到我的主项目中 - 同样,不能真正同时开发两个项目,需要切换上下文。
  4. 神奇地得到了一个解决方案文件,它结合了我的存储库和依赖存储库中的项目。在每次构建时,将依赖的 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/

相关文章:

c# - 在 tabcontrol C# 中搜索标签页

c# - 如何将连接字符串从startup.cs asp.net core传递到UnitOfWork项目

github - 如何过滤尚未批准的拉取请求

database - 寻找多语言开源翻译词典平面文件或数据库

javascript - 有没有浏览器键盘绑定(bind)的开源库JS?

c# - 如何仅在您的应用中禁用 Web 浏览器 'Click Sound'

c# - 当 Controller Action 同步时,有什么理由使用异步/等待吗?

git - 如何使用 Git 管理我的 greasemonkey 用户脚本(以便将它们托管在 GitHub 中)

ios - 解压从 GitHub 下载的 zip 文件时出现错误 63(文件名太长)

java - 是否有适用于 Web 应用程序的开源图像调整大小和 uploader ?