Я экспериментирую с Visual Studio Code, .net core 2.2 и entityframework в одном миксе.
Я делаю следующие шаги:
1) создаю новый sln
dotnet new sln --name MySln
2)создать вебапи:
dotnet новый вебапи - имя api
3) создать класс lib:
dotnet new classlib -имя Api.DB
Добавить ссылки на проекты:
dotnet sln "MyApi.sln" добавить "api / api.csproj"
dotnetsln "MyApi.sln" добавить "Api.DB / Api.DB.csproj"
dotnet добавить ссылку ../Api.DB/Api.DB.csproj
Вclasslib Я добавляю следующее:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RuntimeFrameworkVersion>2.0.5</RuntimeFrameworkVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.4"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.4"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.4"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="2.0.0-preview1-final"/>
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
</ItemGroup>
</Project>
Проблема Я не понимаю этого, но я получаю следующую ошибку в classlib:
Тип 'AssemblyCompanyAttribute' существует в обеих 'Системах.Runtime, версия = 4.1.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'и' netstandard, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = cc7b13ffcd2ddd51 '(CS0433) [Api.DB]
EDIT:
забыл упомянуть, что при комментировании всех моих пакетов в classlib примерно так:
<!-- <PackageReference Include="Microsoft.EntityFrameworkCore" Version="*"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="*"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="*"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="*"/> -->
Тогда ошибка исчезает, что смущает меня еще больше?есть ли ошибка с пакетами?
Когда я удаляю их и пытаюсь изменить мой контекст БД, я получаю:
Запуск проекта 'Api.DB.csproj' нацелен на фреймворк '.NETStandard'.С этой платформой не связано время выполнения, и проекты, нацеленные на нее, не могут быть выполнены напрямую.Чтобы использовать средства командной строки .NET Framework Entity Framework с этим проектом, добавьте исполняемый проект, ориентированный на .NET Core или .NET Framework, который ссылается на этот проект, и установите его в качестве запускаемого проекта с помощью --startup-project;или обновите этот проект до перекрестного целевого .NET Core или .NET Framework.Для получения дополнительной информации об использовании EF Core Tools с проектами .NET Standard см. https://go.microsoft.com/fwlink/?linkid=2034781