在Visual Studio中检测Wix中未使用的组件

时间:2014-04-29 06:05:13

标签: wix

我在Visual Studio 2010中使用wix 3.8。

如果我在wxs文件中的片段中有2个组件,并且我只在一个功能中引用其中一个组件,则会出现ICE21错误,即存在未使用的组件。

如果我有一个带有组件的wxs文件,其中没有任何组件是功能的一部分,我没有得到任何错误,组件只是被静默跳过。

这是理想的行为吗?在这种情况下,有没有办法强制显示错误消息?

我问的原因是我计划使用wix创建一个安装程序,开发人员自己负责向安装程序添加新文件和组件。有一种方法可以确保他们(我们)不会忘记在功能中包含新组件。

1 个答案:

答案 0 :(得分:1)

片段描述from the documentation,我强调了它应该回答你问题的部分:

  

Fragment元素是创建安装程序的构建块   WiX中的数据库。一旦定义,Fragment就变成了一个不可变的,   原子单位,可以完全包含在一个或从中排除   产品。 Fragment元素的内容可以链接到一个   产品利用众多* Ref元素中的一种。 在链接时   片段,有必要链接所有单独的单位。   例如,如果给定的Fragment包含两个Component元素,那么   必须使用ComponentRef为每个链接在两个功能下链接   零件。否则,您将收到链接器警告并拥有   浮动组件未出现在任何功能下。

因此,如果任何组件被引用到功能中,那么包含其所有组件的完整片段将被拉入构建中并向您发出警告/错误,表明您拥有孤立组件。

在第一种情况下,您在同一个片段中有两个组件,并且您只引用了一个,并且第二个组件出错。

如果你有一个包含许多组件的片段,并且你没有引用它们中的任何一个,那么Wix根本不会读取该片段。

在第二种情况下,所有组件都在同一个片段中,但没有任何组件被引用到Feature中,因此没有错误,因为根本没有使用该片段。