【问题标题】:Methods of managing source code管理源代码的方法
【发布时间】:2010-02-28 12:17:37
【问题描述】:

近年来,我编写了相当多的软件,其中大部分都倾向于共享一个或多个通用库。 (最常用的库,是我用来调用 SQL 存储过程和返回对象数组的库)

我对我管理图书馆的方式不满意,我正在寻找改进我工作方式的建议。

第一次创建共享库时,我将该库作为单独的类库项目添加到解决方案中。

现在,当我开始一个新的解决方案并且我知道我需要一个我已经拥有的库时,我会去找到该库的项目并将文件复制到新的解决方案中。

这让我的文件系统(和 SVN 服务器)周围散布着同一个库项目的多个副本,感觉不太对劲。

有没有更好的工作方式,这样我只有一个所有解决方案共享的这个库的主副本,而不是每个解决方案都有自己的库项目副本?

【问题讨论】:

    标签: c# visual-studio-2008 shared-libraries projects-and-solutions


    【解决方案1】:

    只需构建一次库,然后从需要使用它的项目中引用已编译的二进制文件。

    在 Visual Studio 中,右键单击项目并单击“添加引用”,然后选择“浏览”选项卡并找到您的库二进制文件。

    (您显然需要将库程序集与您的应用程序一起分发)

    【讨论】:

    • 谢谢。在 Visual Studio 工作多年后,我不敢相信我错过了一些如此重要的东西。
    • 不确定这是最佳答案。添加二进制文件意味着如果共享项目发生更改,那么您需要重新编译它,然后重新编译所有引用它的依赖解决方案,这可能会导致构建依赖问题。我建议将其添加为项目参考
    • @zebrabox:我不关注,这不正是西蒙的帖子所说的吗?
    • @Bryan。没有西蒙的解决方案涉及添加对二进制文件的引用 - 我建议使用项目引用并添加对源 csproj 的引用
    • @zebrabox:当您需要在其他几个解决方案中引用此项目时,问题就开始了。你真的不想复制源代码。将共享库视为另一个“第三方”dll。您会在每个项目中包含 .Net Framework 源代码吗?不,您引用了共享 dll 的稳定、特定版本。
    【解决方案2】:

    你的感觉是绝对正确的。 source 库的主应该只有一个。

    在我们的商店中,我们有多个产品使用的多个共享库项目。我们将这些库视为产品本身并相应地对待它们。具体来说,当项目需要这些库之一时,我们将库的编译版本放在项目的 lib 文件夹中。我们消除了复制源代码的需要,并且我们的项目只引用了 dll 的稳定副本。

    这是存储库中的示例结构

    /LibraryX            <- product root
       ../branches
       ../tags
       ../trunk          <- solution folder
           ../LibraryX   <- project folder
           ../lib        <- thirdparty libraries used by LibraryX
    
    /ProductY            <- product root
       ../branches
       ../tags
       ../trunk          <- solution folder
           ../ProductY   <- project folder
           ../lib        <- thirdparty libraries 
                            used by ProductY, e.g. a copy of LibraryX.dll
    

    因此,在 ProductY 项目中,您可以添加对位于 lib 文件夹中的 LibraryX.dll 的引用,而不是包含 LibraryY 项目的副本。

    【讨论】:

      【解决方案3】:

      我建议将您的库编译成一个 dll,该 dll 可以作为对您正在处理的任何其他项目的引用添加。这样你就不需要到处复制源文件了。

      【讨论】:

        【解决方案4】:

        你应该用你的库构建一个 dll,然后引用它..

        引用 > 在 VS 中添加引用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-16
          • 1970-01-01
          • 2013-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多