V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuser666
V2EX  ›  C#

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

  •  
  •   liuser666 · 2021-11-11 09:36:41 +08:00 · 7057 次点击
    这是一个创建于 1091 天前的主题,其中的信息可能已经有所发展或是发生改变。
    你知道现在 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 也不是很费事
    0312birdzhang
        15
    0312birdzhang  
       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
    微软老传统了
    Jwyt
        30
    Jwyt  
       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   ·   实用小工具   ·   5730 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:40 · PVG 09:40 · LAX 17:40 · JFK 20:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.