【问题标题】:Odd warning when using csc使用 csc 时出现奇怪的警告
【发布时间】:2018-08-31 12:45:44
【问题描述】:

当我使用 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 变量是什么?

我在 Developer Command Prompt 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 版本,它们不存在于光盘上。

【问题讨论】:

  • 你安装了什么版本的 Visual Studio?
  • @PatrickHofman 不是完全重复的,我不认为。暂时不要标记它。
  • @PatrickHofman 可能会是这样,到目前为止找到的参考文献都非常古老。可能是新事物或重新出现的错误。问题似乎出在开发控制台的启动批处理文件中。

标签: c# visual-studio compiler-errors command-prompt


【解决方案1】:

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

【讨论】:

  • 它在哪里运行vcvarsall.bat?我没看到?
  • (win 8 或更高版本)从开始菜单 -> 键入“命令提示符”。选择“Visual Studio 的开发人员命令提示符”。右键单击“打开文件位置”。它将打开一个快捷方式文件。右键单击并打开快捷方式文件的属性。启动的命令行将是这样的
  • (win 8 或更高版本)从开始 -> 打开“Visual Studio 的开发人员命令提示符”。右键单击“打开文件位置”。它将打开一个快捷方式文件。打开快捷方式的属性。命令行将为 %comspec% /k ""C:\...... \VsDevCmd.bat""。而如果您从一开始就尝试“MSBUild 命令提示符”并执行相同操作,它看起来像 %comspec% /k ""C:\....\VsMSBuildCmd.bat""。如果您以前打开批处理文件,它将定义 LIB。后期不会。因此,应避免打开“开发人员命令提示符”并运行 c#。请改用“MSBuild 命令提示符”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多