我今天安装了Visual Studio for Mac(OSX 10.12.1),而且我已经进行了相当广泛的潜水。
我想尝试让EntityFrameworkCore(1.1.0)与SQLite一起运行。
所以我创建了一个新的控制台应用程序.NET核心,并且有一些麻烦能够添加所有必需的nuget包。不知何故,Visual Studio无法下载依赖项,因此我必须手动下载每个依赖项。 (也许这解决了问题:.Net Core 1.1.0 NuGet packages fail to install in Visual Studio Mac还没有测试过这个问题。)
正如本文所述(https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite)我想添加迁移,但我在IDE中找不到必要的命令行工具。 我在这里错过了什么吗?
然后我继续使用.NET Core CLI通过手动完成。安慰。 (https://www.microsoft.com/net/core#macos)。但是当我执行dotnet ef migrations add init
时,我收到以下错误。
找不到匹配命令“dotnet-ef”
的可执行文件
有人能够成功运行吗?
答案 0 :(得分:9)
Visual Studio for Mac 2017目前(2017年4月)不支持添加对Microsoft.EntityFrameworkCore.Tools.DotNet
的引用并返回错误:
Package 'Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0' has a package type 'DotnetCliTool' that is not supported by project 'MacMvc'.
您可以手动编辑文件,并将引用直接添加到csproj
文件,documented。将其添加到您的csproj文件中:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
</ItemGroup>
然后运行dotnet restore
来安装软件包。之后,您将能够根据文档使用dotnet ef migrations add NameOfMigration
和dotnet ef database update
脚本。
N.B。:执行命令时,您必须在项目目录中。
另请参阅VS 2017 for Mac的建议反馈:
答案 1 :(得分:2)
使用VS for Mac,将以下行添加到.csproj中,使迁移对我有用:
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.1" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild2-final" />
将自动恢复包,从VS中保存.csproj。
运行&#34; dotnet ef&#34;通过终端命令,你需要在项目目录中,我的意思是不是从.sln文件所在的目录,而是从较低级别。
注意:与Tools.DotNet的v1.0.1相同的技巧并不起作用,我不知道为什么。
答案 2 :(得分:0)
检查project.json文件中是否包含此部分,如果缺少则添加该部分。
"tools": {
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4"
}
这适用于EF 1.1,之前的版本使用Microsoft.EntityFrameworkCore.Tools
包
答案 3 :(得分:0)
如果不添加此ItemGroup,则无法添加dbcontext scaffold连接字符串使用cmd,因此在项目中添加此项(编辑.csproj)首先
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
答案 4 :(得分:0)
对我来说,这解决了macOS上的问题,请在任何终端上运行它:
dotnet tool install --global dotnet-ef