Ome*_*r K 44 .net c# dotnet-cli .net-7.0
.Net 7.0更新后,当我使用时dotnet watch run
出现此错误:
未处理的异常。System.IO.FileNotFoundException:无法加载文件或程序集“System.Runtime,版本= 7.0.0.0,文化=中性,PublicKeyToken = b03f5f7f11d50a3a”。该系统找不到指定的文件。文件名:'System.Runtime,Version=7.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a' at System.Reflection.RuntimeAssembly.GetType(QCallAssembly程序集,字符串名称,布尔值 throwOnError,布尔值ignoreCase,ObjectHandleOnStack类型,ObjectHandleOnStack keepAlive,ObjectHandleOnStack assemblyLoadContext) 在 System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, BooleanignoreCase) 在 System.Reflection.Assembly.GetType(String name, Boolean throwOnError) 在 System.StartupHookProvider.CallStartupHook(StartupHookNameOrPathstartupHook) 在 System.StartupHookProvider。进程启动钩子()
我可以使用 Visual Studio 成功构建并运行该项目,但无法使用dotnet cli。如何修复此错误?
Ome*_*r K 45
根据 Microsoft文档,SDK 使用最新安装的版本,这是预期的行为:
.NET CLI 必须为每个 dotnet 命令选择 SDK 版本。默认情况下,它使用计算机上安装的最新 SDK,即使项目面向早期版本的 .NET 运行时也是如此。
所以,这不是一个真正的解决方案,而是改变项目的目标框架解决了问题。
更改项目的 .Net 版本并不是一个简单的过程,因此作为解决方法,您可以在 CLI 命令末尾添加一个虚拟单词,它会起作用:
dotnet watch run xyz
Run Code Online (Sandbox Code Playgroud)
另一种解决方法,下面的global.json可能会有所帮助:选择要使用的 .NET 版本
在极少数情况下,您可能需要使用早期版本的 SDK。您可以在 global.json 文件中指定该版本。“使用最新”策略意味着您仅使用 global.json 来指定早于最新安装版本的 .NET SDK 版本。
创建一个 global.json 文件并将其指向 v6 SDK。global.json 可以放置在项目文件层次结构中的任何位置。
{
"sdk": {
"version": "6.0.403"
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过运行以下命令来查找当前和已安装的 SDK:
dotnet --info
Run Code Online (Sandbox Code Playgroud)
小智 13
在这里提供更多背景信息。更新到 7.0 版本后dotnet
,我开始使用命令遇到运行时问题cli
。特别是dotnet watch
在 .sln 解决方案的项目中。
根据此处的 .NET SDK DOC ,此行为是预期的。理想情况下,我认为global.json
应该从一开始就创建一个指向预期 SDK 版本的文件,但事实并非如此。
如果您访问“工具”>“首选项”>“SDK 位置”>“.NET Core”(在 VS 上),您将能够看到按最新版本排序的所有可用版本。要解决此问题,我们要做的就是global.json
在项目内创建一个文件,提供.net
项目属性中定义的相同版本。该文件如下所示:
{
"sdk": {
"version": "X.X.X"
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,XXX 应替换为项目的 .NET 版本。
最后,问题是由 .NET 版本搜索的层次结构引起的cli
,除了您定义此文件的情况之外,它将始终查找最新版本global.json
。
小智 5
对我来说,解决方案是将 global.json 添加到项目的根目录中。有了SDK版本,你想用就用。
{“sdk”:{“版本”:“6.0.403”}}
对于我来说 6.0.403 强制 dotnet watch 使用这个版本。
归档时间: |
|
查看次数: |
32626 次 |
最近记录: |