软件包"Microsoft.EntityFrameworkCore.Design"的用途

gro*_*kky 19 c# entity-framework-core .net-core asp.net-core

所有教程都同意project.json应包括:

"Microsoft.EntityFrameworkCore.Design": 
{ 
    "type":"build", 
    "version":"1.0.0-preview2-final" 
}
Run Code Online (Sandbox Code Playgroud)

我从来没有把它包括在内,从来没有遇到过问题.

我只包括

"Microsoft.EntityFrameworkCore"
"Microsoft.EntityFrameworkCore.Sqlite"   (or Sqlserver)
"Microsoft.EntityFrameworkCore.Tools"
Run Code Online (Sandbox Code Playgroud)

这个包有什么作用?为什么我可以毫无问题地排除它?


更新:查看已接受答案中的注释,以确定在哪种方案中导入哪个包.

bri*_*lam 20

Microsoft.EntityFrameworkCore.Design包含Entity Framework Core的所有设计时逻辑.这是所有的各种工具(PMC的cmdlet一样的代码Add-Migration,dotnet efef.exe)调入.

如果您不使用迁移或逆向工程,则不需要它.

当你确实需要它时,我们鼓励PrivateAssets="All"它不会发布到几乎肯定不需要它的服务器上.

  • 其他人的摘要:如果你想要PMC命令,那么导入`EFCore.Tools`.如果需要CLI工具,则导入`EFCore.Design`.如果你想要两者,那么只导入`EFCore.Tools`. (6认同)
  • 是的。EFCore.Tools 将为您引入 EFCore.Design。 (5认同)
  • 我不使用 PMC,但我使用 CLI 工具(`dotnet ef foo bar`)进行迁移。并且没有问题。奇怪的!那可能是因为我包含了`Microsoft.EntityFrameworkCore.Tools`? (2认同)
  • EFCore.Tools 是 PMC 命令。(以及我们未来可能添加的任何不需要像 CLI 工具那样自己的包的工具。) (2认同)