我使用 Visual Studio 2010 在 .net 框架 4.0 上开发和构建。我还将托管可扩展性框架用于基本插件系统。
我有 2 个解决方案:
主要解决方案有 6 个项目,一个是可执行的,另外 5 个是类库。它们相互引用,并内置在解决方案级别的 bin 文件夹中(bin 文件夹位于项目文件夹旁边)。这样所有构建的 bin 文件都在同一个文件夹中,MEF 可以将所有 DLL-s 收集到一个简单的 DirectoryCatalog 中。
这很好用(除了一件事,启动应用程序不会重建所有其他项目,因为它们不是依赖项,但这不是这个问题的意义所在)。
另一个(扩展)解决方案有 2 个项目,它们都是类库,应该以某种方式添加到 MEF 用来构建它的目录的目录中。
有几种方法可以做到这一点,我只是找不到最干净的一种。
所以要解决的问题是:
扩展解决方案的项目引用了第一个解决方案中的项目,因此我在添加引用屏幕上导航到主解决方案的 bin 文件夹并添加了所有必需的引用。参考资料会在构建主要解决方案时更新,还是我需要以某种方式手动复制 DLL-s?
- 智能感知应该识别更改,因此在更改和构建主要解决方案后应该识别并且智能感知应该在编辑扩展解决方案时更新。
- 主要解决方案是可自行构建的,对扩展解决方案一无所知。让我们保持这种状态。我不会将构建任务写入将 dll 复制到其他解决方案文件夹的主解决方案。
- 解决方案托管在 SVN 服务器上。如果在新计算机上使用 ankhsvn 获得解决方案并构建这两种解决方案不需要进一步配置,那将是一个很大的优势。
在构建扩展解决方案的项目时,应将 DLL-s 复制到 MEF 用于其目录的目录(主解决方案的 bin 目录)。如果它也能从 svn 中获得新鲜感,那就太好了。这可以通过构建任务来完成,但引用其他解决方案文件夹的最佳方式是什么?
- 我认为,如果解决方案目录必须彼此相邻(并且具有默认名称)才能工作(这样我可以使用其他级别的 ../ 来引用它),这不会是一个很好的折衷方案。这是一个体面的解决方案吗?有什么我不知道的缺点吗?