【问题标题】:Omnisharp 1.9.0 extension for VSCode not recognize CSProj file for DotNet CoreVSCode 的 Omnisharp 1.9.0 扩展无法识别 DotNet Core 的 CSProj 文件
【发布时间】:2017-10-15 04:04:14
【问题描述】:

当我尝试在 Visual Studio 代码中打开 dotNet core 1.1 mvc 项目时,无法识别 csproj 文件,我无法从项目中获取任何符号。

VSCode 显示一条 [警告] 消息,说 “某些项目无法加载,请查看输出以了解更多详细信息”。在输出中我收到以下消息:

[警告]:OmniSharp.MSBuild.MSBuildProjectSystem 无法处理项目文件“c:\Users\humam\Projects\AM\AM.csproj”。 c:\Users\humam\Projects\AM\AM.csproj(1,1) Microsoft.Build.Exceptions.InvalidProjectFileException:导入的 项目“C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Sdks\Microsoft.NET.Sdk.Web\Sdk\Sdk.props" 没有找到。确认声明中的路径是 正确,并且该文件存在于磁盘上。 c:\Users\humam\Projects\AM\AM.csproj 在 Microsoft.Build.Shared.ProjectErrorUtilities.ThrowInvalidProject(字符串 errorSubCategoryResourceName,IElementLocation elementLocation,字符串 资源名称,对象 [] 参数)在 Microsoft.Build.Shared.ProjectErrorUtilities.ThrowInvalidProject(IElementLocation elementLocation,字符串资源名称,对象 arg0) 在 Microsoft.Build.Evaluation.Evaluator4.ExpandAndLoadImportsFromUnescapedImportExpression(String directoryOfImportingFile, ProjectImportElement importElement, String unescapedExpression, Boolean throwOnFileNotExistsError, List1& 进口)在 Microsoft.Build.Evaluation.Evaluator4.ExpandAndLoadImports(String directoryOfImportingFile, ProjectImportElement importElement) at Microsoft.Build.Evaluation.Evaluator4.EvaluateImportElement(字符串 directoryOfImportingFile, ProjectImportElement importElement) 在 Microsoft.Build.Evaluation.Evaluator4.PerformDepthFirstPass(ProjectRootElement currentProjectOrImport) at Microsoft.Build.Evaluation.Evaluator4.Evaluate() 在 Microsoft.Build.Evaluation.Project.Reevaluate(ILLoggingService loggingServiceForEvaluation, ProjectLoadSettings loadSettings) 在 Microsoft.Build.Evaluation.Project.ReevaluateIfNecessary(ILoggingService loggingServiceForEvaluation, ProjectLoadSettings loadSettings) 在 Microsoft.Build.Evaluation.Project.Initialize(IDictionary2 globalProperties, String toolsVersion, String subToolsetVersion, ProjectLoadSettings loadSettings) at Microsoft.Build.Evaluation.Project..ctor(String projectFile, IDictionary2 globalProperties, String toolsVersion, String subToolsetVersion,ProjectCollection projectCollection, ProjectLoadSettings 加载设置)在 Microsoft.Build.Evaluation.ProjectCollection.LoadProject(字符串 文件名,IDictionary2 globalProperties, String toolsVersion) at OmniSharp.MSBuild.ProjectFile.ProjectFileInfo.Create(String projectFilePath, String solutionDirectory, ILogger logger, MSBuildOptions options, ICollection1 诊断,布尔值 isUnityProject) 在 OmniSharp.MSBuild.MSBuildProjectSystem.CreateProjectFileInfo(字符串 projectFilePath, Boolean isUnityProject)

知道这个问题的根源是什么吗?

我的环境是 Windows 10,包括用于 VSCode 的 DotNet Core SDK 1.1.0、VSCode 1.12.2 和 Omnisharp 1.9.0 C# 扩展以及其他扩展。

项目是使用 dotnet core 命令“dotnet new mvc --auth Individual -o AM”创建的。

【问题讨论】:

    标签: asp.net-core msbuild visual-studio-code omnisharp


    【解决方案1】:

    OmniSharp 似乎加载了目前不支持 .NET Core 项目的 VS 2017 构建工具:https://github.com/Microsoft/msbuild/issues/1697。尝试安装带有 Web 开发/跨平台工作负载的 VS 2017 版本,或者在您的项目中创建一个 omnisharp.json 文件,其中包含:

    {
        "msbuild": {
            "msbuildextensionspath": "C:\\Program Files\\dotnet\\sdk\\1.0.4\\Sdks"
        }
    }
    

    然后您需要通过命令行dotnet restore(因为构建工具也不包含 NuGet 版本)并在 VSCode 中重新加载项目。

    【讨论】:

    • Mac 用户应该如何处理这个问题?
    • 您可以使用 sdk 文件夹的路径,但发现在 macOS 上的工作方式不同,因此您的问题可能有所不同(这里的问题是不同的 Visual Studio 安装)。
    【解决方案2】:

    我在制作 .NET core 3 项目时偶然发现了同样的问题,这对我有用。

    我的 omnisharp.json 文件:

    {
        "MSBuild": {
            "UseLegacySdkResolver": true
        }
     }
    

    还有我的 global.json(可选,通过“dotnet --list-sdks”检查你的 sdk 版本)

    {
        "sdk": {
          "version": "3.0.100"
        }
    }
    

    来源:https://github.com/OmniSharp/omnisharp-vscode/issues/3287#issuecomment-536180721

    【讨论】:

    • 这解决了我的 OmniSharp 问题,同时安装了 VS2017 和 VS2019 以及 dotnet core SDK 3.1
    猜你喜欢
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    相关资源
    最近更新 更多