2011-04-23 64 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起作用。

相關問題