MSB3073'命令'退出代码9009

Hig*_*ce2 13 msbuild wix command-prompt

每当我执行此命令时,它会抛出错误MSB3073,代码为9009

$(WixPath)heat dir $(Publish) -dr INSTALLFOLDER -ke -srd -cg DatoCheckerWebComponents -var var.publishDir -gg -out $(WebSiteContentCode)
Run Code Online (Sandbox Code Playgroud)

整个构建文件在这里:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <WebSiteSource>..\DatoCheckerMvc\</WebSiteSource>
        <SetupF>..\Setup\</SetupF>
        <PublishF>publish\</PublishF>
        <Publish>$(SetupF)$(PublishF)</Publish>
        <WebSiteContentCode>WebSiteContent.wxs</WebSiteContentCode>
    </PropertyGroup>

    <!-- Defining group of temporary files which is the content of the web site. -->
    <ItemGroup>
        <WebSiteContent Include="$(WebSiteContentCode)" />
    </ItemGroup>

    <!-- The list of WIX input files -->
    <ItemGroup>
        <WixCode Include="Product.wxs" />
        <WixCode Include="$(WebSiteContentCode)" />
    </ItemGroup>

    <Target Name="Build">
        <!-- Compile whole solution in release mode -->
        <MSBuild
            Projects="..\DatoCheckerMvc.sln"
            Targets="ReBuild"
            Properties="Configuration=Release" />
    </Target>

    <Target Name="PublishWebsite">
        <!-- Remove complete publish folder in order to be sure that evrything will be newly compiled -->
        <Message Text="Removing publish directory: $(SetupF)"/>
        <RemoveDir Directories="$(SetupF)" ContinueOnError="false" />
        <Message Text="Start to publish website" Importance="high" />
        <MSBuild
            Projects="..\\DatoCheckerMvc\DatoCheckerMvc.csproj"
            Targets="ResolveReferences;_CopyWebApplication"
            Properties="OutDir=$(Publish)bin\;WebProjectOutputDir= $(Publish);Configuration=Release" />
    </Target>

    <Target Name="Harvest">
        <!-- Harvest all content of published result -->
        <Exec Command='$(WixPath)heat dir $(Publish) -dr INSTALLFOLDER -ke -srd -cg DatoCheckerWebComponents -var var.publishDir -gg -out $(WebSiteContentCode)'
            ContinueOnError="false"
            WorkingDirectory="." />
    </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

我用来调用这个版本的命令是:

 msbuild /t:Build;PublisWebsite;Harvest setup.build
Run Code Online (Sandbox Code Playgroud)

我应该做些什么?

sti*_*ijn 18

从cmd退出代码9009基本上意味着'命令未找到'.换句话说$(WixPath)heat,没有指向可执行的东西,这是可能的,因为我没有在所显示的代码中的任何地方看到属性WixPath.调试此方法的一种快速方法是使用Message具有相同参数的任务,Exec以便您可以确切地看到尝试执行的内容.

<Message Text='$(WixPath)heat dir $(Publish) -dr INSTALLFOLDER ....'/>
Run Code Online (Sandbox Code Playgroud)

将输出粘贴到命令行,运行它并检查它是否执行.


Bar*_*ğlu 7

我改变了下面的命令,因为我使用VS2010和Wix 3.8并且它有效.

Command='"$(WiX)bin\heat.exe" dir $(Publish) -dr INSTALLFOLDER -ke -srd -cg DatoCheckerWebComponents -var var.publishDir -gg -out $(WebSiteContentCode)'
Run Code Online (Sandbox Code Playgroud)

对我来说问题是找不到以下目录中的heat.exe.