如何在Wix管理的CustomAction程序集中包含GAC'dll?

时间:2014-01-14 16:59:54

标签: c# wix

我有一个基于Wix的安装程序,带有托管(C#)CustomAction程序集。如in this question所述,我使用Wix Visual Studio扩展来构建包含在MSI中的xx.CA.dll程序集。

但是,如Custom action project templates所述:

  

“构建自定义操作项目将在目标目录中生成一个名为$(TargetName).CA.dll的附加DLL。这是要流入MSI二进制表的DLL ....

     

自定义操作构建过程将自动打包CA所依赖的任何 非GAC 程序集。 “

在我的情况下,我引用了一个Microsoft DLL,它位于我的开发和构建机器上的GAC中(因为这些机器上的构建过程需要它),但是这个MSI将在其上的目标机器运行可能没有GAC中的DLL,导致运行时异常:

System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft...' or one of its dependencies.

所以... 在构建托管的CustomAction程序集的.CA.dll版本时,如何强制Wix包含GAC程序集?


编辑删除任何特定的dll名称,因为人们专注于我提到的dll,而不是任何 GAC'dll的更大问题。

1 个答案:

答案 0 :(得分:1)

在检查包含自定义操作的项目中的引用之前,我遇到了此问题。它像你一样引用'Microsoft.Web.Administration',但CopyLocal设置为false。将其设置为true会将DLL拉入构建的MSI,一切都很顺利。