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

2021-11-11 09:36:41 +08:00
 liuser666
你知道现在 Window 的开发体验有多割裂吗?

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

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

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


要搞就好好搞一个完备的啊,一堆 win32 api 想隐藏是吧?隐藏了我不如用 macos
6749 次点击
所在节点    C#
40 条回复
Sain
2021-11-11 12:10:08 +08:00
Electron 吧
cjw1115
2021-11-11 12:52:31 +08:00
感觉还是你水平问题,WinRT 的 API 基本上满足绝大多数开发场景。
liuser666
2021-11-11 12:57:52 +08:00
@cjw1115 我要获取其他应用窗口的句柄,目的是 title 。GetWindowTextA ,有什么办法吗?
12101111
2021-11-11 14:07:36 +08:00
不用考虑.NET framework 了,微软明确说不更了, 地位就和 Windows 自带的 IE 内核一样了,只是为了兼容性才放在那里
.NET 6 支持 winUI 也支持 wpf 和 winform, 想用哪个用哪个啊, 都是开源的
MakHoCheung
2021-11-11 14:11:14 +08:00
@cmdOptionKana 微软的 Teams 都抛弃 Electron ,还大势所趋
wafm
2021-11-11 15:01:10 +08:00
易语言欢迎你
ECat
2021-11-11 15:03:34 +08:00
@jZH
MyFreeCams??
reallittoma
2021-11-11 15:52:02 +08:00
@liuser666 #23 .NET Core 支持 P/Invoke 的,nuget 上也有封装好的包,可以直接用那个
yuancoder
2021-11-11 16:49:03 +08:00
微软老传统了
Jwyt
2021-11-11 16:51:44 +08:00
KeyboardManAnAn
2021-11-11 16:52:45 +08:00
@MakHoCheung Electron 对用户来说, 就是一场灾难啊, 十几个套壳应用一起跑, 那酸爽的感觉, 嗯...
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
2021-11-11 22:58:28 +08:00
开发桌面应用为什么要用 UWP ?这是为了上应用商店才会选这个的呀。
whi147
2021-11-12 08:41:17 +08:00
gtk 那套也能在 window 上跑
liuser666
2021-11-12 13:19:29 +08:00
@reallittoma 找到了 PInvoke.User32 这个库,简直神级
0o0o0o0
2021-12-10 14:13:49 +08:00
@EvanQu MAUI 还是 priview ,bug 太多了,而且模板经常变,不过正式版应该会很好用。
0o0o0o0
2021-12-10 14:14:23 +08:00
@0o0o0o0 单词拼写错误 preview
ne6rd
2022-01-04 19:59:09 +08:00
强烈赞同,API, nuget 包,网上问题用的版本名词,都特别割裂。
后来我选了 flutter ,开发体验很好,做个桌面小程序还是挺方便的。
比 Electron 省心。
coder001
2022-01-10 18:28:26 +08:00
我的观点:

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

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

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

没错,我就是讨厌 JavaScript 而想尽可能用 C♯ 解决全部问题
lujiaxing
2022-03-27 15:10:22 +08:00
现在你可以选择 Avalonia

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/814584

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX