C # Visual Studio EF инструменты устарели - должен использовать 3.0.0, но использует только 2.2.4 - PullRequest
0 голосов
/ 03 октября 2019

Я запускаю следующую команду в Powershell для создания начальной миграции:

dotnet ef migrations add INITIAL --context CATALOGDbContext -s ../Jobsledger.API

Пока она работает (я могу создать миграцию и базу данных), она выдает следующее предупреждение:

Версия инструментов EF Core '2.2.4-servicing-10062' старше, чем во время выполнения '3.0.0'. Обновите инструменты для последних функций и исправлений ошибок.

Это, я думаю, приводит к проблеме с результатом, что в моих таблицах теперь отсутствует идентификатор в первой записи. Его буквально пустым. Я не знаю, как это прекрасно работает в 2.2.4, но теперь обновил до 3.0.0, создав первую запись с пустым полем id ...

Я пошел на сайт " Entity Framework Coreсправочник по инструментам - Консоль диспетчера пакетов в Visual Studio", которая выполнила шаги по обновлению инструментов.

Хотя у меня все установлено на 3.0.0, я все еще получаю вышеуказанную ошибку, хотя я и пыталсяих предложения на этой странице. Я обновил файл .csproj и даже попробовал использовать опцию «Диспетчер пакетов», и все равно получаю сообщение об ошибке.

Я использую Visual Studio 19, полностью обновленную до версии 16.4.0 Preview 1.

Как заставить это предупреждение исчезнуть, т.е. как обновить инструменты EF?

ОБНОВЛЕНИЕ Поэтому я перестроил свой проект с нуля, убедившись, что я добавил все пакеты снова и все еще получилтот же результат.

Я также удалил все в каталоге nuget и позволил ему перезагрузить все пакеты снова и все же получил тот же результат.

Этот проект состоит из трех проектов веб-проекта и двухбиблиотеки классов базы данных.

Вот мой файл csproj для веб-проекта.

<PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
    <TypeScriptToolsVersion>3.6</TypeScriptToolsVersion>
    <TypeScriptBuildMode>true</TypeScriptBuildMode>
</PropertyGroup>

<ItemGroup>
  <Compile Remove="ControllerServices\Catalog\UserServices\UserValidateService.cs" />
  <Compile Remove="Controllers\SampleDataController.cs" />
  <Compile Remove="Controllers\SelectDataController.cs" />
</ItemGroup>

<ItemGroup>
  <Content Remove="wwwroot\favicon.ico" />
</ItemGroup>

<ItemGroup>
  <None Remove="ClientApp\app\components\clients\clientList\client-detail-view.ts" />
  <None Remove="ClientApp\app\components\clients\clientList\objectkeysValueConverter.ts" />
  <None Remove="ClientApp\app\navmenu\ActiveRoute.ts" />
</ItemGroup>


<ItemGroup>
    <PackageReference Include="FluentValidation" Version="8.5.0" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.IdentityModel.Tokens" Version="5.5.0" />
    <PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.19" />
</ItemGroup>


<ItemGroup>
  <Folder Include="wwwroot\" />
</ItemGroup>


<ItemGroup>
  <ProjectReference Include="..\JobsLedger.CATALOG\JobsLedger.CATALOG.csproj" />
  <ProjectReference Include="..\JobsLedger.DATA\JobsLedger.DATA.csproj" />
</ItemGroup>


<ItemGroup>
  <TypeScriptCompile Include="ClientApp\app\components\clients\clientList\client-detail-view.ts" />
  <TypeScriptCompile Include="ClientApp\app\navmenu\activeRoute.ts" />
</ItemGroup>

<ItemGroup>
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0" />
</ItemGroup>

<Target Name="DebugRunWebpack" BeforeTargets="Build" Condition=" '$(Configuration)' == 'Debug' And !Exists('wwwroot\dist') ">
    <!-- Ensure Node.js is installed -->
    <Exec Command="node --version" ContinueOnError="true">
        <Output TaskParameter="ExitCode" PropertyName="ErrorCode" />
    </Exec>
    <Error Condition="'$(ErrorCode)' != '0'" Text="Node.js is required to build and run this project. To continue, please install Node.js from https://nodejs.org/, and then restart your command prompt or IDE." />

    <!-- In development, the dist files won't exist on the first run or when cloning to
             a different machine, so rebuild them if not already present. -->
    <Message Importance="high" Text="Performing first-run Webpack build..." />
    <Exec Command="npm install" />
    <Exec Command="npm ddp" />
    <Exec Command="npm run webpack:dev" />
</Target>

<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
    <!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
    <Exec Command="npm install" />
    <Exec Command="npm ddp" />
    <Exec Command="npm run webpack:$(Configuration)" />

    <!-- Include the newly-built files in the publish output -->
    <ItemGroup>
        <!-- First, clean up previously generated content that may have been removed. -->
        <ContentWithTargetPath Remove="@(ContentWithTargetPath)" Condition="!Exists('%(Identity)')" />
        <_WebpackFiles Include="wwwroot\dist\**" />
        <ContentWithTargetPath Include="@(_WebpackFiles->'%(FullPath)')" RelativePath="%(_WebpackFiles.Identity)" TargetPath="%(_WebpackFiles.Identity)" CopyToPublishDirectory="Always" />
    </ItemGroup>
</Target>

Вот файл csproj для библиотеки классов базы данных CATALOG.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.19" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="Microsoft.AspNetCore.Http.Abstractions">
      <HintPath>..\..\..\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\3.0.0-preview5-19227-01\ref\netcoreapp3.0\Microsoft.AspNetCore.Http.Abstractions.dll</HintPath>
    </Reference>
  </ItemGroup>

</Project>

и вот файл csproj для последней библиотеки классов DATA

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.19" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\JobsLedger.CATALOG\JobsLedger.CATALOG.csproj" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="Microsoft.AspNetCore.Http.Abstractions">
      <HintPath>..\..\..\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\3.0.0-preview5-19227-01\ref\netcoreapp3.0\Microsoft.AspNetCore.Http.Abstractions.dll</HintPath>
    </Reference>
  </ItemGroup>

</Project>

Как мне заставить этот проект использовать инструменты EntityFramework 3.0.0 ??

Ответы [ 4 ]

2 голосов
/ 10 октября 2019

У меня была похожая проблема на этой неделе, для меня сработало удаление инструментальных средств Entity Framework и их повторная установка.

  1. удаление: dotnet tool uninstall --global dotnet-ef
  2. установка снова: dotnet tool install --global dotnet-ef --version 3.0.0-*

Для меня --version добился цели, иначе я получил проводнойошибка.

0 голосов
/ 21 октября 2019

ОК, поэтому я сделал резервную копию компьютера и выполнил полную установку. Немного тяжело, но потом я установил новую копию Visual Studio 2019, но очень внимательно следил за тем, чтобы убедиться, что с 2.2 нет ничего общего. Я только загрузил последнюю версию фреймворка и ядра. Как только я сделал это, я начал проверять, действительно ли у меня был правильный EF, и на этот раз я сделал. Я понятия не имею, почему она зависла со старым набором инструментов, и попытка уничтожить этот набор инструментов просто не сработала ... имея правильный набор инструментов, который означал для меня, это сработало.

0 голосов
/ 08 октября 2019

Пожалуйста, следуйте этому руководству: https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

С .dotnet core 3.0 вы должны установить ef через dotnet tool install --global dotnet-ef. Используйте dotnet ef для проверки версии.

0 голосов
/ 03 октября 2019

Просто предположение, но я думаю, что ваши ссылки на EF в вашем проекте все еще стары. Можете ли вы попробовать удалить ссылку на EF из вашего проекта и добавить ее снова (что даст вам обновленную версию EF)

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