Если вы ссылаетесь на пакет через PackageReference , вы также автоматически получаете все его зависимости.
Microsoft.EntityFrameworkCore.Sqlite 3.0.0 (таргетинг .NETStandard 2.1 ) зависит от Microsoft.EntityFrameworkCore.Sqlite.Core 3.0.0 , который зависит от Microsoft.EntityFrameworkCore.Relational 3.0.0 , который в конечном итоге зависитна Microsoft.EntityFrameworkCore 3.0.0 (что теперь далее зависит от других пакетов).
Таким образом, PackageReference из
<Project>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.0.0" />
</ItemGroup>
</Project>
получает вашпроецировать не только пакет верхнего уровня, но и все транзитивные зависимости как граф зависимостей - если PackageReferences этих проектов в ответ не помечены PrivateAssets
для предотвращения потока в родительский проект, какописано в документах .
Вы можете просмотреть все сборки, используемые вашим проектом, с помощью Solution Explorer из Visual Studio :
Или через .NET Core CLI , набрав: dotnet list package --include-transitive
Project 'Project' has the following package references
[netcoreapp3.0]:
Top-level Package Requested Resolved
> Microsoft.EntityFrameworkCore.Sqlite 3.0.0 3.0.0
Transitive Package Resolved
> Microsoft.Data.Sqlite.Core 3.0.0
> Microsoft.DotNet.PlatformAbstractions 3.0.0
> Microsoft.EntityFrameworkCore 3.0.0
> Microsoft.EntityFrameworkCore.Abstractions 3.0.0
> Microsoft.EntityFrameworkCore.Analyzers 3.0.0
> Microsoft.EntityFrameworkCore.Relational 3.0.0
> Microsoft.EntityFrameworkCore.Sqlite.Core 3.0.0
> Microsoft.Extensions.Caching.Abstractions 3.0.0
> Microsoft.Extensions.Caching.Memory 3.0.0
> Microsoft.Extensions.Configuration 3.0.0
> Microsoft.Extensions.Configuration.Abstractions 3.0.0
> Microsoft.Extensions.Configuration.Binder 3.0.0
> Microsoft.Extensions.DependencyInjection 3.0.0
> Microsoft.Extensions.DependencyInjection.Abstractions 3.0.0
> Microsoft.Extensions.DependencyModel 3.0.0
> Microsoft.Extensions.Logging 3.0.0
> Microsoft.Extensions.Logging.Abstractions 3.0.0
> Microsoft.Extensions.Options 3.0.0
> Microsoft.Extensions.Primitives 3.0.0
> SQLitePCLRaw.bundle_e_sqlite3 2.0.0
> SQLitePCLRaw.core 2.0.0
> SQLitePCLRaw.lib.e_sqlite3 2.0.0
> SQLitePCLRaw.provider.dynamic_cdecl 2.0.0
> System.Collections.Immutable 1.6.0
> System.ComponentModel.Annotations 4.6.0
> System.Diagnostics.DiagnosticSource 4.6.0
> System.Memory 4.5.3
> System.Text.Json 4.6.0
> System.Threading.Tasks.Extensions 4.5.2
Чтобы ответить на второй вопрос: вы можете просто установить Microsoft.EntityFrameworkCore
для библиотек классов, не связанных с провайдером баз данных, обеспечивающих общую функциональность Entity Framework Core .