Как запустить задачу обновления базы данных EF Core с указанием запускаемого проекта в VS Code? - PullRequest
0 голосов
/ 08 апреля 2019

Если я запускаю следующую команду в моей командной строке: dotnet ef database update --startup-project /code/spike/MyProj.Web

Команда работает нормально.

Если я задаю задачу в tasks.json, например:

{
      "label": "update database",
      "command": "dotnet",
      "type": "process",
      "args": [
        "ef",
        "database",
        "update",
        "--startup-project ${workspaceFolder}/MyProj.Web"
      ],
      "problemMatcher": "$tsc"
    }

Я получаю следующую ошибку:

Startup project 'MyProj.Data.csproj' targets framework '.NETStandard'. There is no runtime associated with this framework, and projects targeting it cannot be executed directly. To use the Entity Framework Core .NET Command-line Tools with this project, add an executable project targeting .NET Core or .NET Framework that references this project, and set it as the startup project using --startup-project; or, update this project to cross-target .NET Core or .NET Framework. For more information on using the EF Core Tools with .NET Standard projects, see https://go.microsoft.com/fwlink/?linkid=2034781

Можно ли использовать --startup-project для EF Core в задаче VS Code?

1 Ответ

1 голос
/ 09 апреля 2019

Предположительно, вы запускаете из командной строки в папке проекта MyProj.Data?

VS Code выполнит задачу на уровне папки рабочей области, поэтому вам необходимо добавить аргумент --project, указывающий на файл MyProj.Data.csproj.

Кроме того, VS Code добавляет кавычки вокруг аргументов, если они содержат пробелы, поэтому вам нужно отдельно добавлять аргумент и значение.

например:.

{
    "label": "update database",
    "command": "dotnet",
    "type": "process",
    "args": [
        "ef",
        "database",
        "update",
        "--project", "${workspaceFolder}/MyProj.Data/MyProj.Data.csproj",
        "--startup-project", "${workspaceFolder}/MyProj.Web"
    ],
    "problemMatcher": "$tsc"
}
...