WiX可以引用名称中带有句点的项目吗?

Ste*_*ngs 11 xml wix visual-studio

WiX文件可以使用$(var.ProjectName.TargetPath)语法引用其他项目.但是,我有一个名称为(My.Project)的项目.我怎么能参考这个?我试过了:

  • $(var.My.Project.TargetPath)
  • $(var.My.Project.TargetPath)
  • $(var.My\.Project.TargetPath)
  • $(var.{My.Project}.TargetPath)
  • $(var.(My.Project).TargetPath)
  • $(var.[My.Project].TargetPath)
  • $(var.MyProject.TargetPath)
  • $(var.My%2EProject.TargetPath)

我得到的构建错误是:

未定义的预处理器变量'$(var.My.Project.TargetPath)'

Ste*_*ngs 14

答案是肯定的,方法是:

$(var.My.Project.TargetPath)
Run Code Online (Sandbox Code Playgroud)

事实证明,我是一个忘记添加项目引用到他的安装程序项目的人.

  • 尝试提升您对可见性的评论.我有同样的问题和相同的原因. (2认同)

Chr*_*ter 8

对不起,我正在使用WiX 3.5,我无法重现你的问题.我创建了一个示例解决方案,其中包含一个名为"Foo.Bar"的类库和一个带有"Foo.Bar"项目引用的合并模块.

我的wixproj看起来像:

  <ItemGroup>
    <ProjectReference Include="..\Foo.Bar\Foo.Bar.csproj">
      <Name>Foo.Bar</Name>
      <Project>{0bd367ce-5072-4161-8447-ff4deed97bd4}</Project>
      <Private>True</Private>
      <DoNotHarvest>True</DoNotHarvest>
      <RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
      <RefTargetDir>INSTALLLOCATION</RefTargetDir>
    </ProjectReference>
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我的wxs看起来像:

<Binary Id="TEST" SourceFile="$(var.Foo.Bar.TargetPath)"/>
Run Code Online (Sandbox Code Playgroud)