Utilisation de $(OS) , comme documenté dans d'autres réponses, peut faire la distinction entre Windows_NT et Unix (qui inclut à la fois Linux et macOS), mais pas entre différents systèmes de type Unix. Si vous utilisez MSBuild 15.3 ou une version ultérieure (ce qui est très probable), vous pouvez envisager d'utiliser [MSBuild]::IsOsPlatform() :
<Exec Command="./foo.sh" Condition="$([MSBuild]::IsOSPlatform('Linux'))" />
L'argument peut être le nom de n'importe quel OsPlatform membre.
La variable est $(OS) , généralement vérifié pour être ou ne pas être Windows_NT :
<Exec Command="./foo.sh" Condition=" '$(OS)' != 'Windows_NT' " />