msbuild - MSB3073 'command' 退出,代码 9009

标签 msbuild wix command-prompt

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

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

整个构建文件在这里:

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

我用来调用此构建的命令是:

 msbuild /t:Build;PublisWebsite;Harvest setup.build

我该怎么办?

最佳答案

cmd 的退出代码 9009 基本上意味着“找不到命令”。换句话说,$(WixPath)heat 并不指向可执行文件,这可能是因为我在显示的代码中的任何位置都没有看到属性 WixPath。调试此问题的快速方法是使用 Message 任务,其参数与 Exec 相同,这样您就可以准确地看到正在尝试执行的内容。

<Message Text='$(WixPath)heat dir $(Publish) -dr INSTALLFOLDER ....'/>

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

关于msbuild - MSB3073 'command' 退出,代码 9009,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22730003/

相关文章:

c# - 发布同一 ClickOnce 应用程序的多个版本的最佳方式是什么?

msbuild - 如何在 Visual Studio 2017 为我创建的 NuGet 包中包含我的类库旁边的文本文件?

xml - Wix 工具集自定义 UI 查看器

wix - 错误4 : SELECT `Message` FROM `Error` WHERE `Error` = 2898

Wix 丢弃标记为 NeverOverWrite ="yes"的组件

git - 显示 git 分支名称或提交 ID

nuget 不被识别为内部或外部命令

visual-studio - MS-Build 2017 "Microsoft.WebApplication.targets "丢失

msbuild - 为什么 SQL Server 2014 数据库项目的 SqlPublish 目标会失败?

java - 如何制作包含多个类的 .jar 文件?