У меня есть проект, который использует 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.
.....
Как следует из ошибки, он ищет dll .net 7 в моем проекте, в то время как мой проект нацелен на .net 6!
Для быстрого взлома я добавил global.json в корень проекта, чтобы явно использовать .net 6 SDK для сборки моего проекта. Однако я хочу найти правильное решение и узнать причину этой ошибки.
Обратите внимание, что я сталкиваюсь с этой проблемой только с dotnet watch run. То есть, другие случаи, такие как dotnet build, dotnet run, dotnet publish, все в порядке!
Вам нужно будет заглянуть в свой файл web.config или другие используемые конфигурации. Вы специально ищете теги <assemblies>, поэтому вам нужно будет искать все вхождения <assemblies в вашем репо. Просмотрите все совпадения и посмотрите, какая у них версия, проблемная сборка в вашем случае System.Runtime, но не исключено, что у вас есть и другие подобные проблемы.
@Mojtaba как-то твои сборки указаны. У вас есть AppFile.config?
Нет. Обычно в приложениях net core нет web.config или appfile.config. Кстати, если ваша теория верна, почему ошибка не возникает для других команд, например, dotnet build или dotnet run
Это дубликат этого, у которого имхо также неправильный ответ помечен как истинный.
Правильным ответом должен быть этот , который ссылается на оригинальную документацию.
Это ожидаемое поведение и критическое изменение, потому что .NET cli всегда будет искать последнюю версию, за исключением случая, когда вы определяете это в файле global.json.
Спасибо, что указали мне на эту ветку, хотя я бы выбрал лучшее название, чтобы сделать ее более доступной для поиска. Но я до сих пор не могу понять, почему они сделали такой дизайн, который dotnet watch run не работает, а dotnet run работает! Самое смешное, что в их документации есть предложение: «В редких случаях вам может понадобиться использовать более раннюю версию SDK…». Использование dotnet watch run не редкий случай!!
Кстати, этот трюк, упомянутый в принятом ответе, мне понравился больше всего!
Спасибо. У меня нет ни web.config, ни использования термина assemblies в моем репо.