Microsoft сделала код для инструмента msbuild с открытым исходным кодом. Взгляните здесь на реализацию DefaultSdkResolver.
Вы можете увидеть путь, к которому относится сообщение «Недопустимые символы в пути», созданный следующим образом:
var sdkPath = Path.Combine(BuildEnvironmentHelper.Instance.MSBuildSDKsPath, sdk.Name, "Sdk");
Сначала убедитесь, что у вас установлена хотя бы одна версия ". NET Core SDK". Если вы это сделаете, и если вы использовали папку установки по умолчанию, у вас должно быть что-то в этой папке: C: \ Program Files \ dotnet \ sdk \ 3.1.101 \ Sdks (настройте 3.1.101 в соответствии с имеющейся у вас версией)
Эта папка будет первым аргументом для метода Path.Combine. Я не понимаю, почему msbuild не ищет его в месте установки по умолчанию, но кажется, что вам нужно установить системную переменную, чтобы сообщить msbuild, где находятся ваши SDK.
Имя переменной: MSBuildSDKsPath Значение переменной: C: \ Program Files \ dotnet \ sdk \ 3.1.101 \ Sdks \
This переменная будет использоваться для предоставления значения для BuildEnvironmentHelper.Instance.MSBuildSDKsPath
ОЧЕНЬ ВАЖНО: Не используйте кавычки в значении переменной и заканчивайте sh его знаком "\", потому что Как видно из исходного кода, это значение будет объединено с остальными частями пути.
Этого должно быть достаточно для компиляции кода. Если больше проблем, попробуйте установить уровень детализации на диагностику c и проверьте значение переменной в начале журнала. (добавить параметр -v diag при вызове msbuild)