修复 Jenkins 上的热错误 CI

Wix Heat Error on Jenkins CI

我正在构建依赖于 wix 安装项目的 wix 包,而 wix 安装依赖于 C# 项目。当我在本地构建时,一切都很好,但是当我在 Jenkins 上构建捆绑包时,我在尝试获取一些文件时遇到错误。热操作是预构建事件。

heat.exe : error HEAT5053: The directory 'c:\.Hudson\jobs\Project-Branch\workspace\MyProject\bin\x86\Release\Help' did not contain any files or sub-directories and since empty directories are not being kept, there was nothing to harvest

我检查了“bin\x86\Release”中的 MyProject 工作区,但文件不在那里,所以我得到这个错误是有道理的。但是,如果我不构建我的安装程序项目和我的捆绑 (bootstrap) 项目,我的文件就在那里。不知何故,它们在我的 Wix 项目构建中被删除了。有什么想法吗?

heat 命令不能是预构建事件。我有一种感觉,Jenkins 并没有在等待我的 C# 项目被构建,但我不是 100% 知道它到底在做什么。我在 AfterResolveReferences 处将 heat 更改为 运行,这仍然是预构建事件,这样可以确保在尝试任何操作之前构建任何引用。有点小众案例,但希望它能帮助遇到此问题的其他人

我不确定它是否相关,但我在构建 TFS 时遇到了类似的问题(heat.exe:错误 HEAT5053)。
我必须将我的 Winforms 项目构建为 x86。在解决方案配置管理器中将项目平台从 Any CPU 更改为 x86,将解决方案平台保留为 Any CPU,在项目属性中更改我的构建输出路径。

.csproj 将项目平台更改为 x86 后:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
    <OutputPath>bin\x86\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>

将其更改为以下代码解决了我的问题。

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>

当然你也可以通过Properties -> Build -> Output -> Output path来改变它。