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

对 .NET5 有兴趣,可有入门路线图?

  •  
  •   circsqua · 2021-01-13 11:08:02 +08:00 · 5745 次点击
    这是一个创建于 1409 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,仅有 C 和 Python 背景

    想趁着过年学习一下现代编程,并做一些自己喜欢的小东西

    THX
    38 条回复    2021-01-14 12:51:54 +08:00
    MaxTan
        1
    MaxTan  
       2021-01-13 11:10:52 +08:00
    nulIptr
        2
    nulIptr  
       2021-01-13 11:11:07 +08:00
    hantsy
        3
    hantsy  
       2021-01-13 11:11:42 +08:00
    MAIQ
        4
    MAIQ  
       2021-01-13 11:24:39 +08:00
    masquerader
        5
    masquerader  
       2021-01-13 11:30:28 +08:00   ❤️ 2
    工具链跟着官网走一遍命令行工具 dotnet,VSCode 装个 C#插件就可以了。语言方面可以从 C#入手。网上应该很多基础教程 /免费入门书籍。

    等弄个 console 应用有些感觉了,可以去看看 ASP.NET 的东西了。ASP.NET 涉及到的内容比较多,一开始可以只看后端知识,前端 HTML+JS/TS 配合就好。后面有兴趣了再了解下 Blazor Server (服务端渲染)和 Blazor WebAssembly (客户端渲染,但不同于大多数 transpiler 的技术把你的 C#/Java 代码你翻译成 JS 让浏览器执行,你可以理解成浏览器里有一个.NET 运行时,所以你的.NET 应用可以被浏览器直接执行)。

    后面如果再有兴趣,语言方面看看 F#。F#不像 Haskell 那么纯粹,比较好接受。学 F#的过程中就把 FP 的编程范式了解下,个人认为对拓展眼界有很大帮助。
    lancelock
        6
    lancelock  
       2021-01-13 11:31:16 +08:00
    搭好开发环境 -> 学 c#语法
    lancelock
        7
    lancelock  
       2021-01-13 11:33:08 +08:00
    asp.net 里的一堆东西都是和 web 开发相关的,如果不需要做这个方向那就完全不用看
    masquerader
        8
    masquerader  
       2021-01-13 11:39:24 +08:00
    .NET 里涉及到 GUI 相关的内容,个人建议先跳过,等微软和社区把 MAUI 整明白了再说。
    goldiorl
        9
    goldiorl  
       2021-01-13 11:54:13 +08:00
    插一句话,vs 没有办法像 vscode 一样有 command palette 呢,我看 intellij 就有
    masquerader
        10
    masquerader  
       2021-01-13 12:23:31 +08:00
    @goldiorl 没,VS 虽然功能强大,但很多设计都是上个世纪的,很多现代的功能都没有,看意思微软也没打算加入这些广受欢迎的功能。
    yushiro
        11
    yushiro  
       2021-01-13 12:48:49 +08:00 via iPhone
    要区分传统的.Net Framework 和.Net Core 的区别,特别是 web 相关的
    .Net5 听说是整合了这 2 块,没仔细研究过,所以学习的时候注意一下。
    LokiSharp
        12
    LokiSharp  
       2021-01-13 12:53:50 +08:00
    @masquerader #10 用 VS 的都会装上 ReSharper 吧,一些功能就和 Rider 差不多了
    masquerader
        13
    masquerader  
       2021-01-13 13:10:32 +08:00
    @LokiSharp 是这样。就是 VS + ReSharper 实在不便宜,个人玩玩的话 VSCode 挺好。

    VS 好久都不用了,一来没有 Remote Development Container 的支持,二来编辑器不支持平滑滚动,一些连字符在某些情形下出不来,terminal 整合的也不如 VSCode,就抛弃之了。
    dasbn
        14
    dasbn  
       2021-01-13 13:22:29 +08:00
    看视频的话,推荐一个微软 MVP 的视频 https://space.bilibili.com/361469957
    goldiorl
        15
    goldiorl  
       2021-01-13 13:31:55 +08:00
    @LokiSharp @masquerader 那再请问一下,vs + resharper 和直接用 rider 比优势在哪儿呢
    heyhumor
        16
    heyhumor  
       2021-01-13 13:35:54 +08:00
    .NetFrameWork 都没搞明白,就只会写写 winform 小程序的路过。。。
    qW7bo2FbzbC0
        17
    qW7bo2FbzbC0  
       2021-01-13 13:36:04 +08:00
    vs for mac ? 最简单的可以先从 console 小程序做起,然后 webapi
    LokiSharp
        18
    LokiSharp  
       2021-01-13 13:48:50 +08:00
    @goldiorl #15 有一些 VS 专有的特性 Rider 没法用,xaml 可视化啊什么的
    Removable
        19
    Removable  
       2021-01-13 14:02:49 +08:00
    @goldiorl #14 Rider 个人目前使用最大的不便之处在于,在 WPF 开发中不能像 vs 那样实时预览 UI (当然也可能是我没找到 Rider 的设置
    Removable
        20
    Removable  
       2021-01-13 14:04:15 +08:00
    哦对了,好像 rider 还不支持 nuget 包管理器控制台
    masquerader
        21
    masquerader  
       2021-01-13 14:07:50 +08:00   ❤️ 1
    @goldiorl 没用过 Rider,就说下 VS/VSCode 个人觉得好用的地方吧。

    1. CodeLens,可以把类型签名、函数与方法的引用标出来,非常方便。如果用 F#,CodeLens/LineLens 可以方便的看出来类型推导。
    2. VS 是原生应用,性能好,占资源少,响应迅速。
    3. VS/VSCode 的 Live share 非常好用,个人认为超过不用任何工具和邻桌面对面结对编程的效率。
    4. Remote Development 。可以 SSH 到本地 WSL/WSL2 上,或者一台 Linux 远程服务器上进行编程与调试一条龙。这个体验和本地编程没有任何区别,感受不到任何延迟。即便是调试 web 应用,都和本地一样,例如你在远端启动监听端口 8080 的 web server,访问这个 web server 在浏览器里输入 http://localhost:8080,就好像你的应用部署在了本地。更进一步的,你可以把你的项目设置做成一个 docker image,装什么插件,什么依赖包,各种环境设置都弄好了,直接用 Remote Development Container 的方式,设置一个复杂的开发环境几分钟就自动都搞定了。此功能 VSCode 独有,VS 没有。
    masquerader
        22
    masquerader  
       2021-01-13 14:22:44 +08:00   ❤️ 1
    @masquerader 补充我上面说的关于 Remote Development 的功能。现在 GitHub 上有开放 Codespaces 的功能,本质上就是微软自家的 Remote Development,现在处于有限规模的测试中,可以申请排队加入测试。

    我重度依赖此功能,我讲下我的场景。我有 1 台 MBP,1 台 8 代 U+8G RAM 轻薄 Windows 10,1 台 11 代 U+16G RAM 的轻薄 Windows 10,办公室 1 台 Windows 10 笔记本,此外还有 1 台装了 Linux 的机器。我的做法就是利用 Remote Development Container,把项目的各种依赖弄到 Docker image 里,这样我随便拿起一台电脑就开始我的项目,无论电脑的配置有多渣( 8G 内存),无论电脑是不是装了.NET ,或者有些包对环境有依赖(我的项目的一个依赖包不提供 macOS 版本的原生库),或者是新买一台电脑,装上 VSCode 零设置就可以开始撸码。
    INCerry
        23
    INCerry  
       2021-01-13 14:30:11 +08:00   ❤️ 1
    不管任何一门计算机编程语言最重要的还是 408,数据结构和算法、计算机组成原理、操作系统和计算机网络。
    1.入门可以直接在 B 站找免费视频,或者培训机构的视频,快速入门还是可以看看的*智播客.Net 视频,之类的,然后就是微软的文档 https://docs.microsoft.com/zh-cn/dotnet/ 机翻不是特别友好,可以直接看英文
    2.入门以后就买几本书看看,包括但不限于《深入理解 C#》、《 C#从现象到本质》、《 CLR via C#》、《 C#并发编程》、《 Asp.Net Core 框架揭秘》、《.Net Core 底层入门》、《 MSIL 》、《设计模式》.....
    3.用起来,自己可以整个小项目试试,用用学到的框架,写个什么博客站点呀之类的
    4.看源码学和设计模式,.net 常见组件的源码,框架的源码 还有 CLR 源码 https://github.com/dotnet
    后面再补充吧~
    fivestrong
        24
    fivestrong  
       2021-01-13 14:32:26 +08:00 via iPhone
    推荐 Mark J.Price 的 c#9 and .NET 5 这本书,最新版本,讲的很系统,基本上属于手摸手教你写 C#了
    goldiorl
        25
    goldiorl  
       2021-01-13 14:36:56 +08:00
    @masquerader
    可不可以再有最后一问,如果全用 vscode 开发,有哪些是 vs 上完不成的?
    goldiorl
        26
    goldiorl  
       2021-01-13 14:38:56 +08:00
    @masquerader 不好意思打错了,想问的是如果

    如果全用 vscode 开发,会遇到哪些不用 vs 就完不成的问题?
    masquerader
        27
    masquerader  
       2021-01-13 14:43:00 +08:00   ❤️ 1
    @goldiorl 放心,没有。
    nuanyang
        28
    nuanyang  
       2021-01-13 14:51:12 +08:00
    感觉.net 的官方文档已经很好了,挑一个自己感兴趣的领域看就行了
    dswyzx
        29
    dswyzx  
       2021-01-13 15:28:41 +08:00 via iPhone
    @goldiorl 一个是开发工具,一个是文本编辑器,vscode 要不停的设置各种插件来达到 vs 的各种功能。但如今风气是用记事本最屌
    circsqua
        30
    circsqua  
    OP
       2021-01-13 16:39:03 +08:00
    @MaxTan
    @nulIptr
    @hantsy THX

    @masquerader 感谢详尽指引,我还以为 asp.net 已经式微了呢; Blazor WebAssembly 到和一般想象不用,有达到可用成都么?

    @yushiro 了解了,自然选新的,等学会了,也就不新了


    感谢大家回复
    pkoukk
        31
    pkoukk  
       2021-01-13 17:04:57 +08:00
    巨硬家的文档,完善,详尽,更新及时,挑不出第二个能这么有心的
    masquerader
        32
    masquerader  
       2021-01-13 17:11:13 +08:00
    @circsqua Blazor WebAssembly 技术上比较成熟了,Chrome/Firefox/Edge 也都原生支持了。有精力的话自己玩玩持续关注吧,靠这个找工作眼下是不可能的。
    hantsy
        33
    hantsy  
       2021-01-13 17:14:38 +08:00
    .net 没正经写过项目,玩过一点 C#。个人还是喜欢 Rider (毕竟长期写 Java,IDEA 界面还是习惯了),VS 实在不会用。

    之前的单个 project,重构一下,变成 Solution,加了测试代码。

    https://github.com/hantsy/code-challenges/tree/master/csharp
    love
        34
    love  
       2021-01-13 17:41:43 +08:00 via Android
    @pkoukk 别人家的语言和框架做得不好吗,我用的 Python,nodejs,react,vue 哪个文档比 ms 差
    forgottencoast
        35
    forgottencoast  
       2021-01-14 09:26:45 +08:00
    @love 打个比方,如果 nodejs 的文档叫有文档,那微软的.Net 文档就可以叫维基百科,完全不是一个档次的。
    所以,结论就是,差,差远了,差的太远了!
    不过,有一说一,.Net Core 的文档现在质量也下降了。
    forgottencoast
        36
    forgottencoast  
       2021-01-14 09:29:35 +08:00
    @goldiorl
    @masquerader
    用 vscode 开发 GUI 程序? WinForm 、WPF ?有人干过吗?
    love
        37
    love  
       2021-01-14 12:10:25 +08:00
    @forgottencoast 行了吧,那是因为.net 臃肿复杂,别的语言除了 java 都很简单不需要海量车轱辘文档
    forgottencoast
        38
    forgottencoast  
       2021-01-14 12:51:54 +08:00 via iPhone
    @love
    这就跟“80 年代大家没有手机 没有互联网 也一样过得很开心”,懒得驳斥。
    你开心就好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3349 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:47 · PVG 12:47 · LAX 20:47 · JFK 23:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.