未能加载文件或程序集'System.Runtime,Version=7.0.0.0...' -安装.NET Core 7后,“dotnet监视运行”不工作

cigdeys3  于 2022-11-26  发布在  .NET
关注(0)|答案(4)|浏览(816)

在.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。如何修复此错误?

6yt4nkrj

6yt4nkrj1#

不是一个真实的的解决方案,但在改变了我的项目的目标框架之后,现在我可以使用dotnet watch run了。

作为一种解决方法,下面的global.json可能会有所帮助:选择要使用的.NET版本
在极少数情况下,您可能需要使用SDK的早期版本。您可以在global.json文件中指定该版本。“使用最新”策略意味着您只能使用global.json来指定早于最新安装版本的.NET SDK版本。

创建global.json文件并将其指向v6 SDK。global.json可以放在项目文件层次结构中的任何位置

{
    "sdk": {
        "version": "6.0.403"
    }
}

另一种解决方法是在CLI命令末尾添加一个伪字:

dotnet watch run xyz

您可以通过运行以下命令查找当前和已安装的SDK:

dotnet --info
xhv8bpkk

xhv8bpkk2#

对我来说,解决方案是在项目的根目录下添加一个global.json。
{“sdk”:{“版本”:“6.0.403”} }
对我来说,6.0.403迫使dotnet手表使用这个版本。

wqlqzqxt

wqlqzqxt3#

dotnet更新到7.0版本之后,我开始在使用cli命令时遇到运行时问题。特别是在一个.sln解决方案的项目中的dotnet watch
根据此处的.NET SDK DOC,这种行为是预期的。理想情况下,我认为应该从一开始就创建一个指向预期SDK版本的global.json文件,但事实并非如此。
如果你选择Tools〉Preferences〉SDK Locations〉.NET Core(在VS上),你将能够看到所有可用的版本,按照最新版本排序。我们要做的就是在项目中创建一个global.json文件,提供与项目属性中定义的相同的.net版本。这个文件如下所示:

{
  "sdk": {
    "version": "X.X.X"
  }
}

请注意,X.X.X应该由项目的.NET版本取代。
最后,问题是由cli搜索.NET版本的层次结构引起的,它将始终查找最新版本,除非您定义了此global.json文件。

xbp102n0

xbp102n04#

我没有尝试global.json的想法,所以如果你想安装dotnet@7.x,并且仍然能够在本地运行dotnet@6.x应用程序,这可能是必要的。

  • 已卸载dotnet@7.0.100
  • 同时删除文件夹C:\Program Files\dotnet\sdk\7.0.100--卸载未删除该文件夹。
  • 我还安装了最新的dotnet@6.x,即6.0.403,并确认dotnet --version显示6.0.403。

对于上下文,我想我已经安装了dotnet@7.x预发行版一段时间了(相当肯定)。然后昨天,我碰巧更新了完整的vs和构建工具,这可能会把dotnet@7.x踢到非预发行版或其他地方,导致这个问题。我很快就会更新到7.x,只是还没有。

相关问题