Я делаю образец проекта, используя ASP.Net Core RC2 с Microsoft.EntityFramework.Core
SQLite.
Я следил за этим руководством: https://damienbod.com/2015/08/30/asp-net-5-with-sqlite-and-entity-framework-7/
Но когда я запускаю эту команду:
dotnet ef migrations add FirstMigration
У меня такая ошибка:
No executable found matching command "dotnet-ef"
Вот моя project.json
конфигурация:
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-rc2-3002702",
"type": "platform"
},
"Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.Sqlite": "1.0.0-rc2-final"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version": "1.0.0-preview1-final",
"imports": "portable-net45+win8+dnxcore50"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"dnxcore50",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"gcServer": true
},
"publishOptions": {
"include": [
"wwwroot",
"Views",
"appsettings.json",
"web.config"
]
},
"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
Ответы:
Entity Framework Core 1.0
Вам просто нужно обновить
tools
раздел файла project.json, включив в него следующее:"Microsoft.EntityFrameworkCore.Tools": { "version": "1.0.0-preview1-final", "imports": [ "portable-net45+win8+dnxcore50", "portable-net45+win8" ] }
Это должно сделать
dotnet ef
команды доступными.Важный
Я также должен отметить, что
dotnet ef
команды будут доступны только при их запуске из того же каталога, в котором находится файл project.json.Entity Framework Core 1.1
Если у вас снова возникла эта проблема после обновления до Entity Framework Core 1.1, обязательно замените
Microsoft.EntityFrameworkCore.Tools
зависимостьMicrosoft.EntityFrameworkCore.Tools.DotNet
версией1.1.0-preview4
. Сохранятьimports
раздел тоже нет необходимости . Дополнительные сведения об этом см. В заголовке «Обновление до 1.1» в сообщении блога с объявлением о выпуске Entity Framework Core 1.1 .источник
project.json
Моей проблемой было отсутствие в папке с , спасибо!Entity Framework Core 1.1
Добавьте это, если вы используете VS2017 с новыми проектами .csproj без файла project.json.
вам нужно отредактировать файл .csproj (щелкните его правой кнопкой мыши в обозревателе решений и выберите `` Изменить любой.csproj ''), а затем вставьте его в
<ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet"> <Version>1.0.0-*</Version> </DotNetCliToolReference> </ItemGroup>
любезно предоставлено: https://github.com/aspnet/EntityFramework/issues/7358#issuecomment-278379967
источник
VS2017
и он автоматически обновилсяdotnet core CLI
до2.0
версии, несовместимой сdotnet core 1.0
. Но, похоже, настало время обновить свой проект.net core 1.0
до2.0
.Специально для VS2017 15.3 или новее и ASP.NET CORE 2.0 или новее ...
Установите nuget для поставщика db через командную строку или диспетчер пакетов nuget.
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Добавьте следующий раздел в .csproj
<ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> </ItemGroup>
Установите инструменты времени разработки через командную строку или диспетчер nuget в VS2017.
dotnet add package Microsoft.EntityFrameworkCore.Design
Это включает dotnet ef * в командной строке в каталоге проекта.
Включает команды dotnet ef * в командной строке в каталоге проекта,
dotnet ef migrations add Initial dotnet ef database update Initial dotnet ef dbcontext scaffold
источник
DotNetCliToolReference
Tools.DotNet было ключевым в моем случаеЭто распространенная проблема при переходе с .NET Core 1.0 на .NET Core 1.1+ или 2.x.
Чтобы это исправить, вам необходимо:
project.json
(для .NET Core 1.0) или<projectName>.csproj
(для .NET Core 1.1+ и 2.x).В частности, для проектов .NET Core 1.0 добавьте следующее:
"tools": { "Microsoft.EntityFrameworkCore.Tools": "1.0.0" "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0" }
Для проектов .NET Core 1.1+ и .NET Core 2.x добавьте следующее:
<ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" /> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> </ItemGroup>
Если у вас уже есть
tools
ключ json или<ItemGroup>
элемент с одним или несколькими существующимиDotNetCliToolReference
элементами, просто добавьте новые в существующую группу.ВАЖНО : кроме выполнения вышеуказанных шагов, вы должны запустить
dotnet ef
команду в корневой папке проекта (той, которая содержит файл проекта), иначе она не сработает.Для получения дополнительной информации и подробного объяснения проблемы вы можете прочитать больше в моем сообщении в блоге .
источник
C:\Program Files\dotnet
в переменной окружения PATH ИЛИ используя полный путь, то естьC:\Program Files\dotnet\dotnet.exe
Думаю, я нашел точное решение проблемы - dotnet: не найдено исполняемого файла, соответствующего команде "dotnet-ef" ..
Я использую dot net core 2.0 в VS 2017 Versio 15.5.3
Эта ошибка вызвана тем , что NuGet это не в состоянии найти в файл решения на месте.
Я перешел в корень , добавив следующую команду в консоль диспетчера пакетов .
компакт-диск. \ School1
Здесь 'School1' был моим корневым каталогом проекта, и он содержит мой класс 'Startup.cs', в вашем случае он будет другим.
dotnet ef
в консоли диспетчера пакетов, которая теперь будет работать успешно.У меня ошибка Ошибка при запуске
dotnet ef
.Исправил ошибку, перейдя в корневую папку командой
cd .\School1
Надеюсь, это поможет моим коллегам-разработчикам Dot Net.
источник
Пришлось добавить Microsoft.EntityFrameworkCore.Tools. DotNet для работы. Раздел инструментов вашего файла project.json будет выглядеть так:
"tools": { "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final", "Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final", "Microsoft.EntityFrameworkCore.Tools":"1.1.0-preview4-final", "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final" },
источник
Если вы столкнулись с этой проблемой и запустите ядро asp.net с помощью инструмента CLI, вы можете решить ее, добавив
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
в файл xx.csproj иdotnet restore
. Затем вы можете использовать команду dotnet ef.источник
Вместо того, чтобы открывать отдельное окно консоли в VS Package Manager Console, введите и выполните следующие команды:
HTH
РЕДАКТИРОВАТЬ : вам также может понадобиться следующий класс в вашем основном проекте MVC:
public class DbContextFactory : IDesignTimeDbContextFactory<NotesContext> { public YourDbContext CreateDbContext(string[] args) { var builder = new DbContextOptionsBuilder<YourDbContext>(); builder.UseSqlServer("DefaultConnection", optionsBuilder => optionsBuilder.MigrationsAssembly(typeof(YourDbContext).GetTypeInfo().Assembly.GetName().Name)); return new YourDbContext(builder.Options); } }
источник
В моем случае
dotnet ef
не было доступно и не отображается в списке приdotnet -h
запуске.Я установил глобально dotnet-ef с помощью следующей команды, и теперь я могу ее использовать. Но все еще не в списке.
dotnet tool install -g dotnet-ef
источник
Я использовал отдельный проект библиотеки классов. После попытки и неудачи всего вышеперечисленного в консоли диспетчера пакетов. Я использовал командную строку, и она сработала! Странно. Однако следует отдать должное этой статье . И если вы используете отдельный проект библиотеки классов, это ваше решение.
источник
В Visual Studio 2017 мне нужно было запустить эти команды из консоли диспетчера пакетов
install-package Microsoft.EntityFrameworkCore.SqlServer.Design Scaffold-DbContext "Server=.\sqlexpress;Database=MyDb;Trusted_Connection=True;MultipleActiveResultSets=true" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Model -Context "MyApp"
источник
В разделе инструментов добавьте ниже код,
"tools": { "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview2-final", "Microsoft.AspNetCore.Server.IISIntegration.Tools": { "version": "1.0.0-preview2-final", "imports": "portable-net45+win8+dnxcore50" } }
Этот формат кода решил мою ошибку.
источник
По умолчанию при добавлении NuGet Pkg он будет добавлен как PackageReference, это неверно, поэтому отредактируйте его вручную
1- Редактировать файл .csproj
2- изменить с "PackageReference":
<ItemGroup> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.1"/> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3"/> </ItemGroup> to: <ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.1"/> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3"/> </ItemGroup>
источник