跳转至

关于搭建.NET开发环境

阅读前说明

本文章并不是手把手教你如何搭建的教程,而是结合我踩坑经验的总结。

如果以下内容有错误之处,请自行忽略

这里先简单介绍一下C#与.NET的关系,可以简单的理解为你开发的软件需要在Windows系统上运行,C#可以类比于你开发的软件。.NET可以类比为Windows系统,.NET是一个平台,C#是运行在其上的一个语言,当然,.NET上可以运行的语言还有VB/F#等,但这里我只以C#为主,其他的语言开发环境其实是类似的。

.NET版本的选择

细心的人可能会发现有人会叫.NET Framework,也有叫.NET,还有叫.NET Core,这些又是什么关系?

其实这三个都指向.NET这个平台,他们的核心功能是一样的,但是在具体实现上不太一样。.NET Framework是闭源的.NET平台程序,有一些版本是内置在Windows中,它只能运行在Windows上;.NET Core/.NET是开源的、跨平台的.NET平台程序,但.NET Core是.NET的早期版本,有不少功能和兼容性都没有实现完成,从.NET 5开始才基本实现了.NET Framework中核心功能,包括桌面开发等特性。由于后面这两个是对.NET Framework的重写版本,所以会出现一些不兼容问题,这个问题对于初学者不需要太过关心,它不会影响你学习C#语言本身,只是有一些特性只在特定版本的.NET上才有,比如如果要操作Windows上的com对象,目前研究发现.NET Core/.NET是没有的;如果要跨平台或使用最新的C#语法,.NET Framework就做不到了。

那如何选择合适的.NET 环境呢?个人比较推荐.NET Framework 4.6.2和.NET 8。之所以没有推荐.NET Framework 3.5,是因为虽然这个版本也依然处在维护阶段,但是现阶段大部分新的第三方依赖都不再支持这个版本的.NET,现在大部分的第三方依赖都可以很好的兼容.NET Framework 4.6.2 / 4.7.1 / 4.8.1和.NET 5以上,而且.NET Framework 4.6.2对老系统的支持度更好一些,Windows 10 1607及以上系统都是内置的,即使用于开发,大部分用户使用起来是无感的;至于为什么推荐.NET 8,是因为.NET Core和.NET 5都已经停止维护了,虽然.NET 61/7也依然在维护,但2024年年底到2025年年初就会停止维护,这就意味着有不少第三方依赖会停止对它们的支持,并且偶数版本的.NET是LTS版本,有3年的支持周期,所以可以有较长时间使用这个平台开发程序。

不同版本的Windows上内置的.NET Framework版本
Windows 名称 产品版本 自带的 .NET Framework 版本
Windows 11 21H2(及以上) .NET Framework 4.8
November 2021 Update 21H2(及以上) .NET Framework 4.8
May 2021 Update 21H1 .NET Framework 4.8
October 2020 Update 20H2 .NET Framework 4.8
May 2020 Update 2004 .NET Framework 4.8
November 2019 Update 1909 .NET Framework 4.8
Windows 10 May 2019 Update 1903 .NET Framework 4.8
Windows 10 October 2018 Update 1809 .NET Framework 4.7.2
Windows 10 April 2018 Update 1803 .NET Framework 4.7.2
Windows 10 Fall Creators Update 1709 .NET Framework 4.7.1
Windows 10 Creators Update 1703 .NET Framework 4.7
Windows 10 Anniversary Update 1607 .NET Framework 4.6.2
Windows Server 1803 .NET Framework 4.7.2
Windows Server 1709 .NET Framework 4.7.1
Windows Server 2016 .NET Framework 4.6.2

如果你打算选择.NET Framework系列,在大部分系统中是内置的,所以不需要单独安装;如果是选择.NET系列,那么需要到微软官网下载对应的.NET SDK。

.NET SDK与.NET runtime是什么关系呢?简单的说,.NET SDK包含了.NET runtime等一系列的.NET开发工具,包括桌面应用开发、数据库开发、Web开发等等,所以如果没有特殊情况,可以选择这个开发工具包

至于如何下载,网上教程有很多,可以自行参考着下载

关于IDE的选择

可能有的人会喜欢类似VScode/notepad++/Sublime Text等工具,但是作为一个初学者来说,我并不建议你选择这些工具,因为C#开发与python等开发不太一样,会涉及到相当一些环境配置、环境依赖等,用以上这些工具去配置会很麻烦,也容易遇到很多坑,除非你对C#等.NET开发比较熟悉,否则还是建议选择专业的IDE,坑相对少一些

目前用于开发C#的IDE主要有两个:Visual Studio和Rider。这两个各有一些特点

Visual Studio2 Jetbrains Rider
个人免费 付费
内置代码补全,桌面开发体验更好3 代码检查更丰富,做跨平台开发更好
只能用于Windows 同时支持Windows/MacOS/Linux
内置丰富的开发环境配置4 (默认)专注于.NET平台开发5

注意事项

虽然.NET Core及.NET可以跨平台,但如果要做Winform、WPF、UWP或WinUI桌面应用开发,它们只适用于Windows系统,如果要跨平台桌面开发,需要选择UNO platform或Avalonia

通过目前的使用体验来看,建议是这两个都给安装了,因为有些场景下使用VS配置环境会比较方便(比如配置用户管理清单等,WPF热重载调试等),虽然很不喜欢看到VS经常卡死,代码提示感觉还没有Rider好,但是目前开发.NET上VS还是更好一些

如果是下载Rider,下载安装方法比较简单,和PyCharm等下载安装方法是类似的,网上教程也很多,可以自行搜索参考

但如果是下载安装Visual Studio,那相对要麻烦一些。因为VS提供的组件太多,听说从2017版开始从原来的iso安装变成了在线安装包下载安装,所以需要用户自行配置。如果你是在线开发的话,就不用顾虑太多,直接下载在线安装包并在线安装即可,可以跳过下面的内容了

如果你需要离线安装的话,需要做下面的配置

1、 需要下载vs_community.exe程序(可以到VS官网下载)

2、 通过命令行选择需要下载的工作负载,我比较推荐下载这些工作负载

  • ASP.NET 和 Web 开发(如果要做Web开发)
  • .NET 桌面开发
  • 使用 C++ 的桌面开发(不是必选项,但建议安装,避免一些需要MSVC的场景)
  • 通用 Windows 平台开发

因此需要通过下面的命令行进行安装6

Batchfile
 vs_community.exe --layout C:\vs 
     --add Microsoft.VisualStudio.Workload.CoreEditor 
     --add Microsoft.VisualStudio.Workload.ManagedDesktop 
     --add Microsoft.VisualStudio.Workload.NativeDesktop 
     --add Microsoft.VisualStudio.Workload.NetWeb 
     --add Microsoft.VisualStudio.Workload.Universal  
     --add Microsoft.Component.HelpViewer 
     --add Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs  
     --includeRecommended  
     --lang Zh-cn

然后在网络环境比较好的情况下下载VS,以避免一些意外报错。同时VS的依赖比较大,需要有足够的硬盘空间

安装部分没有太多难点,可以直接双击运行vs_community.exe,然后根据提示安装即可

关于安装VS的一些注意事项

如果之前已经安装过VS,并且安装的工作负载和现在的不太一样,可能会出现一些缺少依赖的报错,目前原因不明,目前的解决办法是通过卸载之前安装过的VS后重新安装就能解决了

但如果之前没有安装过VS,在离线安装VS时还是会出现报错,有可能是下载的时候出现问题,需要重新下载

关于第三方依赖问题

虽然这个话题对于刚学C#的人来说有一些遥远,但是这里还是要说明一下,以免会踩坑

目前下载C#的第三方依赖主要是在nuget上下载,如果是在线开发,无论是在Rider还是在VS上都有GUI界面去操作,这里不过多介绍。如果是离线开发的话,你需要在以上网站上下载nuget的程序,然后可以通过下面的命令下载相关依赖7

Batchfile
nuget install Microsoft.WindowsAppSDK -SolutionDirectory C:\Downloads\ -PackageSaveMode nupkg
关于下载依赖的注意事项

下载nuget包有一些细节要注意

  1. 建议在干净的Windows系统上使用,在某些系统中使用以上命令,会提示证书无法验证等错误
  2. 在nuget上搜索到的nuget包名称和实际下载的nuget命令是不完全一样的,具体细节可以去网上搜索

下载好相关依赖后需要对IDE做一些配置,下面以VS为例做介绍8

1、打开VS设置

2、找到下面截图中的设置位置

nuget

3、将第一项去勾->添加包含nuget包的目录->点击更新

这样就设置好了,以后可以离线安装nuget包

补充一种情况

近期调试某个项目时需要microsoft.aspnetcore.app.ref等一大堆依赖,如果你按照以上的方法下载,会得到NU500报错,一开始也没有头绪,后来发现nuget.org是可以单独下载这个nuget包,所以这种情况下只能手动下载并配置离线nuget依赖了

关于MSDN文档

很多人都会推荐通过MSDN去学习C#,因为MSDN文档很详细,例子也很多,还自带中文,可能有的人会觉着只要看MSDN就行了。

但是!!!我个人是不推荐这样做的,就目前而言,MSDN在介绍C#的部分,内容排版是相对混乱的,学习起来容易深一脚、浅一脚,并没有做到循序渐进的引导开发者学习。所以建议先找一些第三方视频/书籍教程,学会基本语法后再看MSDN文档会更好

还有,.NET涉及到的知识点会比python多太多,光C#的语法糖就够折腾研究一段时间了,还有如果要研究WPF桌面开发,xaml的很多特性,比如数据绑定、命令、事件、MVVM等,也不是一朝一夕就能啃下来。不过现在有了AI,可以在遇到问题的时候边问AI边总结学习这些特性

总结

经过以上的各种配置,再加上一些踩坑,相信你应该可以配置好C#开发环境。当然,这只是C#开发的第一步,后面还有更多的问题和坑需要解决,比如我自己就遇到有的项目会涉及到不同版本的.NET,需要不同的依赖,尤其一打开项目就有一大堆报错,调整几次都还有很多报错导致无法启动,很容易导致心态崩溃,这也没有什么好办法,只能去不断的尝试并搜索答案去解决


  1. 没有选择.NET 6的另一个理由,是因为前段时间配置环境时发现怎么测试都无法开发WPF应用,会出现一大堆程序集等错误,有些莫名其妙,但是选择.NET 8就没有这个问题,有一些迷惑 

  2. 这里特指社区版,而不是专业版或企业版,且建议使用VS 2022 

  3. 目前测试WPF开发有热重载,但是Rider似乎没有;VS对.NET Framework优化比Rider更好,UI部分调试上VS更佳 

  4. 需要单独安装相应的工作负载组件 

  5. 可以通过插件开发其他类型项目,比如python等 

  6. Microsoft.Component.HelpViewer是下载帮助文档,根据自己需要

    Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs这个是下载WinUI相关组件,但是目前测试发现还要一些依赖,如果不需要就可以删掉

    以上命令是为了方便阅读而做了换行,实际运行时需要放在同一行运行

    其中--includeRecommended--all有什么区别暂时不清楚,你可以尝试看看 

  7. 其中需要将Microsoft.WindowsAppSDK替换成你需要下载的nuget包名称 

  8. 之所以不提及Rider,是因为它配置起来没有VS方便,而且没有可视化界面去配置