"dotnet-ef"명령과 일치하는 실행 파일을 찾을 수 없습니다.
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
섹션 을 유지할 필요도 없습니다 . 이에 대한 자세한 내용은 Entity Framework Core 1.1 릴리스 발표 블로그 게시물 아래의 "1.1로 업그레이드"제목을 참조하십시오 .
Entity Framework Core 1.1
project.json 파일없이 새 .csproj 프로젝트와 함께 VS2017을 사용하는 경우 여기에 추가
.csproj 파일을 편집해야합니다 (솔루션 탐색기에서 마우스 오른쪽 단추로 클릭하고 whatever.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 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>
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
이는 .NET Core 1.0에서 .NET Core 1.1+ 또는 2.x로 전환 할 때 발생하는 일반적인 문제입니다.
이를 수정하려면 다음을 수행해야합니다.
- 가져 오기 Microsoft.EntityFrameworkCore.Tools 및 Microsoft.EntityFrameworkCore.Tools.DotNet의 NuGet을 사용하여 패키지 라이브러리를.
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
프로젝트 루트 폴더 (프로젝트 파일이 포함 된 폴더) 내에서 명령 을 실행해야 합니다. 그렇지 않으면 작동하지 않습니다.
추가 정보와 문제에 대한 광범위한 설명을 보려면 내 블로그 게시물 에서 더 많은 것을 읽을 수 있습니다 .
문제에 대한 정확한 해결책 을 찾았다 고 생각합니다. dotnet : "dotnet-ef"명령과 일치하는 실행 파일을 찾을 수 없습니다 ..
VS 2017 versio 15.5.3에서 dot net core 2.0을 사용하고 있습니다.
이 오류의 원인
이 오류는 Nuget 이 해당 위치 에서 솔루션 파일 을 찾을 수 없기 때문에 발생 합니다.
해결책 :- 'Startup.cs'클래스가있는 디렉토리로 이동하십시오.
패키지 관리자 콘솔 에 아래 명령 을 추가 하여 루트 로 이동했습니다 .
cd. \ School1
여기서 'School1'은 프로젝트의 루트 디렉토리 이며 'Startup.cs'클래스가 포함되어 있으며 귀하의 경우에는 다릅니다.
- 그런 다음 패키지 관리자 콘솔 에서 명령
dotnet ef
을 실행하면 이제 성공적으로 실행됩니다.
명확한 이해를위한 그림이있는 예
I corrected the error by moving to the root folder with the command
cd .\School1
Hope it helps my fellow Dot Net Developers.
I had to add Microsoft.EntityFrameworkCore.Tools.DotNet to work. The tools section of your project.json file will look like this:
"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"
},
If you met this problem and run the asp.net core with CLI tool, you may solve it by adding <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
into xx.csproj file, and dotnet restore
. Then you can use dotnet ef command.
Instead of opening a separate console window in VS Package Manager Console type and run the following commands:
Add migration
Add-Migration <migration name>
Remove last migration
Remove-Migration
Before a migration has been applied (or, to apply migration):
Update-Database
When migration has been applied:
Update-Database -Migration <previous migration> -Context <db context name>
HTH
EDIT: You may also need the following class in your MVC core project:
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);
}
}
I was using a separate class library project. After trying and failing all of above in package manager console. I used command prompt, and it worked! Weird. However, credit goes to this article. And if you are using separate class library project, This is your solution.
Under visual studio 2017 i needed to run these commands from package manager console
install-package Microsoft.EntityFrameworkCore.SqlServer.Design
Scaffold-DbContext "Server=.\sqlexpress;Database=MyDb;Trusted_Connection=True;MultipleActiveResultSets=true" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Model -Context "MyApp"
In tools section add below code,
"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"
}
}
This format of code solved my error.
By default when adding a NuGet Pkg it will be added as a PackageReference, this is wrong, so edit it manually
1- Edit .csproj file
2- change from "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>
참고URL : https://stackoverflow.com/questions/37276882/no-executable-found-matching-command-dotnet-ef
'Programing' 카테고리의 다른 글
새 버전을 사용할 수있는 경우 Android 앱 강제 업데이트 (0) | 2020.10.09 |
---|---|
작업 / 프로세스가 완료 될 때 iTerm 터미널에서 알림을 받으려면 어떻게해야합니까? (0) | 2020.10.09 |
dynamic은 프로젝트 참조의 속성에 대한 정의를 포함하지 않습니다. (0) | 2020.10.09 |
CSS를 사용하는 dp (밀도 독립 픽셀) 단위는 무엇입니까? (0) | 2020.10.09 |
Java 배열에 항목을 동적으로 추가하려면 어떻게해야합니까? (0) | 2020.10.09 |