dotnet exec 在添加 Entity Framework 核心 (1.1.0) 迁移时需要托管 .dll 或 .exe 扩展名

dotnet exec needs a managed .dll or .exe extension while adding Entity Framework Core (1.1.0) Migrations

错误信息:

PM> Add-Migration InitialDatabase
dotnet exec needs a managed .dll or .exe extension. The application specified was 'C:\Users\xxxxxx\documents\visual studio 2017\Projects\TheWorld\src\TheWorld\bin\Debug\netcoreapp1.0\TheWorld.runtimeconfig.json'
Process finished with non-zero exit code
PM> 

Visual Studio 版本:2017 RC

项目依赖关系:

错误截图:

VS 和 dotnet 的工具仍处于预览阶段。在 TheWorld/src 文件夹中从命令行尝试 运行 dotnet ef migrations add InitialDatabase

我遇到了同样的问题。我唯一需要做的就是更改项目属性中的目标框架。

Changing the framework version

希望对您有所帮助。

在 VS2017RC 中——我所要做的就是使用包管理器控制台再次安装 .NetCore:

Install-Package Microsoft.NETCore.App

后来的迁移脚本起作用了,"dotnet exec needs a managed .dll or .exe extension." 错误消失了。

我的上下文正在部署到 AWS Lambda。

解决方法是将我的 lambda 使用的 EF 项目 (EFCore) 中的 output type 更改为 Class Library

p.s。当您 运行 迁移等

时,您可能需要将其改回

我在将 docker 容器部署到 AWS Lambda 时遇到了类似的问题。

我使用的是自定义容器而不是 public.ecr.aws/lambda/dotnet:latest

因此,lambda-entrypoint.sh 对使用哪个 deps.json 感到困惑,并试图 运行 dotnet exec 随机 json 文件.

最终解决它的方法是将环境变量 LAMBDA_DOTNET_MAIN_ASSEMBLY 设置为主程序集名称 - 不包括 .dll

此名称应与您的 .csproj 文件的名称相匹配。例如,如果您的程序是 myDotnetExample.csproj,您可以将环境变量设置为:

LAMBDA_DOTNET_MAIN_ASSEMBLY = "myDotnetExample"

设置此变量后,lambda-entrypoint.sh 能够找到正确的文件和 运行 程序。