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

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

  •  
  •   liuser666 · 77 天前 · 3567 次点击
    这是一个创建于 77 天前的主题,其中的信息可能已经有所发展或是发生改变。
    你知道现在 Window 的开发体验有多割裂吗?

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

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

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


    要搞就好好搞一个完备的啊,一堆 win32 api 想隐藏是吧?隐藏了我不如用 macos
    39 条回复    2022-01-10 18:28:26 +08:00
    sun1991
        1
    sun1991  
       77 天前
    反正 WPF 只能在 Windows 平台跑, 又不能跨平台, 干嘛用.net core
    .net framework 目前 Windows 都内置了, 省心省力
    liuser666
        2
    liuser666  
    OP
       77 天前
    @sun1991 当时不了解的时候,选错了 mmp...
    EvanQu
        3
    EvanQu  
       77 天前
    用 maui 吧
    liuser666
        4
    liuser666  
    OP
       77 天前
    @EvanQu 卧槽,新思路!我脑袋抽了居然没想到!
    EvanQu
        5
    EvanQu  
       77 天前
    @liuser666 #4 vs2022 正式版出来了 但是 17.1beta 才内置 正式版是 17.0
    不过自己装下也快
    liuser666
        6
    liuser666  
    OP
       77 天前
    @EvanQu 我是 preview~~~
    n0th1ng
        7
    n0th1ng  
       77 天前
    用 WinUI 3
    Maui 在 Windows 下用的是 WinUI 3
    liuser666
        8
    liuser666  
    OP
       77 天前
    @n0th1ng WinUI3 在 WPF 里用需要 island ,mmp 的就不能原生支持一下。
    n0th1ng
        9
    n0th1ng  
       77 天前
    @liuser666 摊手
    reallittoma
        10
    reallittoma  
       77 天前
    .NET Framework 跟 .NET Core 的 WPF API 不是都长一个样吗?运行时不兼容而已
    reallittoma
        11
    reallittoma  
       77 天前
    @EvanQu #3 vs 2022 里面的 maui 貌似还不能用,新建的项目都没法编译
    liuser666
        12
    liuser666  
    OP
       77 天前
    @reallittoma 除了运行时不兼容外,很多 nuget 包都不兼容。
    jZH
        13
    jZH  
       77 天前
    还在用 MFC 的漂过
    reallittoma
        14
    reallittoma  
       77 天前
    @liuser666 #12 nuget 的话尽量找开源的包吧,自己编译到.NET Core 也不是很费事
    0312birdzhang
        15
    0312birdzhang  
       77 天前
    用 Qt (大雾
    towser
        16
    towser  
       77 天前
    maui 不支持 win7
    cmdOptionKana
        17
    cmdOptionKana  
       77 天前
    Electron 欢迎你,大势所趋,微软自己也用。
    wanguorui123
        18
    wanguorui123  
       77 天前
    微软的东西就是半壶水,应该是为了维持垄断地位不是技术问题
    ligiggy
        19
    ligiggy  
       77 天前
    不是很懂,你想说的什么,你想用系统 API 干什么?你有多了解你现在用的技术?真的跟框架有关吗?
    nicknick
        20
    nicknick  
       77 天前 via Android
    红色:我们要支持国产化,不要用 window 。黑色:去他的充满铜臭味的 os 。
    Sain
        21
    Sain  
       77 天前
    Electron 吧
    cjw1115
        22
    cjw1115  
       77 天前
    感觉还是你水平问题,WinRT 的 API 基本上满足绝大多数开发场景。
    liuser666
        23
    liuser666  
    OP
       77 天前
    @cjw1115 我要获取其他应用窗口的句柄,目的是 title 。GetWindowTextA ,有什么办法吗?
    12101111
        24
    12101111  
       77 天前
    不用考虑.NET framework 了,微软明确说不更了, 地位就和 Windows 自带的 IE 内核一样了,只是为了兼容性才放在那里
    .NET 6 支持 winUI 也支持 wpf 和 winform, 想用哪个用哪个啊, 都是开源的
    MakHoCheung
        25
    MakHoCheung  
       77 天前
    @cmdOptionKana 微软的 Teams 都抛弃 Electron ,还大势所趋
    wafm
        26
    wafm  
       77 天前
    易语言欢迎你
    ECat
        27
    ECat  
       77 天前
    @jZH
    MyFreeCams??
    reallittoma
        28
    reallittoma  
       77 天前
    @liuser666 #23 .NET Core 支持 P/Invoke 的,nuget 上也有封装好的包,可以直接用那个
    yuancoder
        29
    yuancoder  
       77 天前
    微软老传统了
    Jwyt
        30
    Jwyt  
       77 天前
    KeyboardManAnAn
        31
    KeyboardManAnAn  
       77 天前
    @MakHoCheung Electron 对用户来说, 就是一场灾难啊, 十几个套壳应用一起跑, 那酸爽的感觉, 嗯...
    g00001
        32
    g00001  
       77 天前
    再强大再万能的东西都有他的局限。
    例如万能的 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  
       77 天前
    开发桌面应用为什么要用 UWP ?这是为了上应用商店才会选这个的呀。
    whi147
        34
    whi147  
       76 天前 via iPhone
    gtk 那套也能在 window 上跑
    liuser666
        35
    liuser666  
    OP
       76 天前
    @reallittoma 找到了 PInvoke.User32 这个库,简直神级
    0o0o0o0
        36
    0o0o0o0  
       48 天前
    @EvanQu MAUI 还是 priview ,bug 太多了,而且模板经常变,不过正式版应该会很好用。
    0o0o0o0
        37
    0o0o0o0  
       48 天前
    @0o0o0o0 单词拼写错误 preview
    ne6rd
        38
    ne6rd  
       23 天前
    强烈赞同,API, nuget 包,网上问题用的版本名词,都特别割裂。
    后来我选了 flutter ,开发体验很好,做个桌面小程序还是挺方便的。
    比 Electron 省心。
    coder001
        39
    coder001  
       17 天前
    我的观点:

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

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

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

    没错,我就是讨厌 JavaScript 而想尽可能用 C♯ 解决全部问题
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1189 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:36 · PVG 02:36 · LAX 10:36 · JFK 13:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.