Когда я компилирую с помощью csc.exe, я получаю странное предупреждение:
C:\...\>csc HelloWorld.cs /o- /target:exe
Microsoft (R) Visual C# Compiler version 2.9.0.63208 (958f2354)
Copyright (C) Microsoft Corporation. All rights reserved.
warning CS1668: Invalid search path 'C:\Program Files (x86)\Windows Kits\10\lib\10.0.17134.0\ucrt\x86' specified in 'LIB environment variable' -- 'directory does not exist'
Кажется, что с компиляцией все в порядке, но что вызывает это предупреждение? Что это за переменная LIB?
Я запускаю это в Командная строка разработчика VS 2017, когда я запускаю прямо из командной строки vanilla, все в порядке:
C:\...\>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\csc.exe" HelloWorld.cs /target:exe /o+
Microsoft (R) Visual C# Compiler version 2.9.0.63208 (958f2354)
Copyright (C) Microsoft Corporation. All rights reserved.
В файле winsdk.bat есть несколько ссылок на UCRT. Я думаю, что они должны включать библиотеки времени выполнения C, но их нет на диске для версии 10.0.17134.0.
Дуп? stackoverflow.com/a/857027/993547
Какую версию Visual Studio вы установили?
@PatrickHofman не точный дубликат, я не думаю. Постойте, чтобы пометить это сейчас.
@PatrickHofman У меня 2017 установлен.
Почему бы нет.......?
@PatrickHofman может оказаться, ссылки, если они были найдены, очень старые. Может быть новая вещь или обнаруженная ошибка. Проблема, похоже, в командном файле запуска консоли разработки.
Вероятно, существует старый путь к LIB. Измените это, и все готово.
Какая версия 2017 года?
@PartrickHofman Там есть LIB, настроенный на C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x86;C:\Program Files (x86)\Windows Kits\10\lib\10.0.17134.0\ucrt\x86;C:\Program Files (x86)\Windows Kits\10\lib\10.0.14393.0\um\x86;. Просто нужно найти, где он устанавливается.
Visual Studio - это версия 15.8.2.
Позвольте нам продолжить обсуждение в чате.





Компилятор C# (csc) ищет ссылки в текущем каталоге, любом пути, указанном в параметре -lib, и переменной среды LIB. К сожалению, когда вы запускаете командную строку Visual Studio, он запускает vcvarsall.bat, который устанавливает переменную среды LIB, но также используется компоновщиком C++ для поиска библиотек (статических). В папке, которую вы упомянули в вопросе, есть библиотеки C++, но нет управляемого кода. Полагаю, это неправильное поведение. Я вижу, что он устанавливается в моей машине
Где работает vcvarsall.bat? Я этого не вижу?
(Win 8 или новее) Из меню «Пуск» -> введите «Командная строка». Выберите «Командная строка разработчика для Visual Studio». Щелкните правой кнопкой мыши «Открыть расположение файла». Откроется файл ярлыка. Щелкните правой кнопкой мыши и откройте свойства файла ярлыка. Командная строка для запуска будет примерно такой
(победа 8 или новее) С самого начала -> Откройте «Командную строку разработчика для Visual Studio». Щелкните правой кнопкой мыши «Открыть расположение файла». Откроется файл ярлыка. Откройте свойства ярлыка. В командной строке будет% comspec% / k "" C: \ ...... \ VsDevCmd.bat "". В то время как если вы попробуете "командную строку MSBUild" с самого начала и сделаете то же самое, она будет выглядеть как% comspec% / k "" C: \ .... \ VsMSBuildCmd.bat "". Если вы откроете пакетный файл раньше, он определит LIB. Последнего не будет. Поэтому следует избегать открытия «командной строки разработчика» и запуска C#. Вместо этого используйте «командную строку MSBuild».
Связанный? social.msdn.microsoft.com/Forums/en-US/…