找不到无效路径的EF Core Add-Migration错误

时间:2018-12-06 04:32:31

标签: c# entity-framework .net-core

我在startup.cs中创建了dbcontext网络核心项目,还创建了Web服务网络核心项目(Proca.WebAPI)和ConfigureServices。然后,将Web服务项目设置为启动项目,并尝试在程序包管理器控制台中运行“添加迁移InitialCreate”。然后出现以下错误:

  

PM>添加迁移InitialCreate   正在运行的命令已停止,因为首选项变量“ ErrorActionPreference”或公共参数设置为“停止”:找不到路径'E:\ git \ Proca.Core \ src \ Proca.WebAPI \ E:\ git \ Proca.Core \ out \ bin \ Proca.WebAPI \ Debug \ netcoreapp2.1 \”,因为它不存在。

我只是感到困惑,为什么路径与前缀启动项目路径重复。这里有什么问题或配置丢失吗?我也尝试将dbcontext proj用作启动proj,并执行相同的操作,但仍然收到类似的错误。

谢谢

2 个答案:

答案 0 :(得分:1)

忽略此问题。

这是因为工作伙伴在PropertyGroup(Directory.Build.props)中设置了输出路径,因此导致此无效路径。在csproj文件中重置此值后,它可以解决问题。

答案 1 :(得分:0)

这是一个较旧的问题,但是我遇到了尝试将ef core 3.1迁移工具与Directory.Build.props一起使用的问题。似乎ef核心迁移工具正在连接BaseIntermediateOutputPath和OutputPath,因为我会收到以下错误://

“ ErrorActionPreference”或公共参数设置为“停止”:无法 找到路径 'C:\ code \ MySolution \ src \ MyProject \ C:\ code \ MySolution \ build \ bin \ MyProject \ Debug \ netcoreapp3.1 \' 因为它不存在。

注意:我的项目遵循的结构为C:\ code \ MySolutionFolder \ src \ MyProjectFolder,并且输出(bin)和中间(obj)的生成文件夹(C:\ code \ MySolutionFolder \ build \)是两个项目文件夹(.. \ .. \)上方的文件夹。

原始:// Directory.Build.props

<Project>
  <PropertyGroup>
    <BaseIntermediateOutputPath>$(SolutionDir)build\obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
    <IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>
    <OutputPath>$(SolutionDir)build\bin\$(MSBuildProjectName)\$(Configuration)\</OutputPath>
  </PropertyGroup>
</Project>

WorkAround://:我使用以下方法来替代使用ef核心迁移工具,并且仍然保留了我的构建过程和文件夹。 (在OutputPath中将$(SolutionDir)替换为.. \ .. \)

<Project>
  <PropertyGroup>
    <BaseIntermediateOutputPath>$(SolutionDir)build\obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
    <IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>
    <OutputPath>..\..\build\bin\$(MSBuildProjectName)\$(Configuration)\</OutputPath>
  </PropertyGroup>
</Project>