Visual studio 为两个类似的产品组织Visual Studio解决方案

Visual studio 为两个类似的产品组织Visual Studio解决方案,visual-studio,projects-and-solutions,Visual Studio,Projects And Solutions,我们有一个VS2010解决方案,其中包含一个windows窗体应用程序和4个类库(DLL)项目。(类库包括BusinessTier、DataTier、CommonCode和ControlLibrary)整个类库都是针对Framework2.0的。像这样已经三年了 嗯 因此,我们的应用程序已经发展到我们希望添加一个大型新功能,而市场营销部门希望将其作为一个单独的产品进行部署的地步。我们的产品用于填写税务表格,第二个产品将填写其他税务表格 我们希望最终得到两个exe(两个安装MSI),它们将单独出售

我们有一个VS2010解决方案,其中包含一个windows窗体应用程序和4个类库(DLL)项目。(类库包括BusinessTier、DataTier、CommonCode和ControlLibrary)整个类库都是针对Framework2.0的。像这样已经三年了

因此,我们的应用程序已经发展到我们希望添加一个大型新功能,而市场营销部门希望将其作为一个单独的产品进行部署的地步。我们的产品用于填写税务表格,第二个产品将填写其他税务表格

我们希望最终得到两个exe(两个安装MSI),它们将单独出售/安装/更新,并且可以在同一台计算机上同时运行。这两个应用程序的大部分代码是相同的

我正在试图找出构建解决方案的最佳方法,以创建期望的结果

1) 选项一可以是在同一原始解决方案(例如在解决方案文件夹中)中创建一个新的EXE项目和几个新的DLL项目,这些项目具有唯一的名称、版本、GUID等,其中大多数代码文件作为链接返回到原始类似DLL中的代码文件。这允许我们拥有两个完全独立的系统,所有文件、版本号等都具有唯一的名称,但允许对每个项目/dll进行任何自定义。这是一个好主意还是矫枉过正

2) 选项二是在解决方案中创建一个新的exe项目,并链接到与第一个exe项目相同的DLL。这似乎很简单,但我不知道拥有两个使用相同DLL的项目是否是一个好主意。我真的不想使用GAC。如果我们有两个exe使用相同的Dll(即使它们将在单独的应用程序文件夹中),如果Dll具有相同/不同的版本号、名称或GUID,则会出现问题

你的想法是什么

我应该如何重组解决方案以适应新产品?

选择选项2

具有相同名称的相同DLL没有问题。如果您将EXE部署到单独的文件夹中,或者将其保存在单独的文件夹中,则无论哪种方式都可以

我甚至会更进一步,看看如何将应用程序进一步分解为更多的程序集/DLL,因为它将为您提供更大的灵活性。我也会为AssemblyInfo创建一个文件,并将其作为链接文件添加到所有项目中。这意味着您的所有DLL/EXE都有一个单一版本。

如果我们不将程序集GUID公开给COM,它是否与DLL的功能无关?程序集信息文件具有对GUID的引用。因此,将此文件作为公共文件将意味着此GUID在项目中的所有组件中都是公共的。这很好,而且一直都在进行。有很多常见的.net库一直部署在您的PC上。对于某些第三方库、Telerik、componentone和其他随机开源DLL,它们将位于您电脑上的许多不同位置。相同的程序集(在同一版本和不同版本上)将在您电脑上安装不同的应用程序。每个.net应用程序都是独立的。