gpt4 book ai didi

WiX 未定义的预处理器变量

转载 作者:行者123 更新时间:2023-12-03 06:40:31 33 4
gpt4 key购买 nike

我开始使用 WiX 进行自动构建以创建我的 C# 项目的 msi,但遇到错误“未定义的预处理器变量 '$(var.MyProject.TargetDir)'”

我使用的是最新的 WiX v3.0.5419。在我的 wxs 文件中,我尝试使用此网页上列出的预处理器变量 ( http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor-variables.aspx )

<Component Id="MyId" Guid="MyGuid">
<File Id="MyId" Name="MyName" KeyPath="yes"
Source="$(var.MyProject.TargetDir)\MyName.dll" />
</Component>

我已将 MyProject 的引用添加到 .wixproj,如果我在记事本中打开它,我可以看到该引用。

<ItemGroup>
<ProjectReference Include="..\MyProject.csproj">
<Name>MyProject</Name>
<Project>{guid}</Project>
<Private>True</Private>
</ProjectReference>
</ItemGroup>

这是我用来创建 msi 的 nant 构建脚本。也许是因为 .wixproj 知道构建中未使用的项目引用?

<exec basedir="${tools.wix}" managed="true" program="candle.exe">
<arg line='-out "${tools.wix.objfile}"' />
<arg value="../MySetup.wxs" />
</exec>

有人可以告诉我这个吗?

最佳答案

正如您已经说过的,您的 nant 构建脚本未使用 wixproj根本没有文件。

您在这里混合了两种不同的方式来构建 wix 设置:

  1. 您可以使用candle.exelight.exe直接使用命令行工具。这会忽略 .wixproj文件。这就是您在 nant 构建脚本中所做的事情。传递预处理器变量的值,如 $(var.MyProject.TargetDir) ,使用类似 -dMyProject.TargetDir=c:\foo 的选项.

  2. 您可以使用 votive(wix 的 Visual Studio 插件)创作 .wixproj 文件。与所有 Visual Studio 项目文件一样,wixproj 文件实际上是一个 msbuild 文件,可以使用 msbuild.exe 进行构建。 。变量如 $(var.MyProject.TargetDir)如果存在正确的项目引用,则由用于构建 wix 设置的 msbuild 任务自动设置。

我建议您使用 <msbuild> 构建 wixproj 文件nant task 。这可确保您的 nant 构建与您从 Visual Studio 手动build设置时的效果相同。

关于WiX 未定义的预处理器变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2063630/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com