【问题标题】:Installing .net-core 7 stops `dotnet watch run` working on .net-core 6 projects安装 .net-core 7 停止在 .net-core 6 项目上工作的“dotnet watch run”
【发布时间】:2022-11-19 11:02:38
【问题描述】:

我有一个使用 net6 作为目标框架的项目。我最近在我的电脑上安装了 .net core 7 SDK。之后,当我使用 dotnet watch run 时,我得到一个奇怪的错误:

Unhandled exception. 
System.IO.FileNotFoundException: 
Could not load file or assembly 'System.Runtime, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
The system cannot find the file specified.
.....

正如错误所暗示的那样,它正在我的项目中寻找 .net 7 dll,而我的项目是针对 .net 6 的!

为了快速破解,我在项目的根目录中添加了一个 global.json 以明确使用 .net 6 SDK 来构建我的项目。但是,我想要一个合适的解决方案,并知道这个错误背后的原因。

请注意,我只在dotnet watch run 遇到过这个问题。即,dotnet builddotnet rundotnet publish 等其他情况都可以!

【问题讨论】:

    标签: .net-core asp.net-core-webapi


    【解决方案1】:

    您将需要查看您的 web.config 文件或正在使用的其他配置。您正在专门寻找 <assemblies> 标签,因此您需要在您的存储库中搜索所有出现的 <assemblies。查看所有匹配项并查看它们的版本是什么,您的情况下有问题的程序集是System.Runtime,但您可能还有其他类似问题。

    【讨论】:

    • 谢谢。我的回购协议中既没有 web.config 也没有使用术语 assemblies
    • @Mojtaba 以某种方式指定了您的程序集。你有 AppFile.config 吗?
    • 没有。通常在 net core 应用程序中没有 web.configappfile.config。顺便说一句,如果您的理论是正确的,为什么其他命令不会出现错误,例如 dotnet builddotnet run
    【解决方案2】:

    这是 this one 的副本,恕我直言,错误答案也标记为 true。

    正确答案应该是this one,链接到original documentation

    这是预期的行为和重大更改,因为 .NET cli 将始终查找最新版本,除非您在 global.json 文件中定义它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-19
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 2021-11-07
      • 2022-08-14
      相关资源
      最近更新 更多