开发 Windows 控制台程序,是选择 Go 还是 C#?

253 天前
 hahade

目前我准备开发一个稍微有一点复杂的 Windows 控制台程序,但是不知道如何选择合适的编程语言,我目前了解到的如下:

C#

Go

其它

先感谢大家帮我分析一下!

2910 次点击
所在节点    问与答
41 条回复
cat007
253 天前
Go 不了解,调用 Win32API 用 C#更方便吧,另外 C#代码可以混淆防止被反编译
LongMaoz
253 天前
.net 语法比 go 友好一点 不需要自行处理指针
如果是稍微有点复杂,建议直接使用.net
hahade
253 天前
@cat007 主要是不想花时间在反编译上面。
helone
253 天前
这俩语言其实都能满足,更多是看你熟悉哪个,C#开发肯定坑相对较少,Go 在 Windows 下还是有不少的问题的
0o0O0o0O0o
253 天前
> 容易被反编译
> 无法被反编译

否,只是分析难度不同。我认为真需要保护的话也不可能指望这种难度区别,C# 有商业化的保护,Go 据我所知是没有,只有功能有限且用起来略麻烦的开源混淆工具。

> 依赖运行时环境

https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/

> 需要调用 Win32 API

那肯定 C# 方便
hahade
253 天前
@LongMaoz 感谢,没想到 Go 还有指针这东西。
hahade
253 天前
@helone 感谢!
hahade
253 天前
@0o0O0o0O0o 感谢,AOT 我还是第一次听说,有机会了解一下。
ZZ74
253 天前
都是虚拟机语言 go 怎么就不依赖运行时了。。。
反倒是 c #,现在 win 一般自带一个 net 运行时,更便捷
hahade
253 天前
@ZZ74 目前对于 Go 只是在网上了解了一下,感谢!
Jirajine
253 天前
现在这个时代,没有什么代码有被逆向的价值。反编译保护几乎是 malware only 的需求。
idealhs
253 天前
肯定选 C#了,时代变了 C#非常现代化,并且写 Windows Console 的话没啥更好的选择
.NET 8 不依赖.NET Framework,控制台程序可以 AOT 编译,不存在反编译的可能性
.NET 也更容易调用 Win32 API
beyondex
253 天前
你对 C# 的认知停留在多年以前。。。
1. .NET Core 可以发不成不依赖运行时的 self contained 版本,比如这个复杂的桌面搜索程序 https://seadesktopsearch.com/
2. AOT 就不怕反编译,而且体积也比较小
3. 不 AOT 又不想被反编译,可用混淆工具混淆或加密,比如 Dotfuscator (做混淆的,有免费版也有付费版)、DNGuard 虚拟机壳等。
hahade
253 天前
@idealhs 感谢!
hahade
253 天前
@beyondex 确实,我只记得当初学 .NET Framework 3.5 的时候学的 C#。
shilyx
253 天前
go 的话用 win32 api 本来挺费劲的,但这些活早就有人干了,例如

https://github.com/zzl/go-win32api

c#的也有类似的库
jstony
253 天前
op 可以了解一下.net 8 的 aot 机制,另外写 win console 我觉得没用比 c#更方便快捷的了。
DTCPSS
253 天前
C# AOT 或者 Rust
hahade
253 天前
@shilyx 调用 Win32 可痛苦了,我一直在想为啥微软不出一个 C# 版的 Win32 API ,有时候要写一大堆的声明。
hahade
253 天前
@jstony 感谢,我想我很有必要重新学一下最新版的 .NET 。

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

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

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

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

© 2021 V2EX