【问题标题】:.NET core throwing multiple errors in VS code.NET 核心在 VS 代码中引发多个错误
【发布时间】:2019-05-07 19:33:39
【问题描述】:

我正在 Windows 10 计算机上导入 .NET 核心项目。这是一个包含 mvc 项目和测试项目的解决方案。当omnisharp 正在加载时,它会引发多个错误。

第一个:

movie-data\imdb_id_retrieval\imdb_id_retrieval.csproj(0,0): Error: Version 2.2.203 of the .NET Core SDK requires at least version 16.0.0 of MSBuild. The current available version of MSBuild is 15.9.21.664. Change the .NET Core SDK specified in global.json to an older version that requires the MSBuild version currently available.

好的,所以我更新了 Visual Studio 以确保我拥有 MSBuild 16.0。仔细检查我跑了

C:\Users\mcdonago\source\repos\movie-data> dotnet msbuild -version
Microsoft (R) Build Engine version 16.0.450+ga8dc7f1d34 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

16.0.450.56488
PS C:\Users\mcdonago\source\repos\movie-data>

omnisharp 启动时仍然出现此错误。

第二个错误:

Microsoft.Build.Exceptions.InvalidProjectFileException: The SDK 'Microsoft.NET.Sdk.Web' specified could not be found.  c:\Users\mcdonago\source\repos\movie-data\imdb_id_retrieval\imdb_id_retrieval.csproj

人们建议我获取最新的 SDK。

PS C:\Users\mcdonago\source\repos\movie-data> dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   2.2.203
 Commit:    e5bab63eca

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.16299
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\2.2.203\

Host (useful for support):
  Version: 2.2.4
  Commit:  f95848e524

.NET Core SDKs installed:
  2.2.203 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.2.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.2.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.2.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download
PS C:\Users\mcdonago\source\repos\movie-data>

只有一个 sdk,它是最新的。人们建议我将我的 Project sdk 引用更改为“Microsoft.Net.Sdk”而不是“Microsoft.Net.Sdk.Web”。这允许omnisharp成功加载问题,但是我有很多错误,比如

The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?) (CS0246) [imdb_data_retrieval_test]

这似乎又是一大堆问题。

请注意,我的两个项目都成功编译并运行,所以我认为这是omnisharp 的问题?此外,在我家里有 vs 代码的 linux 计算机上,它工作正常。任何帮助,将不胜感激。我已经敲了几个小时,尝试了很多东西,但无法让 vs 代码与这个解决方案一起工作。

编辑: 这是我的 .csproj 文件。

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
    <PackageReference Include="HtmlAgilityPack" Version="1.9.1" />
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" />
    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.2.0" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />

  </ItemGroup>

</Project>

--

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>

    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.0" />
    <PackageReference Include="moq" Version="4.10.1" />
    <PackageReference Include="nunit" Version="3.11.0" />
    <PackageReference Include="NUnit3TestAdapter" Version="3.11.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\imdb_id_retrieval\imdb_id_retrieval.csproj" />
  </ItemGroup>

</Project>

【问题讨论】:

  • 你能添加你的csproj吗?了解更多信息可能会有所帮助
  • @rekiem87 好点。添加文件

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


【解决方案1】:

我不知道是什么导致了这个问题,你的设置看起来不错,只有一些备注

<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />

应该不是必需的,因为Microsoft.AspNetCore.App 应该包含所有依赖项。

另外,你应该not have the version specified in the reference,所以,它应该看起来像

<PackageReference Include="Microsoft.AspNetCore.App" />

据我了解,您的主要项目(第一个 csproj)有问题吗?我在更改 Net Core 版本时遇到了一些麻烦,因为某些库在新版本中无法按预期工作,您也可以创建一个新项目并在时间添加一个依赖项,在更改之间进行编译(您可以使用一个简单的空项目来完成),因此如果是某个导致问题的库,您可以丢弃。

例如,这是我们的 csproj 之一

<Project Sdk="Microsoft.NET.Sdk.Web">

    <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
        <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
        <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.App" />
        <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="2.2.0" />
        <PackageReference Include="Prometheus.Client.AspNetCore" Version="2.2.0" />
        <PackageReference Include="Prometheus.Client.HttpRequestDurations" Version="1.2.2" />
        <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
        <PackageReference Include="System.Net.Primitives" Version="4.3.0" />
    </ItemGroup>

    <ItemGroup>
        <ProjectReference Include="..\vtae.common\vtae.common.csproj" />
        <ProjectReference Include="..\vtae.data\vtae.data.csproj" />
        <ProjectReference Include="..\vtae.integrations\vtae.integrations.csproj" />
    </ItemGroup>

</Project>

还要检查你是否有一个 global.json 配置文件以及那里的版本是正确的

【讨论】:

    【解决方案2】:

    它也可能在你的 app.Start.cs 服务部分,试试 services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    【讨论】:

      猜你喜欢
      • 2021-06-15
      • 2020-03-25
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      相关资源
      最近更新 更多