使用csc时出现奇怪的警告

问题描述 投票:0回答:1

当我使用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。

c# visual-studio compiler-errors command-prompt
1个回答
0
投票

C#编译器(csc)查找当前目录中的引用,-lib选项中提到的任何路径以及LIB环境变量。不幸的是,当你启动Visual Studio命令提示符时,它会运行vcvarsall.bat来设置LIB环境变量,但是C ++链接器也会使用它来查找库(静态的)。您在问题中提到的文件夹包含C ++库,但没有任何托管代码。我想这是一个错误的行为。我确实看到它在我的机器中设置

LIB variable set

© www.soinside.com 2019 - 2024. All rights reserved.