哪种视觉工作室解决方案类型适合我

本文关键字:类型 解决方案 视觉 工作室 | 更新日期: 2023-09-27 18:18:48

我现在写了一个程序,它分为3个独立的解决方案。

  1. 前端(所有与显示相关的东西)
  2. 解析器(多个(39)项目,每个项目创建一个dll来解析特定数据)
  3. 全局(多个(5)个项目,每个项目创建一个dll,由解析器解决方案中的项目和前端使用)。

需求-

  • 前端和解析器都要求全局变量在编译时存在,在运行时使用。
  • 解析器dll在运行时使用assembly.LoadReference加载。
  • 发展趋势:C:'projects'myProg
  • 部署位置为:C:'myProg

我的问题是,我一直在来回处理项目依赖关系的问题,在哪里指向我的全局dll。我是指向部署位置还是开发位置,如果是,是发布还是调试?

所以我开始查找不同的解决方案类型,我想知道我应该为我的特殊情况设置一个分区解决方案,还是一个多重解决方案。

哪种视觉工作室解决方案类型适合我

将所有项目添加到单个解决方案中。

将项目之间的引用更改为"项目引用",而不是直接引用dll文件。这将修复很多依赖问题。

如果您有任何不经常更改的"库"文件,那么您可以选择将它们移动到单独的解决方案中。它的输出应该是"预构建"的发布dll,然后您可以从主解决方案中的标准位置引用它(最好的方法是添加一个构建后步骤,将输出复制到您的开发"库二进制文件"文件夹中)。这样,构建过程就不会改变,您只需添加一个额外的步骤来获取需要的文件,并且您仍然完全控制构建过程)。这工作得很好,但是如果您需要经常更改这些预构建的dll,则会很麻烦,因此最好只用于代码库中相当静态的部分。

最后,考虑将许多项目合并到单个项目/程序集中。构建时间的杀手不是代码的数量,而是程序集的数量——在我的PC上,每个项目都会增加3秒的构建时间,所以通过合并小项目,我节省了相当多的构建时间。

因为这三个都是同一个系统的一部分,所以将每个项目添加到单个解决方案中可能会更容易。

注意:您不需要从当前位置移动任何东西。

创建一个新的空解决方案,右键单击添加>现有项目…对于您想要包含的每个项目,它们将保持在磁盘上的位置,但将一起打开。

当前的("旧的")解决方案也将可用,就像它们一样。

还要记住,如果你同时在两个VS实例中编辑同一个项目,当做了更改并保存时,它会提示你重新加载源代码。

最重要的是,将项目放在同一个解决方案中将允许您在它们之间添加引用,而不是DLL文件。

为什么它们分散到单独的项目中,将解析和全局组合到单个程序集中。保持UI程序集独立,并尽可能简单/小。

假设你有一个很好的理由有这么多项目(例如:不同数量的解析器可用于一个产品的不同许可证)。


在visual studio中管理依赖项很容易:
  • 右键单击解决方案节点

  • 选择"Project Build Order…"

确保每个项目在对话框中都不需要它下面的项目。

关于"在哪里部署":visual studio默认做得很好。如果您在调试中,它将输出到解决方案的调试文件夹,对于发布也是如此。

HTH .