首先,IDE 选择哪个版本(大家强调很多次了)
ET6 依赖.NET 6 ,IDE应当选择:VS 2022 或 Rider2021.3.x(对应支持.NET 6 的版本,可以从 Rider官方文章得到相关信息)
VS 2019、Rider2021.1.x 均不支持.NET 6,因此都无法正常使用。
—
VS 2019 只会在编译时报错,无法通过。
Rider 不支持.NET 6 的版本会自动提示"不完全支持.NET 6″的提示。(这一点 Rider 做的比较好,问题明确)
—
其次,VS 2019 的报错信息里能提炼出什么信息
现在 IDE,应该选择什么版本已经明确了。
回头看,当我错误的使用 VS2019 来[生成解决方案] “ET\Client-Server.sln” 时,所发生的各种问题。
全部报错内容如图:

逐步来看几个问题,
- 第一个报错,“Server.Model” 出现问题,无法编译通过,也就无法生成 “Server.Model.dll”。
- 第二个报错,“Server.Model.dll” 缺失,现在知道是 1. 导致的,“Server.Hotfix” 依赖 “Server.Model”。
- 第三个报错,“Server.Model.dll” 缺失,现在知道是 1. 导致的,“Server.App” 依赖 “Server.Model”。
- 第四个报错,“Tools.App” 出现问题,无法编译通过,无法生成 “Tools.App.dll”。
然后来看报错信息,
*
- 和 3. 都是因为对 1. 的依赖导致的,所以我们只需要看 1. 和 4.的报错信息
*
- 和 4.相互没有关联,而且仔细阅读报错信息后,发现 1.和 4.的报错信息完全相同。
现在只需要关注一条报错信息:(如下)
无法从 C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.1\analyzers\dotnet\cs\
System.Text.Json.SourceGeneration.dll 创建分析器
System.Text.Json.SourceGeneration.JsonSourceGenerator 的实例:
未能加载文件或程序集“Microsoft.CodeAnalysis, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件
- 我知道这里引用了如下路径
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.1\analyzers\dotnet\cs\
System.Text.Json.SourceGeneration.dll
也就是 .NET6 的System.Text.Json.SourceGeneration.dll
- 解决方案中有逻辑需要
System.Text.Json.SourceGeneration.dll
来创建System.Text.Json.SourceGeneration.JsonSourceGenerator
的实例。
JsonSourceGenerator
是分析器运作所需要实例化的对象。
- 后面的
“Microsoft.CodeAnalysis, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”
可以查看这里。
类似此类*"无法创建分析器…实例: 无法加载文件或程序集'……'或其依赖项之一。找不到指定的文件。"
*的报错,直接搜索的结果五花八门。
对于本例参考:
- https://blog.csdn.net/weixin_34236497/article/details/91935908
- https://www.nuomiphp.com/eplan/120266.html
两个例子均提到"版本支持"问题。
由此,可以认为,在"版本支持"这种平时可能不会太多见的"极端情况",很可能出现类似
"无法创建分析器…实例: 无法加载文件或程序集'……'或其依赖项之一。找不到指定的文件。"
的报错信息。
如果以后遇到类似问题,可以往"IDE 版本对自己项目依赖项版本支持与否"的方向考虑。