我想尝试 QuestPDF,为了启动预览器,您必须从 Developer PowerShell 运行 dotnet watch。当我尝试时,我收到了一堆错误。我还在一个新创建的 Maui 项目上尝试过它,没有添加 Nuget 包,但我仍然收到这些错误。
dotnet watch ❌ System.ArgumentNullException: Value cannot be null. (Parameter 'key')
at System.Collections.Generic.Dictionary`2.FindValue(TKey key)
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Microsoft.DotNet.Watcher.Tools.LaunchSettingsProfile.ReadDefaultLaunchProfile(LaunchSettingsJson launchSettings, IReporter reporter)
at Microsoft.DotNet.Watcher.Tools.LaunchSettingsProfile.ReadLaunchProfile(String projectDirectory, String launchProfileName, IReporter reporter)
at Microsoft.DotNet.Watcher.Program.RunAsync(CommandLineOptions options, CancellationToken cancellationToken)
at Microsoft.DotNet.Watcher.Program.RunAsync(String[] args)
dotnet watch ❌ An unexpected error occurred
我已经更新了监视工具,安装了 dotnet 8 SDK 并更新了 Visual Studio 2022。
升级到 .NET 8 后我也遇到了此错误。
tl;dr:我从.NET项目中删除了
Properties/launchSettings.json
,问题就消失了
线索是堆栈跟踪中的 ReadDefaultLaunchProfile 调用。使用以前版本的 dotnet watch,我们会在日志中收到以下警告:
无法应用启动配置文件“(默认)”。
但这并没有阻止任何工作,所以我们当时没有进一步调查。
知道 dotnet watch 命令在 dotnet 8 中已被彻底重写,如果新异常与旧警告具有相同的原因,但由于 .NET 8 版本不再优雅地处理,那就有意义了重写。
所以我找到了this SE post 关于旧的警告消息,并且该问题的解决方案提到了编辑 launchSettings.json。
当我查看项目中的Properties/launchSettings.json文件时,我发现它已经6年没有修改过,而且里面的所有内容都与IIS和IIS Express相关。我们已经很长一段时间没有使用过其中任何一个,因此我没有尝试编辑 launchSettings.json 以与 dotnet watch 一起使用,而是尝试简单地删除 launchSettings.json。之后,问题就消失了。注意:我还删除了 Properties 目录中唯一的其他文件,Properties/PublishProfiles/FolderProfile.pubxml
,因为它同样过时,但这不需要解决问题。
我不知道导致此错误的确切原因的完整细节,我也不知道此修复程序是否适用于每个人,但希望它会对某人有所帮助。