VSCode“无法打开file.cs:文件未找到”

6

我通过重命名文件夹或其他方式来破坏了我的vscode项目。不确定发生了什么事。问题是,尽管我仍然可以构建和运行,但是某些东西已经被搞乱,以至于当我遇到编译错误时,例如双击消息时,它会说

无法打开“XXXController.cs”:文件未找到(file://Controllers/XXXController.cs)

在某个地方,似乎已经丢失了源文件夹中三个项目之一的cs文件的完整路径。我原本以为vscode不维护项目文件列表,所以我不知道如何恢复,除非重新创建项目?

还有其他问题-智能感知似乎也不适用于此项目。

有人有任何想法如何尝试修复这个问题吗?

编辑:它提供了一个选项来创建“缺失”的文件。当我这样做时,它创建一个新文件在C:\Controllers\而不是在\ Controllers文件夹下的*.csproj位置?

问候 戴夫


我认为它有某种列表,因为它可以跟踪最近打开的文件和目录。 - Aluan Haddad
@AluanHaddad 是的,没错。似乎构建错误包含一个相对文件引用,但它不是相对于它认为的根文件夹,我还不能确定出问题在哪里。 - David Waterworth
你正在使用许多插件。由于有几个,不知道具体是哪些,很难说。我建议尝试禁用它们全部。 - Aluan Haddad
我只激活了 C# 和 Docker 扩展。我会尝试重新创建项目。 - David Waterworth
1
这可能是vscode中的一个bug。我通过“dotnet new webapi”重新创建了项目,然后使\ Controllers \ ValuesController.cs文件无效。它似乎存在问题,对于不在项目根文件夹中的cs文件,它似乎假定它们相对于C:\。 - David Waterworth
1个回答

12

问题似乎在于默认情况下,MSBuild在报告错误时不输出完整路径。Omnisharp-VSCode需要完整路径才能解析文件,因此将GenerateFullPaths=true添加到.vscode\tasks.json中似乎可以解决此问题。

即:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/Test.Api/Test.Api.csproj",
                // Ask msbuild to generate full paths for file names.
                "/property:GenerateFullPaths=true"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}

1
我的tasks.json看起来有点不同。我不得不在“command”行的末尾添加arg:"command": "dotnet build MyProject.csproj /property:GenerateFullPaths=true", - GraehamF
@GraehamF 我认为架构已经改变,你可能正在使用一个更新或较旧版本的文件? - David Waterworth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接