1

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

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

我该如何解决这个问题?

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

很抱歉这个基本问题,但我很困惑这样做的“正确”方式是什么。

4

2 回答 2

2

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

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

于 2012-10-17T21:22:56.003 回答
0

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

于 2012-10-17T21:51:00.900 回答