如何在构建后事件中获取编译器版本?

问题描述 投票:0回答:2

我想将编译器的版本添加到自动生成的发行说明文件中。

目前,这就是我所拥有的:

echo "compiler version:" >>Release_Note.txt
MSBuild.exe -version >>Release_Note.txt

"echo "END." >>Release_Note.txt

启动此构建后事件时,失败并出现错误 9009,很可能是因为找不到文件

MSBuild.exe

在查看可能的宏时,唯一与“编程环境”相关的宏是

DevEnvDir
,在我的计算机上等于
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\

快速搜索告诉我,我的电脑上有两个文件

MSBuild.exe
,位于以下目录中:

  • C:\Program Files\Microsoft Visual Studio�2\Enterprise\MSBuild\Current\Bin
  • C:\Program Files\Microsoft Visual Studio�2\Enterprise\MSBuild\Current\Bin md64

这两个目录都不是上述

DevEnvDir
宏的子文件夹,所以我对使用它们犹豫不决。

是否有一个

$Compiler.exe
构建后事件宏,我可以用它来启动
MSBuild.exe -version
命令?

c# visual-studio msbuild post-build-event
2个回答
0
投票

MsBuild --version
返回MsBuild的版本,它(或多或少)与Visual Studio版本相关。这不是使用的 dotnet (C#) 编译器的版本。要获取构建期间使用的 .NET 版本,请使用
dotnet --version
(这将依次报告
global.json
中指定的版本(如果存在)。

要调用

dotnet
,您不必在神奇路径中搜索,因为默认路径中提供了该路径。


0
投票

看起来你的想法没有问题,我认为9009来自于msbuild认为'>>Release_Note.txt'是msbuild命令的一部分,所以整个句子被识别为路径

你想要的宏应该是$(MSBuildBinPath)

C++项目将能够找到所有宏,其他项目没有此接口。

看看这个:

https://stackoverflow.com/a/77192796/6261890

© www.soinside.com 2019 - 2024. All rights reserved.