在.Net 7.0更新之后,当我使用dotnet watch run
时,我得到以下错误:
未处理的异常。系统.IO.FileNotFoundException:未能加载文件或程序集“System.Runtime,Version=7.0.0.0,Culture=neutral,PublicKeyToken= b03f5f7f11d50a3a”。系统找不到指定的文件。文件名:'系统.执行阶段,版本=7.0.0.0,文化特性=中性,公开密钥Token =b03f5f7f11d50a3a'位于系统.反映.执行阶段组件.GetType(QCallAssembly程序集、字符串名称、布尔值出错时抛出、布尔值忽略大小写、对象句柄堆栈类型、对象句柄堆栈保持活动、对象句柄堆栈程序集加载上下文)(字串名称,布林值发生错误时掷回,布林值忽略大小写)位于System.Reflection.Assembly.GetType(字串名称,布林值发生错误时掷回)位于System.StartupHookProvider.CallStartupHook(StartupHookNameOrPath startupHook)位于System.StartupHookProvider.ProcessStartupHooks()
我可以使用Visual Studio成功生成并运行项目,但无法使用dotnet cli。如何修复此错误?
4条答案
按热度按时间6yt4nkrj1#
不是一个真实的的解决方案,但在改变了我的项目的目标框架之后,现在我可以使用
dotnet watch run
了。作为一种解决方法,下面的global.json可能会有所帮助:选择要使用的.NET版本
在极少数情况下,您可能需要使用SDK的早期版本。您可以在global.json文件中指定该版本。“使用最新”策略意味着您只能使用global.json来指定早于最新安装版本的.NET SDK版本。
创建global.json文件并将其指向v6 SDK。global.json可以放在项目文件层次结构中的任何位置。
另一种解决方法是在CLI命令末尾添加一个伪字:
您可以通过运行以下命令查找当前和已安装的SDK:
xhv8bpkk2#
对我来说,解决方案是在项目的根目录下添加一个global.json。
{“sdk”:{“版本”:“6.0.403”} }
对我来说,6.0.403迫使dotnet手表使用这个版本。
wqlqzqxt3#
在
dotnet
更新到7.0版本之后,我开始在使用cli
命令时遇到运行时问题。特别是在一个.sln解决方案的项目中的dotnet watch
。根据此处的.NET SDK DOC,这种行为是预期的。理想情况下,我认为应该从一开始就创建一个指向预期SDK版本的
global.json
文件,但事实并非如此。如果你选择Tools〉Preferences〉SDK Locations〉.NET Core(在VS上),你将能够看到所有可用的版本,按照最新版本排序。我们要做的就是在项目中创建一个
global.json
文件,提供与项目属性中定义的相同的.net
版本。这个文件如下所示:请注意,X.X.X应该由项目的.NET版本取代。
最后,问题是由
cli
搜索.NET版本的层次结构引起的,它将始终查找最新版本,除非您定义了此global.json
文件。xbp102n04#
我没有尝试global.json的想法,所以如果你想安装dotnet@7.x,并且仍然能够在本地运行dotnet@6.x应用程序,这可能是必要的。
C:\Program Files\dotnet\sdk\7.0.100
--卸载未删除该文件夹。dotnet --version
显示6.0.403。对于上下文,我想我已经安装了dotnet@7.x预发行版一段时间了(相当肯定)。然后昨天,我碰巧更新了完整的vs和构建工具,这可能会把dotnet@7.x踢到非预发行版或其他地方,导致这个问题。我很快就会更新到7.x,只是还没有。