миграции dotnet ef: значение не может быть нулевым. Имя параметра: contentRootPath

#c# #entity-framework-core #dotnet-cli

#c# #entity-framework-core #dotnet-cli

Вопрос:

Я пытаюсь создать миграцию, но это не удается с Value cannot be null. Parameter name: contentRootPath. . Одна и та же ошибка от обоих dotnet ef migrations add и dotnet ef migrations script .

Вот полный подробный вывод:

 PS C:mypath> dotnet ef migrations add foo --project .MyDataProject --startup-project .MyAppProject -v
Using project '.MyDataProjectMyDataProject.csproj'.
Using startup project '.MyAppProjectMyAppProject.csproj'.
Writing '.MyDataProjectobjMyDataProject.csproj.EntityFrameworkCore.targets'...
dotnet msbuild /target:GetEFProjectMetadata /property:EFProjectMetadataFile=C:UsersmynameAppDataLocalTemptmpE078.tmp /verbosity:quiet /nologo .MyDataProjectMyDataProject.csproj
Writing '.MyAppProjectobjMyAppProject.csproj.EntityFrameworkCore.targets'...
dotnet msbuild /target:GetEFProjectMetadata /property:EFProjectMetadataFile=C:UsersmynameAppDataLocalTemptmpE403.tmp /verbosity:quiet /nologo .MyAppProjectMyAppProject.csproj
dotnet build .MyAppProjectMyAppProject.csproj /verbosity:quiet /nologo
C:Program Filesdotnetsdk2.1.502SdksMicrosoft.NET.SdktargetsMicrosoft.NET.ObsoleteReferences.targets(33,5): warning NETSDK1059: The tool 'Microsoft.EntityFrameworkCore.Tools.DotNet' is now included in the .NET Core SDK. Information on resolving this warning is available at (https://aka.ms/dotnetclitools-in-box). [C:mypathMyOtherProjectMyOtherProject.csproj]
C:Program Filesdotnetsdk2.1.502SdksMicrosoft.NET.SdktargetsMicrosoft.NET.ObsoleteReferences.targets(33,5): warning NETSDK1059: The tool 'Microsoft.EntityFrameworkCore.Tools.DotNet' is now included in the .NET Core SDK. Information on resolving this warning is available at (https://aka.ms/dotnetclitools-in-box). [C:mypathMyDataProjectMyDataProject.csproj]
C:Program Filesdotnetsdk2.1.502SdksMicrosoft.NET.SdktargetsMicrosoft.NET.ObsoleteReferences.targets(33,5): warning NETSDK1059: The tool 'Microsoft.EntityFrameworkCore.Tools.DotNet' is now included in the .NET Core SDK. Information on resolving this warning is available at (https://aka.ms/dotnetclitools-in-box). [C:mypathMyDataProjectMyDataProject.csproj]
C:Program Filesdotnetsdk2.1.502SdksMicrosoft.NET.SdktargetsMicrosoft.NET.ObsoleteReferences.targets(33,5): warning NETSDK1059: The tool 'Microsoft.EntityFrameworkCore.Tools.DotNet' is now included in the .NET Core SDK. Information on resolving this warning is available at (https://aka.ms/dotnetclitools-in-box). [C:mypathMyOtherProjectMyOtherProject.csproj]

Build succeeded.

C:Program Filesdotnetsdk2.1.502SdksMicrosoft.NET.SdktargetsMicrosoft.NET.ObsoleteReferences.targets(33,5): warning NETSDK1059: The tool 'Microsoft.EntityFrameworkCore.Tools.DotNet' is now included in the .NET Core SDK. Information on resolving this warning is available at (https://aka.ms/dotnetclitools-in-box). [C:mypathMyOtherProjectMyOtherProject.csproj]
C:Program Filesdotnetsdk2.1.502SdksMicrosoft.NET.SdktargetsMicrosoft.NET.ObsoleteReferences.targets(33,5): warning NETSDK1059: The tool 'Microsoft.EntityFrameworkCore.Tools.DotNet' is now included in the .NET Core SDK. Information on resolving this warning is available at (https://aka.ms/dotnetclitools-in-box). [C:mypathMyDataProjectMyDataProject.csproj]
C:Program Filesdotnetsdk2.1.502SdksMicrosoft.NET.SdktargetsMicrosoft.NET.ObsoleteReferences.targets(33,5): warning NETSDK1059: The tool 'Microsoft.EntityFrameworkCore.Tools.DotNet' is now included in the .NET Core SDK. Information on resolving this warning is available at (https://aka.ms/dotnetclitools-in-box). [C:mypathMyDataProjectMyDataProject.csproj]
C:Program Filesdotnetsdk2.1.502SdksMicrosoft.NET.SdktargetsMicrosoft.NET.ObsoleteReferences.targets(33,5): warning NETSDK1059: The tool 'Microsoft.EntityFrameworkCore.Tools.DotNet' is now included in the .NET Core SDK. Information on resolving this warning is available at (https://aka.ms/dotnetclitools-in-box). [C:mypathMyOtherProjectMyOtherProject.csproj]
    4 Warning(s)
    0 Error(s)

Time Elapsed 00:00:02.31
C:Program Filesdotnetsdk2.1.502DotnetToolsdotnet-ef2.1.4toolsnetcoreapp2.1anytoolsnet461win-x86ef.exe migrations add foo --assembly C:mypathMyAppProjectbinDebugnet461MyDataProject.dll --startup-assembly C:mypathMyAppProjectbinDebugnet461MyAppProject.exe --project-dir C:mypathMyDataProject --language C# --working-dir C:mypath --verbose --root-namespace MyDataProject
Using assembly 'MyDataProject'.
Using startup assembly 'MyAppProject'.
Using application base 'C:mypathMyAppProjectbinDebugnet461'.
Using working directory 'C:mypathMyAppProject'.
Using root namespace 'MyDataProject'.
Using project directory 'C:mypathMyDataProject'.
Using configuration file 'C:mypathMyAppProjectbinDebugnet461MyAppProject.exe.config'.
System.ArgumentNullException: Value cannot be null.
Parameter name: contentRootPath
   at Microsoft.EntityFrameworkCore.Utilities.Check.NotEmpty(String value, String parameterName)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations..ctor(IOperationReporter reporter, Assembly assembly, Assembly startupAssembly, String environment, String projectDir, String contentRootPath, String rootNamespace)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.<>c__DisplayClass4_0.<.ctor>b__4()
   at Microsoft.EntityFrameworkCore.Internal.LazyRef`1.get_Value()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.<>c__DisplayClass0_1.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Value cannot be null.
Parameter name: contentRootPath
  

Когда я запустил Add-Migration консоль диспетчера пакетов Visual Studio, миграция была успешно выполнена.

Что я должен сделать, чтобы добиться успеха в командной строке с dotnet.exe ? Я что-то упускаю?

Комментарии:

1. Проверьте версию вашего инструмента: github.com/aspnet/EntityFrameworkCore/issues/8731

2. @SteveGreene Какой инструмент это означает? В моих проектах (csproj) У меня нет Microsoft. EntityFrameworkCore. Инструменты nuget.

3. Я попытался сделать следующую демонстрацию: abelsquidhead.com/index.php/2017/07/31/… Но когда я пытаюсь запустить dotnet ef migrations add InitialCreate , возникает та же ошибка. И у этого проекта есть Microsoft. EntityFrameworkCore. Инструменты 1.1.1 nuget, как на веб-странице.

Ответ №1:

Наконец, я нашел другой проект, который сработал для меня, и разница между ним и этой версией EntityFramework.

Обновление EntityFramework Core с 1.1 на 2.0 устранило мою проблему.