Visual Studio Code和Omnisharp扩展与.NET Core SDK 3.0预览版出现错误

8

如何在Visual Studio Code中修正.Net Core 3.0项目中的错误?

我已经从官网下载了 .NET Core 3.0 SDK,并使用dotnet new命令在文件夹中创建了新项目。

但是,用Visual Studio Code打开该项目时,出现以下错误:

[fail]: OmniSharp.MSBuild.ProjectLoader 当前的.NET SDK不支持针对.NET Core 3.0的目标。请将目标设置为.NET Core 2.2或更低版本,或使用支持.NET Core 3.0的.NET SDK版本。[warn]: OmniSharp.MSBuild.ProjectManager 加载项目文件'c:\Users\Marco\source\Workspaces\WebDevelopment\Samples\hello-world\hello-world.csproj'失败。 c:\Users\Marco\source\Workspaces\WebDevelopment\Samples\hello-world\hello-world.csproj C:\Program Files\dotnet\sdk\2.2.102\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(137,5): Error: 当前的.NET SDK不支持针对.NET Core 3.0的目标。请将目标设置为.NET Core 2.2或更低版本,或使用支持.NET Core 3.0的.NET SDK版本。

[fail]: OmniSharp.MSBuild.ProjectManager 尝试更新未加载的项目:c:\Users\Marco\source\Workspaces\WebDevelopment\Samples\hello-world\hello-world.csproj


你安装了.NET Core SDK 3.0.100-preview-010184吗?尝试运行命令dotnet --version来查看当前的SDK版本。我在VS Code中进行了测试,它可以正确打开项目。 - Edward
我已经安装了.NET Core SDK 3.0.100-preview4-010525。使用2.2.1也能正常工作。 - Marco Duindam
你应该使用Visual Studio而不是Visual Studio Code。这是一个.NET Core项目,对吧? - Carlos Jafet Neto
1
你也有 Visual Studio 2019 预览版吗?我认为你需要它。然后确保卸载任何旧的 NuGet 包,以适应较旧的 SDK 版本。 - user9105725
1
https://dotnet.microsoft.com/download/dotnet-core/3.0... 警告横幅显示与我之前的评论相关的内容。 - user9105725
我使用Visual Studio Code,因为我不想安装Visual Studio 2019的预览版。过去我曾经遇到过不同版本的Visual Studio出现问题,使用Code可以防止这种情况再次发生。 - Marco Duindam
1个回答

9

虽然不是解决方案,但对我来说是一种替代方法:

我已经在Visual Code中使用了OmniSharp,并使用了.NET CORE 3.0.100-preview3-010431。问题似乎来自于由OmniSharp.MSBuild.Discovery.MSBuildLocator使用的MSBuild版本。

在Visual Code中,查看您的OmniSharp日志:

enter image description here

不确定您是否会喜欢这个解决方案,但在OmniShart日志中,我读到它正在使用Visual Studio 2017 MSBuild。由于我在VS 2017中遇到了.NET Core Preview 3项目的问题,所以我安装了Visual Studio Community 2019 RC。我的.NET CORE 3.0代码在VS 2019上运行,但我在Visual Code中仍然遇到了OmniSharp的问题。为了让它在Visual Code中正常工作,我只需将C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MsBuild重命名为C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild.disabled,并且在Visual Code中使用.NET Core一切都正常。

    Located 3 MSBuild instance(s)
        1: Visual Studio Enterprise 2017 15.9.28307.344 - "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin"
        2: Visual Studio Community 2019 16.0.28714.193 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin"
        3: StandAlone 15.0 - "c:\Users\JPB\.vscode\extensions\ms-vscode.csharp-1.17.1\.omnisharp\1.32.8\msbuild\15.0\Bin"
    Registered MSBuild instance: Visual Studio Enterprise 2017 15.9.28307.344 - "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin"

Becomes :

[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 2 MSBuild instance(s)
            1: Visual Studio Community 2019 16.0.28714.193 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin"
            2: StandAlone 15.0 - "c:\Users\JPB\.vscode\extensions\ms-vscode.csharp-1.17.1\.omnisharp\1.32.8\msbuild\15.0\Bin"
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Registered MSBuild instance: Visual Studio Community 2019 16.0.28714.193 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin"

结论:Omnisharp似乎需要支持 .net Core 3.0 的MSBuild。 我在除VS 2019之外的任何地方都找不到它。


那么,我们如何在没有安装VS2019的情况下构建Net Core 3.x项目呢?除了安装VS2019(或其中的某些部分)之外,还有其他方法吗? - psulek
你找到方法了吗,@psulek?当你使用Ubuntu时,没有使用VS2019的选项。 - Caio Gomes
1
@CaioGomes 我在没有安装VS 2019的Windows上遇到了这个错误。所以我安装了Jetbrains Rider IDE(但它不是免费的),并成功地构建了它。 - psulek
很高兴听到你找到了解决方案。我从dotnet core 3.0回退到2.2,现在它像魔法一样工作。我猜3.0对于Ubuntu来说还太新了。虽然我在Windows上使用VS2019时使用3.0,但它仍然可以正常工作。 - Caio Gomes

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