我有一个 VS2010 解决方案,它使用自己的项目(位于该解决方案的文件夹中,因为我认为它们与该解决方案直接相关),但也重用了其他一些解决方案和项目中的代码 - 在处理该解决方案时,我意识到我已经编写了用于执行某些任务的代码,作为其他不相关程序的一部分。
我使用 TortoiseHg 将主解决方案文件夹维护为 Mercurial 存储库,但是,它不包括我的其他外部项目。当本地存储库推送到我的 BitBucket 存储库时,我的主要解决方案的代码就在那里,但外部项目的代码自然就丢失了。
如何解决这个问题?
- 保持原样对我来说很方便(尽管在硬盘驱动器上移动代码以及修改我使用的外部项目时我可能需要小心),但任何尝试构建我的 BitBucket 存储库的人都会无法这样做,因为一些关键代码基本上丢失了(他们的VS也会提示,因为sln文件指向他们没有的项目)。
- 包含所有项目可以解决问题,但需要我重做存储库的目录结构,并向只对一个解决方案感兴趣的人包含大量不相关的代码。此外,如果我通过一系列提交修改外部项目到它们自己的存储库,我还必须将所有这些更改以一个大的 blob 形式提交到此解决方案的存储库。
- 将外部项目预先构建到 dll 中,将这些 dll 附加到我的解决方案和存储库,然后忘记外部项目的源代码将是理想的选择。但是,我不知道该怎么做,而且因为没有源代码,所以使用dll会更困难吗?智能感知会崩溃吗?使用 dll 时我还会看到我的文档吗?
很抱歉问这个基本问题,但我很困惑什么是“正确”的做法。
最佳答案
最后一个选项对我来说似乎是最直接的。使用每个外部解决方案/项目的构建菜单将外部解决方案/项目编译为 .dll(确保在 Release模式下构建)。
然后在主版本控制项目中添加对 dll 文件的引用。这不会破坏智能感知,并且您的 dll 文件将与源代码一起分发。
关于c# - 将外部项目包含为 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943563/