在C#的csproj项目中添加指定平台才执行的PostBuild命令

    其实需求也很简单,现在.NET项目也能跨平台了,我的项目需要使用python执行一个post_build.py,所以需要在项目中添加PostBuild。所以最初,我添加了这样一个PostBuild:

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
        <Exec Command="python $(SolutionDir)..\Scripts\post_build.py --outputType=$(OutputType) --targetDir=$(TargetDir) --projectDir=$(ProjectDir) --projectName=$(ProjectName) --configurationName=$(ConfigurationName)" />
    </Target>

    只要机器上安装了Python,那么这个命令将不会有任何问题(Windows环境下)。不过当我将项目拿到MacOS下编译时,那么就遇到了问题。因为截止到目前,MacOS下的默认的python是python2,而我的脚本是按照python3的标准写的,因此在MacOS下执行就会有问题。因此有两个选择:

  1. 把脚本改成python2兼容的? 但是我不想这么干。

  2. 让PostBuild可以按照条件执行。在Windows下调用python,MacOS下调用python3。我选择的是这个。因此最终的PostBuild看起来像这样:   

 

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
        <Exec Command="python $(SolutionDir)..\Scripts\post_build.py --outputType=$(OutputType) --targetDir=$(TargetDir) --projectDir=$(ProjectDir) --projectName=$(ProjectName) --configurationName=$(ConfigurationName)" Condition="$([MSBuild]::IsOSPlatform('Windows'))"/>
        <Exec Command="python3 $(SolutionDir)..\Scripts\post_build.py --outputType=$(OutputType) --targetDir=$(TargetDir) --projectDir=$(ProjectDir) --projectName=$(ProjectName) --configurationName=$(ConfigurationName)" Condition="$([MSBuild]::IsOSPlatform('MacOS'))"/>
    </Target>

 

 

 

 

参考:https://learn.microsoft.com/en-us/visualstudio/msbuild/property-functions?view=vs-2022

 

posted @   bodong  阅读(233)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示