MSB4242: не удалось запустить распознаватель SDK «Microsoft.Do tNet .MSBuildSdkResolver». Нелегальные персонажи в пути - PullRequest
0 голосов
/ 10 января 2020

Невозможно создать мой визуальный проект Stuidio из командной строки. (Visual studio 2019,. net core)

sourceanalyzer% MEMORY_TRANSLATION% -b% BUILDID% -logfile% LOGFILE_TRANSLATION% msbuild myChatBot.sln / t: перестроить / p: конфигурация = отладка / p : Platform = "any cpu"

мы пытаемся запустить сканирование для моего кода с использованием файла сценария / bat HP Fortify, строка кода выше - сборка sln из командной строки Visual Studio 2019 , Получение сообщения об ошибке, вставленного ниже

C: \ Users .... \ myprojVA.csproj: предупреждение MSB4242: не удалось запустить распознаватель SDK "Microsoft.Do tNet .MSBuildSdkResolver" , Нелегальные персонажи в пути. Проект "C: \ Users .... \ myprojVA.sln" (1) строит "C: \ Users .... \ myprojVA.csproj" (2) на узле 1 (Восстановить цели (и)) ). C: \ Users .... \ myprojVA.csproj: ошибка MSB4236: Указанный SDK 'Microsoft. NET .Sdk.Web' не найден. Готово Создание проекта "C: \ Users .... \ myprojVA.csproj" (Перестроить цели) - СБОЙ. C: \ Users .... \ myprojVA.csproj: предупреждение MSB4242: Не удалось запустить распознаватель SDK «Microsoft.Do tNet .MSBuildSdkResolver». Нелегальные персонажи в пути. Проект "C: \ Users .... \ myprojVA.sln" (1) создает "C: \ Users .... \ myprojVA.Tests.csproj" (3) на узле 1 (перестроить цель ( с)). C: \ Users .... \ myprojVA.Tests.csproj: ошибка MSB4236: Указанный SDK «Microsoft. NET .Sdk» не найден. Готово Создание проекта "C: \ Users .... \ myprojVA.Tests.csproj" (Перестроить цель (и)) - СБОЙ. Готово Создание проекта "C: \ Users .... \ myprojVA.sln" (Перестроить цели) - СБОЙ.

Сбой сборки.

C: \ Пользователи .... \ myprojVA.csproj: предупреждение MSB4242: Не удалось запустить распознаватель SDK «Microsoft.Do tNet .MSBuildSdkResolver». Недопустимые символы в пути.

C: \ Users .... \ myprojVA.Tests.csproj: предупреждение MSB4242: Не удалось запустить распознаватель SDK "Microsoft.Do tNet .MSBuildSdkResolver". Недопустимые символы в пути.

Есть мысли о том, почему не удалось запустить распознаватель SDK "Microsoft.Do tNet .MSBuildSdkResolver"? Как я могу это исправить?

Ответы [ 3 ]

1 голос
/ 29 января 2020

У меня также была эта ошибка с Visual Studio 2019. Я проверял путь Системную переменную и удалял кавычки (") везде, где я их нашел. Это решило проблему. (Я также переместил путь C:\Program Files\dotnet\ к первой записи в пути Системная переменная, но я не думаю, что это что-то изменило.)

Кажется, что некоторые из утилит. NET теперь рассматривают кавычки как недопустимые символы пути, например: Quote " символы в переменной PATH вызывают ошибку «Недопустимые символы в пути» при восстановлении nuget

1 голос
/ 10 января 2020

Есть мысли о том, почему не удалось запустить распознаватель SDK "Microsoft.Do tNet .MSBuildSdkResolver"? Как я могу это исправить?

Недопустимые символы в пути часто означают, что некоторые пути, такие как %MEMORY_TRANSLATION%, %BUILDID%, %LOGFILE_TRANSLATION% имеют некоторые недопустимые, нераспознанные строки или неправильные форматы .

Поэтому, пожалуйста, проверьте эти системные переменные и убедитесь, что они могут успешно обращаться, и я сомневаюсь, что ошибка связана с этим.

Besdies , при использовании MSBuild, пожалуйста, убедитесь, что вы установили Net Core, ASP.Net and web development и .Net Core cross-platform development в VS Installer.

enter image description here

enter image description here

Кроме того, , вы можете использовать msbuild xxxx.sln -t:rebuild, чтобы построить свой проект напрямую, чтобы проверить, является ли проблема фортификационным сканированием или процессом сборки.

Обратите внимание , что вы должны сначала ввести путь, где существует myChatBot.sln, используя cd xxxx(path), а затем использовать msbuild myChatBot.sln -t:rebuild.

0 голосов
/ 11 апреля 2020

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)

...