鉴于:
Visual Studio 2019 Web API .Net Core 3.1
Wix 工具集 3.1.1
Windows 2016 Azure DevOps 2019
我想做的就是使用 Wix Toolset 为一个非常简单的 WebAPI 项目创建一个 .msi 文件。
如果我运行SetupProject,它会完美运行:
2> C:\Program Files (x86)\WiX Toolset v3.11\bin\candle.exe -d"DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\\" -dSolutionDir=C:\apps\Solution1\ -dSolutionExt=.sln -dSolutionFileName=Solution1.sln -dSolutionName=Solution1 -dSolutionPath=C:\apps\Solution1\Solution1.sln -dConfiguration=Release -dOutDir=bin\Release\ -dPlatform=x86 -dProjectDir=C:\apps\Solution1\SetupProject1\ -dProjectExt=.wixproj -dProjectFileName=SetupProject1.wixproj -dProjectName=SetupProject1 -dProjectPath=C:\apps\Solution1\SetupProject1\SetupProject1.wixproj -dTargetDir=C:\apps\Solution1\SetupProject1\bin\Release\ -dTargetExt=.msi -dTargetFileName=SetupProject1.msi -dTargetName=SetupProject1 -dTargetPath=C:\apps\Solution1\SetupProject1\bin\Release\SetupProject1.msi -dWebApplication1.Configuration=Release -d"WebApplication1.FullConfiguration=Release|AnyCPU" -dWebApplication1.Platform=AnyCPU -dWebApplication1.ProjectDir=C:\apps\Solution1\WebApplication1\ -dWebApplication1.ProjectExt=.csproj -dWebApplication1.ProjectFileName=WebApplication1.csproj -dWebApplication1.ProjectName=WebApplication1 -dWebApplication1.ProjectPath=C:\apps\Solution1\WebApplication1\WebApplication1.csproj -dWebApplication1.TargetDir=C:\apps\Solution1\WebApplication1\bin\Release\netcoreapp3.1\ -dWebApplication1.TargetExt=.dll -dWebApplication1.TargetFileName=WebApplication1.dll -dWebApplication1.TargetName=WebApplication1 -dWebApplication1.TargetPath=C:\apps\Solution1\WebApplication1\bin\Release\netcoreapp3.1\WebApplication1.dll -out obj\Release\ -arch x86 Product.wxs
2> C:\Program Files (x86)\WiX Toolset v3.11\bin\Light.exe -out C:\apps\Solution1\SetupProject1\bin\Release\SetupProject1.msi -pdbout C:\apps\Solution1\SetupProject1\bin\Release\SetupProject1.wixpdb -cultures:null -contentsfile obj\Release\SetupProject1.wixproj.BindContentsFileListnull.txt -outputsfile obj\Release\SetupProject1.wixproj.BindOutputsFileListnull.txt -builtoutputsfile obj\Release\SetupProject1.wixproj.BindBuiltOutputsFileListnull.txt -wixprojectfile C:\apps\Solution1\SetupProject1\SetupProject1.wixproj obj\Release\Product.wixobj
2> SetupProject1 -> C:\apps\Solution1\SetupProject1\bin\Release\SetupProject1.msi
但是,如果我在 Azure DevOps 中运行它,则 DeEnvDir 未定义,导致构建挂起(我猜测)。为了确保安全,我让它运行了 12 分钟。
d"DevEnvDir=Undefined if not building from within Visual Studio"
Compile:
C:\Program Files (x86)\WiX Toolset v3.11\bin\candle.exe -d"DevEnvDir=*Undefined if not building from within Visual Studio*" -dSolutionDir=C:\agent2\_work\4\s\ -dSolutionExt=.sln -dSolutionFileName=Solution1.sln -dSolutionName=Solution1 -dSolutionPath=C:\agent2\_work\4\s\Solution1.sln -dConfiguration=Release -dOutDir=bin\Release\ -dPlatform=x86 -dProjectDir=C:\agent2\_work\4\s\SetupProject1\ -dProjectExt=.wixproj -dProjectFileName=SetupProject1.wixproj -dProjectName=SetupProject1 -dProjectPath=C:\agent2\_work\4\s\SetupProject1\SetupProject1.wixproj -dTargetDir=C:\agent2\_work\4\s\SetupProject1\bin\Release\ -dTargetExt=.msi -dTargetFileName=SetupProject1.msi -dTargetName=SetupProject1 -dTargetPath=C:\agent2\_work\4\s\SetupProject1\bin\Release\SetupProject1.msi -dWebApplication1.Configuration=Release -d"WebApplication1.FullConfiguration=Release|AnyCPU" -dWebApplication1.Platform=AnyCPU -dWebApplication1.ProjectDir=C:\agent2\_work\4\s\WebApplication1\ -dWebApplication1.ProjectExt=.csproj -dWebApplication1.Proje...
Windows Installer XML Toolset Compiler version 3.11.2.4516
Copyright (c) .NET Foundation and contributors. All rights reserved.
最佳答案
这是因为当您在 azure devops 中构建解决方案时,没有 $(DevEnvDir)
的环境变量。您可以尝试在构建服务器上定义 DevEnvDir
环境变量或将其添加到构建定义的变量中。
关于azure - Wix 工具集 Candle 变量在 Azure Pipelines 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62270724/