Ядерная установка Entity Framework Core SQL Server в VS для OSX, вызывающая ошибки сборки - PullRequest
1 голос
/ 26 марта 2019

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

Я запускаю указанную ниже команду, и пакет устанавливается правильно, но через несколько секунд я получаю красные ошибки (build?), Которые отображаются во всех 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 && < 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 && < 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

enter image description here

и

enter image description here

1 Ответ

1 голос
/ 27 марта 2019

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

Ошибка: обнаружен конфликт версий для Microsoft.EntityFrameworkCore.Установите / обратитесь к Microsoft.EntityFrameworkCore 2.2.3 напрямую в 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 && <2.2.0) </strong>.

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

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

enter image description here

Поскольку вы используете 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 & dotnet restore & dotnet build, и тогда второй вопрос будет решен.


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

enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...