首页 > 编程语言 >在C#的csproj项目中添加平台检测

在C#的csproj项目中添加平台检测

时间:2023-03-10 09:25:06浏览次数:46  
标签:MacOS 项目 C# csproj PostBuild python 添加

    其实需求也很简单,现在.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" Condition="$([MSBuild]::IsOSPlatform('Windows'))">
        <Exec Command="python $(SolutionDir)..\Scripts\post_build.py --outputType=$(OutputType) --targetDir=$(TargetDir) --projectDir=$(ProjectDir) --projectName=$(ProjectName) --configurationName=$(ConfigurationName)" />
    </Target>
    <Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$([MSBuild]::IsOSPlatform('MacOS'))">
        <Exec Command="python3 $(SolutionDir)..\Scripts\post_build.py --outputType=$(OutputType) --targetDir=$(TargetDir) --projectDir=$(ProjectDir) --projectName=$(ProjectName) --configurationName=$(ConfigurationName)" />
    </Target>

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

 

标签:MacOS,项目,C#,csproj,PostBuild,python,添加
From: https://www.cnblogs.com/bodong/p/17202228.html

相关文章

  • MFC-GetWindowThreadProcessId获取指定窗口线程ID和进程ID
     HWNDhWnd=::FindWindow(NULL,_T("sss.txt-记事本"));DWORDdwTID=0;DWORDdwPID=NULL;dwTID=::GetWindowThreadProcessId(hWnd,&dwPID......
  • java的byte和C#的byte的不同之处
    Javabytejavabyte是做为最小的数字来处理的,因此它的值域被定义为-128~127,byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。在计算机中,8位......
  • calico的两种网络模式BGP和IP-IP性能分析 iperf3
    转载自:https://www.cnblogs.com/dgp-zjz/p/13212416.html======== 原文链接:https://mp.weixin.qq.com/s/688PEOWBhXxDz0eQpd1ydw目前使用较多的网络插件有flannel,cali......
  • celery在Django项目中的使用案例
    一、逻辑分析第一步:在项目根目录新建包第二步:在使用提交异步任务的位置,导入使用即可视图函数中使用,导入任务任务.delay()#提交任务第三步:启动worker,如果有定时任......
  • oracle触发器详解
    原文地址: https://www.cnblogs.com/programmer-wind/archive/2011/09/10/2919585.html触发器是许多关系数据库系统都提供的一项技术。在ORACLE系统里,触发器类似过程和函......
  • 当k8s做集群高可用的时候,需要将另一个master加入到当前master failure loading certif
      解决办法:[root@k8s-master2~]#mkdir-pv/etc/kubernetes/pkimkdir:createddirectory‘/etc/kubernetes/pki’[root@k8s-master2~]#mkdir-pv/etc/kuberne......
  • 在CentOS中用Linux命令行测试网速/带宽安装
    导读在使用Centos的时候,有没有想过,如果不用测速网站的话,如何测试网络速度呢?下面分享一个使用speedtest的方法。安装speedtest-clispeedtest-cli是一个用Python编......
  • ChatGPT
    GPT即GenerativePre-trainedTransformer,其中GenerativePre-trained利用简单的对文章进行挖空训练,跳过了数据集的人工标注过程,使得模型可以将一切人类的文章作为训练集,搭......
  • CentOS7 安装 docker
    CentOS7安装卸载docker查看内核版本,需要3.10以上uname-r更新yum软件包索引yummakecachefast卸载旧版本yumremovedocker\docker-cli......
  • C++常用查找算法 find
    功能描述:查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end()#include<iostream>#include<vector>#include<functional>#include<algorithm>#include......