Ядро .NET выдает несколько ошибок в коде VS - PullRequest
1 голос
/ 07 мая 2019

Я импортирую основной проект .NET на компьютер с Windows 10.Это решение с проектом 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?Кроме того, на моем компьютере Linux с кодом vs дома он работает нормально.Любая помощь будет оценена.Я несколько часов бился головой и пробовал кучу вещей, но не мог заставить код работать с этим решением.

edit: вот мои файлы .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>

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Я не знаю, что может быть причиной проблемы, ваша установка выглядит нормально, только некоторые замечания

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

Не нужно, поскольку Microsoft.AspNetCore.App должен включать все зависимости.

Кроме того, у вас не должно быть версии, указанной в ссылке , поэтому она должна выглядеть примерно так:

<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файл а то версия там правильная

0 голосов
/ 08 мая 2019

это также может быть в вашем разделе app.Start.cs, попробуйте services.AddMvc () SetCompatibilityVersion (CompatibilityVersion.Version_2_2).

...