Странное предупреждение при использовании csc

Когда я компилирую с помощью 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.

Связанный? social.msdn.microsoft.com/Forums/en-US/…

Patrick Hofman 31.08.2018 14:47

Дуп? stackoverflow.com/a/857027/993547

Patrick Hofman 31.08.2018 14:48

Какую версию Visual Studio вы установили?

Patrick Hofman 31.08.2018 14:49

@PatrickHofman не точный дубликат, я не думаю. Постойте, чтобы пометить это сейчас.

BanksySan 31.08.2018 14:57

@PatrickHofman У меня 2017 установлен.

BanksySan 31.08.2018 14:57

Почему бы нет.......?

Patrick Hofman 31.08.2018 14:57

@PatrickHofman может оказаться, ссылки, если они были найдены, очень старые. Может быть новая вещь или обнаруженная ошибка. Проблема, похоже, в командном файле запуска консоли разработки.

BanksySan 31.08.2018 14:59

Вероятно, существует старый путь к LIB. Измените это, и все готово.

Patrick Hofman 31.08.2018 15:02

Какая версия 2017 года?

Patrick Hofman 31.08.2018 15:03

@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;. Просто нужно найти, где он устанавливается.

BanksySan 31.08.2018 15:08

Visual Studio - это версия 15.8.2.

BanksySan 31.08.2018 15:09

Позвольте нам продолжить обсуждение в чате.

BanksySan 31.08.2018 15:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
12
406
1

Ответы 1

Компилятор C# (csc) ищет ссылки в текущем каталоге, любом пути, указанном в параметре -lib, и переменной среды LIB. К сожалению, когда вы запускаете командную строку Visual Studio, он запускает vcvarsall.bat, который устанавливает переменную среды LIB, но также используется компоновщиком C++ для поиска библиотек (статических). В папке, которую вы упомянули в вопросе, есть библиотеки C++, но нет управляемого кода. Полагаю, это неправильное поведение. Я вижу, что он устанавливается в моей машине

LIB variable set

Где работает vcvarsall.bat? Я этого не вижу?

BanksySan 31.08.2018 20:48

(Win 8 или новее) Из меню «Пуск» -> введите «Командная строка». Выберите «Командная строка разработчика для Visual Studio». Щелкните правой кнопкой мыши «Открыть расположение файла». Откроется файл ярлыка. Щелкните правой кнопкой мыши и откройте свойства файла ярлыка. Командная строка для запуска будет примерно такой

Soundararajan 01.09.2018 05:44

(победа 8 или новее) С самого начала -> Откройте «Командную строку разработчика для Visual Studio». Щелкните правой кнопкой мыши «Открыть расположение файла». Откроется файл ярлыка. Откройте свойства ярлыка. В командной строке будет% comspec% / k "" C: \ ...... \ VsDevCmd.bat "". В то время как если вы попробуете "командную строку MSBUild" с самого начала и сделаете то же самое, она будет выглядеть как% comspec% / k "" C: \ .... \ VsMSBuildCmd.bat "". Если вы откроете пакетный файл раньше, он определит LIB. Последнего не будет. Поэтому следует избегать открытия «командной строки разработчика» и запуска C#. Вместо этого используйте «командную строку MSBuild».

Soundararajan 01.09.2018 05:54

Другие вопросы по теме