#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) .
-
Как описано в информации, ваш проект зависит от
Microsoft.AspNetCore.App v2.1.1
, для которого требуется версияMicrosoft.EntityFrameworkCore
(2.1.1 amp;amp; < 2.2.0). -
Однако, используя
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)
:
вам не нужно добавлять такую ссылку на пакет вручную.