C# VS 2010安装程序项目未将共享引用程序集携带到所有输出

C# VS 2010安装程序项目未将共享引用程序集携带到所有输出,c#,.net,visual-studio-2010,installation,installation-package,C#,.net,Visual Studio 2010,Installation,Installation Package,我正在为C#解决方案设置安装程序项目,遇到了一个依赖性问题: 在我的解决方案中,我有4个独立的项目输出——一个windows服务和三个可执行文件,它们之间共享一些引用 我需要安装程序安装所有四个,以便解决方案的工作 我已经在“目标计算机上的文件系统”对话框的“应用程序文件夹”下为每个项目输出设置了一个安装文件夹,并在其文件夹中成功添加了windows服务的项目输出。但是,当我继续尝试将可执行文件的项目输出添加到其文件夹中时,已加载到windows服务文件夹中的程序集不会加载到可执行文件夹中,并且

我正在为C#解决方案设置安装程序项目,遇到了一个依赖性问题:

在我的解决方案中,我有4个独立的项目输出——一个windows服务和三个可执行文件,它们之间共享一些引用

我需要安装程序安装所有四个,以便解决方案的工作

我已经在“目标计算机上的文件系统”对话框的“应用程序文件夹”下为每个项目输出设置了一个安装文件夹,并在其文件夹中成功添加了windows服务的项目输出。但是,当我继续尝试将可执行文件的项目输出添加到其文件夹中时,已加载到windows服务文件夹中的程序集不会加载到可执行文件夹中,并且在安装之后,可执行文件不会运行,因为它们缺少依赖项

我可以手动将缺少的程序集添加到可执行文件的文件夹中,但似乎这不是应该怎么做的,我缺少一些东西


有什么想法吗?

您应该在解决方案中创建一个新项目,并将“安装程序”设置为主应用程序(或主应用程序)的输出,它应该解决依赖项本身

我遇到了我认为是最初描述的问题。我有一个Winform应用程序和一个控制台应用程序作为两个独立的项目,但是一个安装项目可以处理这两个项目

Winform应用程序和console应用程序都使用相同的两个外部程序集:一个不是解决方案的一部分(引用文件夹中的文件),另一个来自C#类项目(引用项目)

我发现,安装程序假定项目输出全部合并到安装机器上的单个文件夹中。因此,所有公共程序集也将与需要它们的可执行文件共存。因此,如果将第一个可执行文件的项目输出添加到文件夹中,这就是为什么会显示其所有依赖项,然后在添加第二个项目输出时,只会显示尚未添加的程序集

无论您是否在应用程序文件夹下创建子文件夹,Visual Studio似乎将应用程序文件夹视为一个整体。。。就项目输出(exe、dll和res)而言

有两种方法可以解决这个问题。第一个是为每个可执行文件创建一个单独的安装项目。在一个大型项目中,这可能是许多设置项目

如果希望将所有内容都保存在一次安装中,更好的选择是对共享程序集使用GAC,这在另一篇堆栈溢出文章中有描述:

MSI可以完成这项工作。右键单击“目标计算机上的文件系统”, 加上,GAC。右键单击添加的文件夹,添加,项目输出。那个 确保装配是gac-ed的


在我看来,GAC是更好的解决方案,因为如果以后对程序集进行更改和增强,程序集将由.NET层管理。NET的好处之一是消除了Win98和以前版本的Windows中的旧“DLL地狱”问题。我强烈建议将其用于您的通用代码。

很抱歉,我不理解上面的任何内容。我应该在解决方案中创建什么新项目,目的是什么?将安装程序设置为主应用程序的输出是什么意思?请尽量详细说明。谢谢。是的,安装程序应该将输出设置为要部署的任何应用程序。引用应该自己解决,并且在属性中,您应该能够定义以何种方式部署程序集。但我真的不确定我们是否在谈论同一件事。