2014-02-03 7 views
1

Этот проект установки WiX компилируется в Visual Studio без проблем.Задача msbuild в NAnt не компилирует проект WiX в Prebuild

Однако запуск его в NAnt с использованием задачи msbuild показывает следующую ошибку.

тепла Prebuild событие:

"$(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 задача:

<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> 

Сообщение об ошибке 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 
+0

какая переменная препроцессора вы используете в событии предварительной сборки? – Isaiah4110

+0

«AppAppPath» - это препроцессорная переменная. Я добавил событие prebuild к проблеме. –

ответ

5

В вашем случае, вопрос с $ недвижимости (SolutionDir) а не ваш предварительный процессор. Проблема в том, что свойство $ (SolutionDir) не определяется, и поэтому ошибка. MSBuild не определяет свойство SolutionDir так что вам необходимо вручную указать его:

msbuild.exe /p:SolutionDir= 

ли переменная препроцессор (AppAppPath) получить оценку правильно используя VS? Я думал, что вам нужно сделать что-то вроде этого, чтобы получить правильное значение: http://www.ageektrapped.com/blog/setting-properties-for-wix-in-msbuild/

+0

Я добавил SolutionDir в задачу msbuild, и событие Prebuild прошло успешно. Теперь SignOutput выходит из строя с ошибками MSB3073. См. Ошибку в вопросе обновления –

+1

Пожалуйста, отметьте это ответ на свой вопрос и создайте новый вопрос. Вы не можете продолжать редактирование того же вопроса, подумайте о других людях, которые будут использовать этот форум, это должно быть полезно для всех. – Isaiah4110

+0

anyways не смог противостоять публикации этой проблемы пути, что я увидел «E: \ Projects \ Company \ R oCo \ Development \ trunk \ src \ App_Shell \ App.csproj" есть ли папка с именем «Roco», это не похоже на то, что путь, на который вы хотите найти его, на основе других файлов и путей, которые вы разместили. В любом случае, проверьте это. – Isaiah4110