visual-studiomsbuildwixnantnantcontrib

msbuild task in NAnt does not compile WiX project in Prebuild


This WiX Setup project compiles in Visual Studio without a problem.

However, running it in NAnt using the msbuild task shows the following error.

Heat Prebuild event:

"$(SolutionDir)\App_Tools\WiX Toolset v3.8\bin\heat.exe" dir "$(SolutionDir)\App_Shell \bin\$(ConfigurationName)" -dr "AppDirectory" -cg "AppComponentGroup" -t   "$(ProjectDir)Filter.xslt" -gg -g1 -sf -srd -sreg -var "var.AppAppPath" -out   "$(ProjectDir)\App_HarvestedHeatFile.wxs"  

msbuild task:

<msbuild project="App_Installers\App.Setup\App.Setup.wixproj">
        <property name="Configuration" value="Release"/>
        <property name="target" value="Rebuild"/>
        <property name="verbosity" value="Normal"/>
</msbuild>

Error message Prebuild:

  [msbuild] Build started 03.02.2014 15:38:35.
  [msbuild] Project "E:\Projects\Company\App\Development\trunk\src\App_Inst
allers\App.Setup\App.Setup.wixproj" on node 1 (default targets).
  [msbuild] AssignCultures:
  [msbuild]   Culture: en-US
  [msbuild]   Culture: de-DE
  [msbuild] PreBuildEvent:
  [msbuild]   "*Undefined if not building a solution or within Visual Studio*\App_Tools\WiX Toolset v3.8\bin\heat.exe" dir "*Undefined if not building a soluti
on or within Visual Studio*\App_Shell\bin\Release" -dr "AppDirectory" -cg "AppComponentGroup" -t "E:\Projects\Company\App\Development\trunk\src\App_Inst
allers\App.Setup\Filter.xslt" -gg -g1 -sf -srd -sreg -var "var.AppAppPath" -ou
t "E:\Projects\Company\App\Development\trunk\src\App_Installers\App.Setup\
\App_HarvestedHeatFile.wxs"
  [msbuild]   The system cannot find the path specified.
  [msbuild] C:\Program Files (x86)\MSBuild\Microsoft\WiX\v3.x\wix2010.targets(81
6,5): error MSB3073: The command ""*Undefined if not building a solution or with
in Visual Studio*\App_Tools\WiX Toolset v3.8\bin\heat.exe" dir "*Undefined if n
ot building a solution or within Visual Studio*\App_Shell\bin\Release" -dr "AppDirectory" -cg "AppComponentGroup" -t "E:\Projects\Company\App\Development
\trunk\src\App_Installers\App.Setup\Filter.xslt" -gg -g1 -sf -srd -sreg -var "
var.AppAppPath" -out "E:\Projects\Company\App\Development\trunk\src\App_In
stallers\App.Setup\\App_HarvestedHeatFile.wxs"" exited with code 3. [E:\Projec
ts\Company\App\Development\trunk\src\App_Installers\App.Setup\App.Setup.w
ixproj]
  [msbuild] Done Building Project "E:\Projects\Company\App\Development\trunk
\src\App_Installers\App.Setup\App.Setup.wixproj" (default targets) -- FAILED.

  [msbuild]
  [msbuild] Build FAILED.
  [msbuild]
  [msbuild] "E:\Projects\Company\App\Development\trunk\src\App_Installers\R
oCo.Setup\App.Setup.wixproj" (default target) (1) ->
  [msbuild] (PreBuildEvent target) ->
  [msbuild]   C:\Program Files (x86)\MSBuild\Microsoft\WiX\v3.x\wix2010.targets(
816,5): error MSB3073: The command ""*Undefined if not building a solution or wi
thin Visual Studio*\App_Tools\WiX Toolset v3.8\bin\heat.exe" dir "*Undefined if
 not building a solution or within Visual Studio*\App_Shell\bin\Release" -dr "R
oCoDirectory" -cg "AppComponentGroup" -t "E:\Projects\Company\App\Developme
nt\trunk\src\App_Installers\App.Setup\Filter.xslt" -gg -g1 -sf -srd -sreg -var
 "var.AppAppPath" -out "E:\Projects\Company\App\Development\trunk\src\App_
Installers\App.Setup\\App_HarvestedHeatFile.wxs"" exited with code 3. [E:\Proj
ects\Company\App\Development\trunk\src\App_Installers\App.Setup\App.Setup
.wixproj]
  [msbuild]
  [msbuild]     0 Warning(s)
  [msbuild]     1 Error(s)
  [msbuild]
  [msbuild] Time Elapsed 00:00:00.10

BUILD FAILED

Solution

  • In your case, the issue is with the $(SolutionDir) property and not your pre-processor. The issue is that the property $(SolutionDir) is not getting defined and thats why the error. MSBuild does not define the SolutionDir property so you'll need to manually specify it:

    msbuild.exe /p:SolutionDir=
    

    Did the pre-processor variable (AppAppPath) get evaluated properly using VS? I was thinking that you need to do something like this to get the right value: http://www.ageektrapped.com/blog/setting-properties-for-wix-in-msbuild/