Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 安装合并模块以及“消费”_C#_Visual Studio_Installation_Merge Module - Fatal编程技术网

C# 安装合并模块以及“消费”

C# 安装合并模块以及“消费”,c#,visual-studio,installation,merge-module,C#,Visual Studio,Installation,Merge Module,我有两个解决方案,它们代表了我在工作中构建的代码框架。一个解决方案称为“框架”,另一个解决方案称为“扩展” 我拆分它们的原因是“Extensions”解决方案包含由扩展方法组成的项目,并且对这些项目进行组织,以便生成的程序集镜像.NET程序集 我为“扩展”创建了一个合并模块项目,并创建了一个使用它的安装程序。这一切都很好,但现在我想为“框架”创建一个安装程序,它也使用相同的合并模块。因此,我想修改“Extensions”安装程序,将“Extensions”合并模块文件复制到C:\Program

我有两个解决方案,它们代表了我在工作中构建的代码框架。一个解决方案称为“框架”,另一个解决方案称为“扩展”

我拆分它们的原因是“Extensions”解决方案包含由扩展方法组成的项目,并且对这些项目进行组织,以便生成的程序集镜像.NET程序集

我为“扩展”创建了一个合并模块项目,并创建了一个使用它的安装程序。这一切都很好,但现在我想为“框架”创建一个安装程序,它也使用相同的合并模块。因此,我想修改“Extensions”安装程序,将“Extensions”合并模块文件复制到C:\Program Files\Common Files\merge Modules,以便“Framework”安装程序具有一个众所周知的路径,通过该路径可以引用“Extensions”的合并模块,而不是引用我的VS解决方案存在的任何模糊路径,原因是该框架有时会构建在不同的机器上,而VS项目的路径可能会有所不同

MSDN文档仅简要介绍了这一点,并且仅说明不能将合并模块安装到文件系统,而只能使用合并模块

失败


有人知道怎么解决这个问题吗?自定义操作?Visual Studio安装程序如何安装其合并模块?

在文件系统编辑器中创建合并模块安装程序时,有一个名为模块可重定目标文件夹的文件夹。这是默认名称,可以更改,也可以添加其他文件夹


生成.msm后,如果转到主安装项目并向其中添加合并模块,则可以在解决方案资源管理器中选择.msm,并查看属性窗口,其中应该有一个名为MergeModuleProperties的条目,展开此选项,您将看到列出的所有可重定目标文件夹,然后您可以将它们指向正确的位置。

简短的回答是:除了编写自己的安装框架之外,没有其他方法可以做到这一点。

参加聚会很晚,但是


我曾经通过重命名合并模块更改了文件扩展名,将其作为普通文件安装到文件系统中,然后重命名已安装的文件来实现这一点

不,我想你误解了我的要求-我希望主安装程序除了提取可重定目标的文件系统外,还将.msm文件放在文件系统上。在这种情况下,你能否将msm也作为另一个文件添加,并使用安装包的普通文件系统部分部署到已知位置?否;如果将.msm文件拖到文件系统视图,它只将其用作普通合并模块,即文件系统视图中不显示任何内容。现在,我放弃了整个想法,将两个解决方案合并为一个,这从一开始就不需要合并模块。