NAnt中的msbuild任务不会在Prebuild中编译WiX项目

Ran*_*esh 1 msbuild nant wix nantcontrib visual-studio

此WiX安装项目在Visual Studio中编译没有问题.

但是,使用msbuild任务在NAnt中运行它会显示以下错误.

热预建事件:

"$(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"  
Run Code Online (Sandbox Code Playgroud)

msbuild任务:

<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>
Run Code Online (Sandbox Code Playgroud)

错误信息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
Run Code Online (Sandbox Code Playgroud)

Isa*_*110 5

在您的情况下,问题在于$(SolutionDir)属性而不是您的预处理器.问题是属性$(SolutionDir)没有定义,这就是错误的原因.MSBuild没有定义SolutionDir属性,因此您需要手动指定它:

msbuild.exe /p:SolutionDir=
Run Code Online (Sandbox Code Playgroud)

是否使用VS正确评估了预处理器变量(AppAppPath)?我认为你需要做这样的事情来获得正确的价值:http: //www.ageektrapped.com/blog/setting-properties-for-wix-in-msbuild/

  • 请将其标记为您原始问题的答案并创建一个新问题。你不能一直编辑同样的问题,想想其他将要使用这个论坛的人,这应该对每个人都有用。 (2认同)