【发布时间】:2014-02-28 22:00:51
【问题描述】:
背景
我正在创建一个在运行时加载程序集以执行工作的工具。它会收到一条消息,说明要处理的工作类型和其他数据,然后它会找到并加载必要的程序集。这些任务程序集中的每一个都引用一个共享程序集,并且其中许多共享一个或两个其他组件。
目前,我将每个任务都包含在自己的解决方案中。最终将有大约 50 个任务,因此在这样的巨大解决方案中开发会有点笨拙。但是,为了防止任务过时,我想创建一个大型解决方案,让我们检查对共享组件的更改是否会/不会破坏任务。
当前设置
任务 1 解决方案
- TaskBaseClasses
- Task1DataLayer
- 任务1
- 另一个共享项目
任务 2 解决方案
- TaskBaseClasses
- Task2DataLayer
- Task1DataLayer
- 任务2
- 另一个共享项目
如果我对 TaskBaseClasses 项目中的类进行更改,则必须对照包含对该更改的类的引用的其他项目检查该更改。有两个任务,这没什么大不了的。当我们有 40 或 50 个任务时,打开每个任务并进行更改将是一件非常痛苦的事情。
部署
在部署中,应用程序的设置如下: 应用程序目录
- 应用程序目录
- 任务
- 任务1
- Task1.dll
- TaskBaseClasses.dll
- 任务2
- Task2.dll
- TaskBaseClasses.dll
- 任务1
- ProcessApplication.exe
- Otherstuff.dll
- 任务
以上说明了另一个问题。当我单独构建任务时,所有共享引用都是重复的。现在这不是问题,但是当我有 50 个 TaskBaseClasses.dll 副本时
我想要的设置
所以我真的更希望(除了我较小的个人任务装配解决方案之外)有一个大型解决方案,它允许我检查所有任务在共享装配方面的一致性,并以这样的方式构建所有内容:通过在单独的地方托管共享程序集,尽可能减少二进制重复,项目可以通过相对路径引用它们。
超级解决方案
- 任务共享
- TaskBaseClasses
- Task1DataLayer
- 另一个共享项目
- 任务1
- 任务1
- 任务 2
- 任务2
- Task2DataLayer
部署
- 应用程序目录
- 任务
- 任务1
- Task1.dll
- 任务2
- Task2.dll
- 任务共享组件
- TaskBaseClasses
- Task1DataLayer
- 任务1
- ProcessApplication.exe
- Otherstuff.dll
- 任务
这可行吗?我想保留开发解决方案并创建或多或少的部署解决方案。当我开始更改部署解决方案的引用时,这不会抛弃开发解决方案中的引用吗?
我们正在使用 TFS 2012(即将升级到 2013)自动构建,我最喜欢的是每晚构建大型解决方案以供测试。
我怎样才能把蛋糕也吃掉?
【问题讨论】:
标签: .net tfs projects-and-solutions