Обратите внимание, что метод ToList()
запускает команду SQL, например, при первом использовании соответствующей библиотеки DLL.Итак, просто ваша ошибка говорит о том, что существует несоответствие зависимостей для Microsoft.EntityFrameworkCore.SqlServer
или System.Data.SqlClient
, вы знаете, что второй является зависимостью для первый .Существуют некоторые зависимости и для второй , однако, я думаю, что ваша проблема не в этом.
Извлеките ссылки по умолчанию (версии) после упаковки и попробуйте перейти на подходящую.один.К сожалению, мы не можем воспроизвести вашу проблему, поэтому попробуйте это решение и сообщите нам результат.
Редактировать
Согласно документации dotnet-pack :
Зависимости NuGet упакованного проекта добавляются в файл .nuspec, поэтому они правильно разрешаются при установке пакета.Ссылки между проектами не упакованы внутри проекта.В настоящее время вы должны иметь пакет для каждого проекта, если у вас есть зависимости от проекта к проекту.
Веб-проекты по умолчанию не упаковываются.Чтобы переопределить поведение по умолчанию, добавьте свойство <IsPackable>true</IsPackable>
(внутри <PropertyGroup>
) к вашему .csproj файлу.
Я думаю, вам нужно включить следующее в ваш .csproj
file:
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
<PackageReference Include="System.Data.SqlClient" Version="4.4.0"/>
</ItemGroup>
Кроме того, больше нет необходимости использовать dotnet restore
на основании следующих данных из dotnet-pack документации :
Запускс .NET Core 2.0 вам не нужно запускать dotnet restore
, потому что он запускается неявно всеми командами, такими как dotnet build
и dotnet run
, для которых требуется восстановление.Это все еще допустимая команда в определенных сценариях, где имеет смысл выполнить явное восстановление.