2011-04-23 40 views
9

WiX文件可以使用reference other projects using $(var.ProjectName.TargetPath)语法。但是,我有一个以名称命名的项目(My.Project)。我该如何参考?我曾尝试:WiX可以引用名称中包含句点的项目吗?

  • $(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)'

回答

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> 

我WXS的样子:

<Binary Id="TEST" SourceFile="$(var.Foo.Bar.TargetPath)"/> 
+0

对不起,浪费你的时间,事实证明这是我自己的错。 – 2011-04-23 02:09:32

+1

这不是浪费时间。我学到了一些新东西,在添加引用之后,如果将来有这样的问题,我总是可以手动更新Name元素。 – 2011-04-23 12:18:32

12

答案是肯定的,而且方法:

$(var.My.Project.TargetPath) 

事实证明,我是谁忘了项目引用添加到自己的安装项目中的涂料。

+1

试图upvote您的知名度的评论。我有同样的问题和原因。 – ReiMasuro 2014-04-23 09:52:57

+0

哦,伙计!我也浪费了太多的时间来看我也做了同样的傻事:) – vinayan 2016-08-08 05:50:30

0

在我来说,我有大小写问题:

$(var.SomePrefix.MyProject.TargetPath) 

没有与工作名为

"SomePrefix.Myproject" 

重命名项目后,它在MyProject中以大写字母P起作用。

相关问题