包括外部项目作为dll

时间:2012-10-17 21:19:27

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

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

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

如何解决这个问题?

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

对不起基本问题,但我很担心“正确”的做法是什么。

2 个答案:

答案 0 :(得分:2)

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

然后将主版本控制项目中的引用添加到dll文件中。这不会破坏intellisense,你的dll文件将与你的源代码一起分发。

答案 1 :(得分:0)

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