数据库优先项目:缺少CSDL文件阻止项目构建

时间:2018-06-13 17:08:36

标签: asp.net asp.net-mvc asp.net-mvc-5 ef-database-first

当前项目:

  • DotNet 4.7.1
  • MVC 5
  • 数据库优先来自遗留数据库[DbName].edmx
  • 中的/Models/文件

当试图构建项目以进行测试时,我收到一个突然错误(CS1566),读取资源Models.[DbName].csdl时出错,并且找不到路径的一部分。果然,\edmxResourcesToEmbed\Models\目录中缺少整个\obj\Debug\文件夹。

如何重建这个?这是我的第一个数据库第一个项目,其他一切都是代码优先的,谷歌也没有给我任何回报。

1 个答案:

答案 0 :(得分:-1)

由于StackOverflow能够链接您通常认为不相关的其他帖子,我能够解决这个问题。

这个问题也是因为我采用了我需要的代码优先工作流,以便首先使用多项目存储库模式来防止代码中的错误。具体来说,我修改了*.csproj个文件,以便始终删除我构建/发布的项目的binobj目录:

<Target Name="BeforeBuild">
  <!-- Remove obj folder -->
  <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
  <!-- Remove bin folder -->
  <RemoveDir Directories="$(BaseOutputPath)" />
</Target>

为什么呢?因为当我没有这样做时,任何构建/发布代码优先项目的尝试都会因“多个冲突的web.config文件”而失败。我首先没有,但这就是抱怨的。所以习惯上,我只是设计每个项目,在构建/发布之前删除这两个目录,以避免显示停止错误。

基本上:系统通过清除发布过程所需的bin文件,每次构建或发布时都会给自己一个致命的发型。感谢我和代码优先的多项目存储库模式解决方案应用于数据库优先项目。甜。 facepalm bridgepinch smh

当我第一次发帖时,我<{3}}很快发布。该回复的前半部分是有意义的 - 选择*.edmx文件并更改Build Action值,但后半部分让我感到困惑,直到我实际打开*.edmx文件并点击空出现的模型图的一部分 - 突然,我的属性侧边栏变为完全不同的东西,其中 具有需要更改的Metadata Artifact Processing值。

按照这些说明,然后关闭VS,然后删除我的*.csproj修改,然后打开项目备份,然后构建,然后反转这些指令并实际发布,我能够扭转我的伤害无意中完成了。

所以,对于有同样问题的其他人来说,仅供参考。