【问题标题】:Including external projects as dlls将外部项目包含为 dll
【发布时间】:2012-10-17 21:19:27
【问题描述】:

我有一个 VS2010 解决方案,它使用自己的项目(位于该解决方案的文件夹中,因为我认为它们与此解决方案直接相关)但也重用了其他一些解决方案和项目中的代码 - 在处理此解决方案时,我意识到我已经编写了代码来执行某些任务,作为其他不相关程序的一部分。

我使用 TortoiseHg 将主解决方案文件夹作为 Mercurial 存储库维护,但是,它不包括我的其他外部项目。当本地仓库推送到我的 BitBucket 仓库时,我的主要解决方案的代码在那里,但外部项目的代码自然不见了。

我该如何解决这个问题?

  • 保持原样对我来说很方便(尽管在硬盘驱动器上移动我的代码以及修改我使用的外部项目时可能需要小心)但是任何尝试构建我的 BitBucket 存储库的人都会不能这样做,因为一些关键代码基本上丢失了(他们的 VS 也会抱怨,因为 sln 文件指向他们没有的项目)。
  • 包含所有项目可以解决问题,但需要我重做存储库的目录结构,并包含许多与只对一个解决方案感兴趣的人不相关的代码。此外,如果我在一系列提交中修改外部项目到他们自己的存储库,我还必须将所有这些更改以一个大 blob 提交到此解决方案的存储库。
  • 将外部项目预先构建到 dll 中,将这些 dll 附加到我的解决方案和存储库中,然后忘记外部项目的源代码将是理想的。但是,我不知道该怎么做,而且由于源代码不存在,使用 dll 会更难吗? Intellisense 会崩溃吗?使用 dll 时我还能看到我的文档吗?

很抱歉这个基本问题,但我对“正确”的做法很困惑。

【问题讨论】:

    标签: c# visual-studio-2010 mercurial tortoisehg bitbucket


    【解决方案1】:

    最后一个选项对我来说似乎是最直接的。使用构建菜单将您的外部解决方案/项目编译为 .dll(确保在发布模式下构建)。

    然后在您的主版本控制项目中添加对 dll 文件的引用。这不会破坏智能感知,并且您的 dll 文件将与您的源代码一起分发。

    【讨论】:

      【解决方案2】:

      在 Mercurial-natural 方式(控制源树)中,您可以考虑 Subrepository 扩展(而具有几乎相同任务的 GuestRepo 对我来说似乎更强大)或者,也许,hgforest

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-27
        • 1970-01-01
        • 2011-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-30
        相关资源
        最近更新 更多