关于搭建.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
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
nuget install Microsoft.WindowsAppSDK -SolutionDirectory C:\Downloads\ -PackageSaveMode nupkg
关于下载依赖的注意事项
下载nuget包有一些细节要注意
- 建议在干净的Windows系统上使用,在某些系统中使用以上命令,会提示证书无法验证等错误
- 在nuget上搜索到的nuget包名称和实际下载的nuget命令是不完全一样的,具体细节可以去网上搜索
下载好相关依赖后需要对IDE做一些配置,下面以VS为例做介绍8
1、打开VS设置
2、找到下面截图中的设置位置
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,需要不同的依赖,尤其一打开项目就有一大堆报错,调整几次都还有很多报错导致无法启动,很容易导致心态崩溃,这也没有什么好办法,只能去不断的尝试并搜索答案去解决
-
没有选择.NET 6的另一个理由,是因为前段时间配置环境时发现怎么测试都无法开发WPF应用,会出现一大堆程序集等错误,有些莫名其妙,但是选择.NET 8就没有这个问题,有一些迷惑 ↩
-
这里特指社区版,而不是专业版或企业版,且建议使用VS 2022 ↩
-
目前测试WPF开发有热重载,但是Rider似乎没有;VS对.NET Framework优化比Rider更好,UI部分调试上VS更佳 ↩
-
需要单独安装相应的工作负载组件 ↩
-
可以通过插件开发其他类型项目,比如python等 ↩
-
Microsoft.Component.HelpViewer是下载帮助文档,根据自己需要Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs这个是下载WinUI相关组件,但是目前测试发现还要一些依赖,如果不需要就可以删掉以上命令是为了方便阅读而做了换行,实际运行时需要放在同一行运行
其中
--includeRecommended和--all有什么区别暂时不清楚,你可以尝试看看 ↩ -
其中需要将
Microsoft.WindowsAppSDK替换成你需要下载的nuget包名称 ↩ -
之所以不提及Rider,是因为它配置起来没有VS方便,而且没有可视化界面去配置 ↩
