1803更新后VS15不识别git克隆的文件

Posted

技术标签:

【中文标题】1803更新后VS15不识别git克隆的文件【英文标题】:VS15 does not recognize files cloned by git after 1803 update 【发布时间】:2018-10-14 19:40:40 【问题描述】:

昨晚Win10更新到1803版本。

从那时起,Visual Studio (2015) 无法再编译任何新的克隆项目。 我通过 Windows 上的 Bash 从 gitlab 服务器克隆。在更新之前已经在磁盘上的旧项目仍然可以编译而不会出现任何问题。

似乎 Visual Studio 无法再定位/查找文件了,因为尝试编译会给出如下错误消息:

c1xx : fatal error c1083: cannot open source file: ...

有没有人遇到过同样的问题,或者知道为什么会发生这种情况?

编辑:

经过一番挖掘,归结为 CL.exe 编译器似乎不允许读取 git 创建的任何 sub 目录的问题。但是,它有权读取 ma​​in git 目录。

更多编辑:

原来是 Ubuntu 子系统的问题。通过 WSL 创建的目录不再被某些程序(在我们的例子中是 CL.exe)读取。

可惜……在更新之前 WSL 和 VS 一起工作就像一个魅力!

到目前为止的解决方案: 使用 git-Bash 直到 MS 解决问题...

【问题讨论】:

“Bash on Windows”是指git for windows吗? 不,Win 10 上的 Ubuntu 子系统。 我对此了解不多,但听说不建议同时从 Windows 和 linux 子系统访问文件。但是,让我们看看是否有专家意见。我添加了相关标签 @schmitze333 试试这个github.com/Microsoft/WSL/issues/3118 【参考方案1】:

我遇到了同样的问题。根据@Biswapriyo 提供的链接,我能够了解导致此问题的原因。

适用于 Linux 的 Windows 子系统 (WSL) 最近增加了对区分大小写的文件/文件夹的支持。但是,当使用cl.exe (c1xx) 编译器 时,它不会在当前版本的 WSL 中创建(或克隆)的文件夹中找到文件。原因是cl.exe 使文件和路径大写。因此,如果您的源文件在c:\tmp 中称为main.c,编译器会查找C:\TMP\MAIN.C。因此,区分大小写的文件匹配不起作用,编译器“无法打开源文件”。

要解决此问题,请在您的 WSL 环境中创建文件 /etc/wsl.conf 将以下文字添加到wsl.conf

[automount]

options=case=off

我已验证这解决了我在 WSL 更新中看到的问题。但是,它会破坏 WSL 处理仅在大小写相同的文件夹中不同的文件名。

【讨论】:

感谢调查!自从我换了公司,我现在可能在 UNIX 下开发,不再有问题了?。但我会将这个解决方案转发给我以前的同事。

以上是关于1803更新后VS15不识别git克隆的文件的主要内容,如果未能解决你的问题,请参考以下文章

本地 .git 文件夹的大小 VS 克隆后

为啥我安装的vs2010旗舰版安装后连头文件都不能识别呢?如:头文件#include<stdio.h>都不能识别?

git不识别exe文件

IntelliJ git 无法识别角度项目文件中的更改

VS Code的Git Control无法正确识别husky(NVM)问题

VS Code的Git Control无法正确识别husky(NVM)问题