Skip to content

dotnet watch on net6.0 project results in FileNotFoundException for SystemRuntime #28942

@JoshWoodArup

Description

@JoshWoodArup

Description

When running the dotnet watch from .net 7 on a net6.0 project, a FileNotFoundException is thrown claiming that System.Runtime, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a could not be found. net7.0 and net5.0 projects work fine.

Reproduction Steps

dotnet new console -f net6.0
dotnet watch run

Expected behavior

The program should output Hello, World!.

Actual behavior

dotnet watch 🔥 Hot reload enabled. For a list of supported edits, see https://aka.ms/dotnet/hot-reload.
  💡 Press "Ctrl + R" to restart.
dotnet watch 🔧 Building...
  Determining projects to restore...
  All projects are up-to-date for restore.
  watchtest -> D:\Test\watchtest\bin\Debug\net6.0\watchtest.dll
dotnet watch 🚀 Started
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.
File name: 'System.Runtime, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
   at System.Reflection.RuntimeAssembly.GetType(QCallAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type, ObjectHandleOnStack keepAlive, ObjectHandleOnStack assemblyLoadContext)
   at System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
   at System.Reflection.Assembly.GetType(String name, Boolean throwOnError)
   at System.StartupHookProvider.CallStartupHook(StartupHookNameOrPath startupHook)
   at System.StartupHookProvider.ProcessStartupHooks()
dotnet watch ❌ Exited with error code -532462766
dotnet watch ⏳ Waiting for a file to change before restarting dotnet...

Regression?

This is a regression from SDK 7.0.100-rc.2

Known Workarounds

This can be worked around by creating a global.json file and pointing it to the v6 SDK (thanks @nicholashead)

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

Alternatively, adding any argument after dotnet watch run will work. e.g.

dotnet watch run bogus

(thanks @akorchev)

Configuration

.NET SDK:
Version: 7.0.100
Commit: e12b7af

Runtime Environment:
OS Name: Windows
OS Version: 10.0.19044
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\7.0.100\

Host:
Version: 7.0.0
Architecture: x64
Commit: d099f075e4

Other information

It's possible that my installation is corrupted. However I have uninstalled and reinstalled several times

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions