4

Я довольно новичок в .NET Core, и у меня есть проект .NET Core WebAPI MyWebApp,
, также у меня есть .Net Core Library Library MyLib используя EntityFrameworkCore

Когда я пытаюсь использовать Add-Migration, я получаю ошибку
указанный deps.json [... \ MyWebApp \ Bin \ Debug \ netcoreapp1.1 \ MyWebApp.deps.json] не существует

Осматривая папку, я заметил, у меня есть этот файл в [... \ MyWebApp \ Bin \ Debug \ netcoreapp1.1 \ win10-x64 \ MyWebApp.deps.json]

, но я действительно не могу понять, что я должен сделать, чтобы решить эту проблему.

myWebApi project.json:

{ 
    "dependencies": { 
    "ShopManager": "1.0.0-*", 
    "Microsoft.AspNetCore.StaticFiles": "1.1.0", 
    "Microsoft.AspNetCore.Mvc": "1.1.0", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0", 
    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0", 
    "Microsoft.Extensions.Configuration.Json": "1.1.0", 
    "Microsoft.Extensions.Logging": "1.1.0", 
    "Microsoft.Extensions.Logging.Console": "1.1.0", 
    "Microsoft.Extensions.Logging.Debug": "1.1.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0", 
    "Microsoft.NETCore.App": "1.1.0" 
    }, 

    "tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" 
    }, 
    "runtimes": { 
    "win10-x64": "" 
    }, 
    "frameworks": { 
    "netcoreapp1.1": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8" 
     ] 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "runtimeOptions": { 
    "configProperties": { 
     "System.GC.Server": true 
    } 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "Views", 
     "Areas/**/Views", 
     "appsettings.json", 
     "web.config" 
    ] 
    }, 

    "scripts": { 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    } 
} 
+0

Спасибо за обзор –

+0

Удалите раздел «runtimes» из 'project.json'. Как только вы не будете использовать другие промежутки времени, это бесполезно. Кроме того, где находятся пакеты 'Microsoft.EntityFrameworkCore. *', Почему они не указаны в зависимостях? – Dmitry

+0

EFCore. * Находятся в классе lib. и когда я удаляю раздел RT, я получаю ошибку, требующую его для .NetCore.App dependency –

ответ

5

runtimes раздел в project.json выглядит подозрительно. Как только вы создадите только одно время выполнения - нет необходимости его использовать.

Удалите его и запишите зависимость от "Microsoft.NETCore.App":"1.1.0" до "Microsoft.NETCore.App": { "type": "platform", "version": "1.1.0" }.

Это изменяет модель развертывания вашего приложения из «автономного» (может работать на определенной платформе даже без фреймворка) до «зависимой от структуры» (может работать на любой платформе с установленной картой). Подробности are here.

+0

Что делать, если мне нужно настроить таргетинг на несколько платформ? –

+0

Вы уже нацелились на несколько платформ. Вы нацеливаете ВСЕ платформы, где .NET Core доступен без 'runtimes'.Runtimes необходимы, когда вы хотите сделать «автономные» дистрибутивы вашего приложения (с .NET Core внутри), которые можно запускать без установки .NET Core на целевой машине. И если вы хотите этого ... вы должны ждать стабильной оснастки (в настоящее время вы используете предварительный просмотр 4, я думаю). – Dmitry

1

У меня была проблема с Visual Studio 2017, я скопировал все файлы, включая библиотеки DLL из Bin \ Debug \ netcoreapp1.0 в мусорную \ MCD \ Debug \ netcoreapp1.0

Строительные леса не было правильно работая, пока я не скопировал файлы в папке bin. Я не уверен, что делает папка MCD, но по какой-то причине процесс создания лесов выглядит в этой папке.

0

Я столкнулся с этим вопросом во время конференц-семинара сегодня. После запуска dotnet ef database update -v для получения подробного вывода и тщательного изучения путей, которые были использованы, я обнаружил, что на моем Mac была установлена ​​переменная окружения, которая вызывала проблему.

Если у вас есть PROJECTDIR, установленный внутри вашей среды, команда dotnet может использовать это для разрешения путей, и если это произойдет, это, скорее всего, сделает это неожиданным образом. Поэтому удалите эту переменную среды из оболочки/среды, где вы выполняете основную работу .Net.