使用 $(env.VCINSTALLDIR)在蜡烛中失败.exe并带有CNDL0150



我需要使用环境变量。

CMD提示符显示以下内容

VCINSTALLDIR=C:Program Files (x86)Microsoft Visual Studio2019ProfessionalVC

现在我尝试使用它

<Merge Id='VC_CRT_x86' 
Language='0' 
SourceFile='$(env.VCINSTALLDIR)RedistMSVC14.16.27012MergeModulesMicrosoft_VC141_CRT_x86.msm'  
DiskId='1' 
/>

但我明白了

error CNDL0150: Undefined preprocessor variable '$(env.VCINSTALLDIR)'.

使用完整路径有效。

我从VS-2019环境中编译。

编辑:当我使用一个简单的CMD窗口并使用蜡烛.exe从那里。一切正常。环境变量不会在VS-2019中传递。

编辑2:使用devenv.exe /build release mywxsproject.sln也有效!

更新 :首先是关于环境变量和正在运行的进程问题的几个链接:

  • 更改正在运行的进程的环境变量?
  • 是否有命令可以从 Windows 中的命令提示符刷新环境变量?

cmd.exe :您可能是从Visual Studio Developer Command Prompt执行"set",而不是从常规cmd.exe执行"set"=>会产生实际环境变量的错误列表。

Visual Studio Developer Command Prompt Visual Studio Developer Command Prompt本质上是一个批处理文件,它通过许多开发人员调整启动cmd.exe。我不知道这一切是如何运作的,但这就是本质。我们可能需要召唤Mr. Heath Stewart才能弄清楚这一点?

WiX 变量:我做了一个冒烟测试,如果环境变量是从环境变量小程序设置的,$(env.MY_VALUE_HERE)构造应该解决:

rundll32.exe sysdm.cpl,EditEnvironmentVariables

Windows键,点击R,粘贴上述内容并按Enter键。

解决方案: 在修复领域,我不确定该建议什么,因为我不知道详细的目的是什么。我怀疑您希望所有内容都"开箱即用",但我只是将您需要的所有合并模块复制到您组装设置的发布区域:

像这样:

  • $(env.VCINSTALLDIR)RedistMSVC14.16.27012MergeModulesMicrosoft_VC141_CRT_x86.msm

  • \ReleasesCommonMergeModulesMicrosoft_VC141_CRT_x86.msm

相关内容

最新更新