设为首页 加入收藏

TOP

用Python3、NetCore、Shell分别开发一个Ubuntu版的定时提醒(附NetCore跨平台两种发布方式)(一)
2018-10-19 16:46:13 】 浏览:39
Tags:Python3 NetCore Shell 分别 开发 一个 Ubuntu 定时 提醒 跨平台 发布 方式

汇总系列:https://www.cnblogs.com/dunitian/p/4822808.html#ai

Python3 与 C# 基础语法对比:https://www.cnblogs.com/dotnetcrazy/p/9102030.html

新增直接运行py文件的补充:请在py前面加上:#!/usr/bin/env python3 然后再执行 sudo chmod +x ./task.py 下次运行直接 ./task.py

平时经常用定时提醒来提高工作效率,到了Linux。。。。蒙圈了,以前C#写的不能跨平台啊,于是就有了这篇文章~(有些人喜欢用番茄工作法,这个算是个福利了)

跳转到Python:https://www.cnblogs.com/dotnetcrazy/p/9111200.html#python

先NetCore吧:(old code:me

核心代码:Process.Start("notify-send", "友情提醒 10分钟过去了");

原理说明:调用了ubuntu的notify-send的弹窗提醒,自己控制循环和定时

补充知识:RuntimeInformation.IsOSPlatform(OSPlatform.xxx) 这个来判断是什么系统,OSPlatform是一个结构体

定时提醒:Thread.Sleep(new TimeSpan(0, 10, 0));

代码比较简单就不详说了,主要讲讲环境部署+发布

using System;
using System.Threading;
using System.Diagnostics;
using System.Runtime.InteropServices;

//Old: https://github.com/dunitian/DNTLive/blob/master/Software/LoTTimer/Program.cs
namespace netcore
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                try
                {
                    Console.WriteLine(DateTime.Now.ToString());
                    Thread.Sleep(new TimeSpan(0, 10, 0));
                    MyBeep();
                }
                catch
                {
                    //异常还不结束?
                    break;
                }
            }
        }
        private static void MyBeep()
        {
            if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
            {
                Console.WriteLine("当前系统为Linux");
                Process.Start("notify-send", "友情提醒 10分钟过去了");
                //用shell启动指定程序+命令
                //Process.Start(new ProcessStartInfo("notify-send", "友情提醒 10分钟过去了") { RedirectStandardOutput = true });
            }
            else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                Console.WriteLine("当前系统为Windows");
                // frequency:提示音的频率,介于 37 到 32767 赫兹之间。// duration:提示音的持续时间,以毫秒为单位。
                Console.Beep(500, 1500);
            }
            else
            {
                Console.WriteLine("精力有限,暂不支持");
            }
        }
    }
}

来走一个流程:(基本上跟官网走一遍,我贴几个链接和图)

我以前写的文章:https://www.cnblogs.com/dunitian/p/6745562.html#netcore2.1

官方文档(多看看官方文档):https://www.microsoft.com/net/download/linux-package-manager/ubuntu18-04/sdk-current

2.创建一个netcore的console应用:dotnet new console

3.安装VSCode(直接下载安装deb包即可):http://www.cnblogs.com/dunitian/p/6661644.html

4.安装VSCode的C#扩展

5.打开刚才那个文件夹,F5试运行一下,新版的貌似不用自己配置运行路径什么的了

6.刚才代码贴了,coding一下。调试运行什么的和win下没什么大区别

7.1发布吧,讲一下官方推荐的发布方式(适合开发人员),到项目目录下,Ctrl+ALT+T调出终端==》 dotnet publish –c release

参考:https://docs.microsoft.com/zh-cn/dotnet/core/deploying/deploy-with-cli

这种轻量级方式发布,把这两个文件弄出去就ok了

运行效果:dotnet xxx.dll,如果你改了程序名字,对应配置名字也记得改哦~

7.2发布第二种方式【很多人不是开发人员也不想装runtime】(指定应用程序运行时(自宿主应用),这种方式将会把指定平台的Core CLR打包进去):

发布前先做一件事情,添加你需要支持的哪些系统,我这边win10和Ubuntu18就好了(别忘了)

在<PropertyGroup>标签里面添加<RuntimeIdentifiers>win10-x64;ubuntu.18.04-x64;</RuntimeIdentifiers>

 

系统命名以及系统支持参考:(貌似Android也是支持的)

https://docs.microsoft.com/zh-cn/dotnet/core/rid-catalog
https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/runtime.json

修复依赖+发布指定系统的runtime:dotnet publish -c Release -r ubuntu.18.04-x64

其实netcore2.x系列不用再输入restore了,它会自动执行restore

自托管的包挺大的

 

发现自动生成了个netcore无后缀文件,而且是可执行文件【为基础薄弱的同志普及下:1.看颜色 2.ll 查看有没有执行权限】,直接运行就OK了

来试着发布一个win10的:dotnet publish -c Release -r win10-x64

拖到win10来测试~ok,可以跨平台(其他平台一样,发布的时候换下操作系统即可)

 

这次轮到Py

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python_字符串格式化 下一篇练习题二:树的高度

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目