开发到一半忍不住吐槽一下 Windows 桌面开发 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuser666
V2EX    C#

开发到一半忍不住吐槽一下 Windows 桌面开发

  •  
  •   liuser666 2021-11-11 09:36:41 +08:00 7695 次点击
    这是一创建于 1431 天前的主题,其中的信息可能已经有所发展或是发生改变。
    你知道现在 Window 的开发体验有多割裂吗?

    主推的 UWP 也割裂,很多 win32 的 api 用不了。为什么很多旧的程序不把自己的 UI 界面翻新,因为 UWP 压根抛弃了他们,我系统 api 都没法调我开发个屁。

    于是我就用 WPF 开发了,也割裂。.NET framework 和.Net Core 两种平台,互不兼容哈哈哈真搞笑。人家说的怎样都行指的是都可以兼容,你搞成这样我 Google 搜问题都不好搜。

    winform 等再老的就不谈了,老弃婴了。


    要搞就好好搞一个完备的啊,一堆 win32 api 想隐藏是吧?隐藏了我不如用 macos
    40 条回复    2022-03-27 15:10:22 +08:00
    sun1991
        1
    sun1991  
       2021-11-11 09:40:01 +08:00
    反正 WPF 只能在 Windows 平台跑, 又不能跨平台, 干嘛用.net core
    .net framework 目前 Windows 都内置了, 省心省力
    liuser666
        2
    liuser666  
    OP
       2021-11-11 09:45:01 +08:00
    @sun1991 当时不了解的时候,选错了 mmp...
    EvanQu
        3
    EvanQu  
       2021-11-11 09:46:53 +08:00
    用 maui 吧
    liuser666
        4
    liuser666  
    OP
       2021-11-11 09:49:17 +08:00
    @EvanQu 卧槽,新思路!我脑袋抽了居然没想到!
    EvanQu
        5
    EvanQu  
       2021-11-11 09:51:58 +08:00
    @liuser666 #4 vs2022 正式版出来了 但是 17.1beta 才内置 正式版是 17.0
    不过自己装下也快
    liuser666
        6
    liuser666  
    OP
       2021-11-11 09:53:59 +08:00
    @EvanQu 我是 preview~~~
    n0th1ng
        7
    n0th1ng  
       2021-11-11 10:01:13 +08:00
    用 WinUI 3
    Maui 在 Windows 下用的是 WinUI 3
    liuser666
        8
    liuser666  
    OP
       2021-11-11 10:03:29 +08:00
    @n0th1ng WinUI3 在 WPF 里用需要 island ,mmp 的就不能原生支持一下。
    n0th1ng
        9
    n0th1ng  
       2021-11-11 10:19:40 +08:00
    @liuser666 摊手
    reallittoma
        10
    reallittoma  
       2021-11-11 10:30:14 +08:00
    .NET Framework 跟 .NET Core 的 WPF API 不是都长一个样吗?运行时不兼容而已
    reallittoma
        11
    reallittoma  
       2021-11-11 10:31:40 +08:00
    @EvanQu #3 vs 2022 里面的 maui 貌似还不能用,新建的项目都没法编译
    liuser666
        12
    liuser666  
    OP
       2021-11-11 10:31:49 +08:00
    @reallittoma 除了运行时不兼容外,很多 nuget 包都不兼容。
    jZH
        13
    jZH  
       2021-11-11 10:32:05 +08:00
    还在用 MFC 的漂过
    reallittoma
        14
    reallittoma  
       2021-11-11 10:34:03 +08:00
    @liuser666 #12 nuget 的话尽量找开源的包吧,自己编译到.NET Core 也不是很费事
    1daydayde
        15
    1daydayde  
       2021-11-11 10:47:14 +08:00
    用 Qt (大雾
    towser
        16
    towser  
       2021-11-11 10:52:32 +08:00
    maui 不支持 win7
    cmdOptionKana
        17
    cmdOptionKana  
       2021-11-11 11:24:31 +08:00
    Electron 欢迎你,大势所趋,微软自己也用。
    wanguorui123
        18
    wanguorui123  
       2021-11-11 11:27:48 +08:00
    微软的东西就是半壶水,应该是为了维持垄断地位不是技术问题
    ligiggy
        19
    ligiggy  
       2021-11-11 11:41:02 +08:00
    不是很懂,你想说的什么,你想用系统 API 干什么?你有多了解你现在用的技术?真的跟框架有关吗?
    nicknick
        20
    nicknick  
       2021-11-11 12:00:47 +08:00 via Android
    红色:我们要支持国产化,不要用 window 。黑色:去他的充满铜臭味的 os 。
    Sain
        21
    Sain  
       2021-11-11 12:10:08 +08:00
    Electron 吧
    cjw1115
        22
    cjw1115  
       2021-11-11 12:52:31 +08:00
    感觉还是你水平问题,WinRT 的 API 基本上满足绝大多数开发场景。
    liuser666
        23
    liuser666  
    OP
       2021-11-11 12:57:52 +08:00
    @cjw1115 我要获取其他应用窗口的句柄,目的是 title 。GetWindowTextA ,有什么办法吗?
    12101111
        24
    12101111  
       2021-11-11 14:07:36 +08:00
    不用考虑.NET framework 了,微软明确说不更了, 地位就和 Windows 自带的 IE 内核一样了,只是为了兼容性才放在那里
    .NET 6 支持 winUI 也支持 wpf 和 winform, 想用哪个用哪个啊, 都是开源的
    MakHoCheung
        25
    MakHoCheung  
       2021-11-11 14:11:14 +08:00
    @cmdOptionKana 微软的 Teams 都抛弃 Electron ,还大势所趋
    wafm
        26
    wafm  
       2021-11-11 15:01:10 +08:00
    易语言欢迎你
    ECat
        27
    ECat  
       2021-11-11 15:03:34 +08:00
    @jZH
    MyFreeCams??
    reallittoma
        28
    reallittoma  
       2021-11-11 15:52:02 +08:00
    @liuser666 #23 .NET Core 支持 P/Invoke 的,nuget 上也有封装好的包,可以直接用那个
    yuancoder
        29
    yuancoder  
       2021-11-11 16:49:03 +08:00
    微软老传统了
    Dockerfile
        30
    Dockerfile  
       2021-11-11 16:51:44 +08:00
    KeyboardManAnAn
        31
    KeyboardManAnAn  
       2021-11-11 16:52:45 +08:00
    @MakHoCheung Electron 对用户来说, 就是一场灾难啊, 十几个套壳应用一起跑, 那酸爽的感觉, 嗯...
    g00001
        32
    g00001  
       2021-11-11 17:26:14 +08:00
    再强大再万能的东西都有他的局限。
    例如万能的 Python 网上搜一下也有很多跑去用 Python + aardio 做桌面开发。

    .Net 就是房车,复杂就是他的使命。
    要简单和接口自由可以开 aardio 这种小自行车。

    官网上有篇文章《看看短短几句 aardio 代码能做什么》,抠了几段过来:

    aardio 调用原生 API
    -----------------------------------
    ::User32.GetCursorPos({ INT x; INT y; });


    aardio 调用 .Net
    -----------------------------------

    import console;
    import dotNet;
    var System = dotNet.load("System").import("System");
    var uri = System.Uri("https://www.aardio.com")

    console.log( uri.Host );
    console.log( uri.GetHashCode() );


    aardio 调用 Python
    -----------------------------------
    import console;
    import py3;

    var itertools = py3.import("itertools")
    var permutatiOns= itertools.permutations({"a","b","c"});
    var pyList = py3.list(permutations);

    for( item in pyList.each() ){
    console.log(item);
    }


    将任何网络 API 自动导入 aardio
    -----------------------------------
    import web.rest.jsonLiteClient;
    var http = web.rest.jsonLiteClient();

    var countApi = http.api("https://api.countapi.xyz/hit{/domain}{/key}")
    var data = countApi["key"].get();
    forgottencoast
        33
    forgottencoast  
       2021-11-11 22:58:28 +08:00
    开发桌面应用为什么要用 UWP ?这是为了上应用商店才会选这个的呀。
    whi147
        34
    whi147  
       2021-11-12 08:41:17 +08:00 via iPhone
    gtk 那套也能在 window 上跑
    liuser666
        35
    liuser666  
    OP
       2021-11-12 13:19:29 +08:00
    @reallittoma 找到了 PInvoke.User32 这个库,简直神级
    0o0o0o0
        36
    0o0o0o0  
       2021-12-10 14:13:49 +08:00
    @EvanQu MAUI 还是 priview ,bug 太多了,而且模板经常变,不过正式版应该会很好用。
    0o0o0o0
        37
    0o0o0o0  
       2021-12-10 14:14:23 +08:00
    @0o0o0o0 单词拼写错误 preview
    ne6rd
        38
    ne6rd  
       2022-01-04 19:59:09 +08:00
    强烈赞同,API, nuget 包,网上问题用的版本名词,都特别割裂。
    后来我选了 flutter ,开发体验很好,做个桌面小程序还是挺方便的。
    比 Electron 省心。
    coder001
        39
    coder001  
       2022-01-10 18:28:26 +08:00   1
    我的观点:

    简单的界面用 WinForms 还是挺方便的

    对界面要求复杂、绚丽的话那就上 CEF ,用 Web 做 UI 无论是环境、技术层面还是对开发人员的要求,兼容性都高

    而且 Blazor WASM 可以直接写 C 输出静态的 Web 站点

    没错,我就是讨厌 Javascript 而想尽可能用 C 解决全部问题
    lujiaxing
        40
    lujiaxing  
       2022-03-27 15:10:22 +08:00
    现在你可以选择 Avalonia
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2561 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 04:44 PVG 12:44 LAX 21:44 JFK 00:44
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86