Wix中未解析的符号引用

Bar*_*ğlu 6 .net c# wix wix-extension asp.net-mvc-4

我正在尝试使用Wix为MVC4应用程序创建一个安装程序.我找到了一个示例,演示了如何在此链接上为MVC4应用程序创建安装程序

但是当我尝试构建Wix安装项目时,它给出了如下错误

Error   16  Unresolved reference to symbol 'WixComponentGroup:MyWebWebComponents' 
in section 'Product:{D16E42B5-3C6F-4EE5-B2F4-727BF8B74A92}'.    
C:\Users\Baris\Desktop\New folder\WIXInstallerDemo-master\DemoWebsite.Setup\Product.wxs 15  
1   DemoWebsite.Setup

Error   17  Unresolved reference to symbol 'WixComponentGroup:DemoWebsiteIssConfiguration' 
in section 'Product:{D16E42B5-3C6F-4EE5-B2F4-727BF8B74A92}'.    
C:\Users\Baris\Desktop\New folder\WIXInstallerDemo-master\DemoWebsite.Setup\Product.wxs 16  
1   DemoWebsite.Setup`
Run Code Online (Sandbox Code Playgroud)

我尝试添加WixUIExtension作为参考,但它不起作用.

这是Product.wxs.并且功能节点的子节点会导致此错误

    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="{D16E42B5-3C6F-4EE5-B2F4-727BF8B74A92}" Name="Demo website setup" Language="1033" Version="1.0.0.0" Manufacturer="Me" UpgradeCode="9279b740-8419-45c4-9538-6a45f8e949c7">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <Media Id="1" Cabinet="DemoWebsite.cab" EmbedCab="yes" />

    <Property Id="DB_USER" Value="sa"/>
    <Property Id="DB_PASSWORD" Value="sa"/>
    <Property Id="DB_SERVER" Value="LOCAL"/>
    <Property Id="DB_DATABASE" Value="DemoWebsite"/>

    <Feature Id="ProductFeature" Title="DemoWebsite.Setup" Level="1">
      <ComponentGroupRef Id="MyWebWebComponents" />
      <ComponentGroupRef Id="DemoWebsiteIssConfiguration" />
    </Feature>
    <!-- Specify UI -->
    <UIRef Id="MyUI" />
    <Property Id="WIXUI_INSTALLDIR" Value="INETPUB" />
  </Product>

  <Fragment>
    <!-- Will default to C:\ if that is the main disk-->
    <Directory Id="TARGETDIR" Name="SourceDir">
      <!-- Will reference to C:\inetpub-->
      <Directory Id="INETPUB" Name="Inetpub">
        <!-- Will reference to c:\Inetpub\Demowebsite-->
        <Directory Id="INSTALLFOLDER" Name="DemoWebsite">
        </Directory>
      </Directory>
    </Directory>
  </Fragment>
</Wix>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我知道它非常具体,但我在网上找不到任何解决方案.

我正在使用VS 2012- Wix 4.0

taf*_*fit 6

错误消息说明了一切:它期望ComponentGroup-tag包含您的组件(包含例如文件或注册表项).如果您查看在问题中链接的示例项目,则<ComponentGroupRef Id="DemoWebsiteIssConfiguration" />-element将ComponentGroup使用名称引用a DemoWebsiteIssConfiguration.你可以在文件中找到DemoWebsite.Setup\IISConfiguration.wxs:

<ComponentGroup Id="DemoWebsiteIssConfiguration">
  <ComponentRef Id="InstallWebsite" />
  <ComponentRef Id="DemoWebsiteAppPool" />
</ComponentGroup>
Run Code Online (Sandbox Code Playgroud)

ComponentGroup包含两个组件,或者在这种情况下,包含两个组件的引用.这些组件ComponentGroup在同一文件中的-element 上面定义.

关于ComponentGroupRef具有id 的另一个MyWebComponents:引用ComponentGroup是在构建期间动态创建的.你可以看一下这个文件DemoWebsite.Setup\setup.build.此文件是用于构建设置的MSBuild文件.它包含一个名为invokes 的目标Harvest,这heat是WiX Toolset包中的另一个工具.heat将解析例如一个目录并收集其中包含的所有文件,并将它们放在ComponentGroup您可以在源文件中引用的文件中.即你定义了对a的引用ComponentGroup,然后你可以动态地创建它的内容.这样,如果在项目中添加或删除文件,您就不必费心,因为它heat会动态收集它们.

 <Target Name="Harvest">
    <!-- Harvest all content of published result -->
    <Exec
        Command='$(WixPath)heat dir $(Publish) -dr INSTALLFOLDER -ke -srd -cg MyWebWebComponents -var var.publishDir -gg -out $(WebSiteContentCode)'
        ContinueOnError="false"
        WorkingDirectory="." />
  </Target>
Run Code Online (Sandbox Code Playgroud)

ComponentGroup使用参数定义动态创建的名称-cg.您可以heat使用参数调用-?可能参数的简短描述.