Установка Nuget сервера Entity Framework Core SQL Server в VS для OSX, вызывающая ошибки сборки

#c# #macos #visual-studio #asp.net-core-webapi

#c# #macos #visual-studio #asp.net-core-webapi

Вопрос:

У меня возникла проблема при установке Entity Framework Core MSSQL в Visual Studio 2017 для OSX.

Я запускаю приведенную ниже команду, и пакет устанавливается правильно, но через несколько секунд я получаю красный (сборка?) ошибки, отображаемые во всех cs файлах.

Что я могу сделать, чтобы устранить эти ошибки?

dotnet add core-udemy package Microsoft.EntityFrameworkCore.SqlServer

Вывод

  ~/Projects/core-udemy  ⑂ master      
dotnet add core-udemy package Microsoft.EntityFrameworkCore.SqlServer
  Writing /var/folders/fw/_y4_qxxd2ls2lh_dmwrdlp000000gn/T/tmpO0Tl4b.tmp
info : Adding PackageReference for package 'Microsoft.EntityFrameworkCore.SqlServer' into project '/Users/richardcurteis/Projects/core-udemy/core-udemy/core-udemy.csproj'.
log  : Restoring packages for /Users/richardcurteis/Projects/core-udemy/core-udemy/core-udemy.csproj...
info :   CACHE https://api.nuget.org/v3-flatcontainer/microsoft.entityframeworkcore.sqlserver/index.json
warn : Detected package version outside of dependency constraint: Microsoft.AspNetCore.App 2.1.1 requires Microsoft.EntityFrameworkCore.SqlServer (>= 2.1.1 amp;amp; < 2.2.0) but version Microsoft.EntityFrameworkCore.SqlServer 2.2.3 was resolved.
error: Version conflict detected for Microsoft.EntityFrameworkCore. Install/reference Microsoft.EntityFrameworkCore 2.2.3 directly to project core-udemy to resolve this issue. 
error:  core-udemy -> Microsoft.EntityFrameworkCore.SqlServer 2.2.3 -> Microsoft.EntityFrameworkCore.Relational 2.2.3 -> Microsoft.EntityFrameworkCore (>= 2.2.3) 
error:  core-udemy -> Microsoft.AspNetCore.App 2.1.1 -> Microsoft.EntityFrameworkCore (>= 2.1.1 amp;amp; < 2.2.0).
info : Package 'Microsoft.EntityFrameworkCore.SqlServer' is compatible with all the specified frameworks in project '/Users/richardcurteis/Projects/core-udemy/core-udemy/core-udemy.csproj'.
info : PackageReference for package 'Microsoft.EntityFrameworkCore.SqlServer' version '2.2.3' added to file '/Users/richardcurteis/Projects/core-udemy/core-udemy/core-udemy.csproj'.
info : Committing restore...
log  : Generating MSBuild file /Users/richardcurteis/Projects/core-udemy/core-udemy/obj/core-udemy.csproj.nuget.g.props.
info : Writing lock file to disk. Path: /Users/richardcurteis/Projects/core-udemy/core-udemy/obj/project.assets.json
log  : Restore failed in 1.83 sec for /Users/richardcurteis/Projects/core-udemy/core-udemy/core-udemy.csproj.
  

Затем мой код отображает это во всех объявлениях классов…

 Error: The type or namespace 'IConfiguration could not be found (are you missing a using directive or an assembly reference?)'

Error: Predefined type 'System.Object' is not defined or imported

Error: Predefined type 'System.Void' is not defined or imported
  

введите описание изображения здесь

И

введите описание изображения здесь

Ответ №1:

Обычно ошибка «Обнаружен конфликт версий» возникает из-за того, что что-то не так с версиями dependency graph.

ошибка: обнаружен конфликт версий для Microsoft.EntityFrameworkCore. Установите / обратитесь к Microsoft.EntityFrameworkCore 2.2.3 непосредственно в project core-udemy для решения этой проблемы.

ошибка: core-udemy -> Microsoft.EntityFrameworkCore.SQLServer 2.2.3 -> Microsoft.EntityFrameworkCore.Relational 2.2.3 -> Microsoft.EntityFrameworkCore (>= 2.2.3)

ошибка: core-udemy -> Microsoft.AspNetCore.App 2.1.1 -> Microsoft.EntityFrameworkCore (>= 2.1.1 amp;amp; < 2.2.0) .

  1. Как описано в информации, ваш проект зависит от Microsoft.AspNetCore.App v2.1.1 , для которого требуется версия Microsoft.EntityFrameworkCore (2.1.1 amp;amp; < 2.2.0).

  2. Однако, используя dotnet add core-udemy package Microsoft.EntityFrameworkCore.SqlServer , вы устанавливаете «текущую» версию Microsoft.EntityFrameworkCore . Следующий снимок экрана из NuGet показывает, что вы устанавливаете Microsoft.EntityFrameworkCore (2.2.3) :

введите описание изображения здесь

Поскольку вы используете ASP.NET Core 2.1 , вы могли бы установить соответствующие пакеты с опцией --version 2.1.* :

 dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 2.1.*
  

Это приведет к зависимости, как показано ниже:

 <ItemGroup>

    ...

    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.*" />
</ItemGroup>
  

Как только вы устраните конфликт версий, вы можете запустить dotnet clean amp; dotnet restore amp; dotnet build , и тогда второй вопрос будет решен.


Кроме того, Microsoft.AspNetCore.App (v2.1.1) мета-пакет уже установил зависимость от Microsoft.EntityFrameworkCore.SqlServer (>= 2.1.1 amp;amp; < 2.2.0) :

введите описание изображения здесь

вам не нужно добавлять такую ссылку на пакет вручную.