【问题标题】:Database-first project: missing CSDL file prevents project being built数据库优先项目:缺少 CSDL 文件会阻止项目的构建
【发布时间】:2018-06-13 17:08:35
【问题描述】:

当前项目:

  • 点网 4.7.1
  • MVC 5
  • 来自旧版数据库的数据库优先,[DbName].edmx/Models/ 中的文件

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

如何重建它?这是我的第一个数据库优先项目,其他一切都是代码优先,而 Google 什么也没给我。

【问题讨论】:

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


    【解决方案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

    当我第一次发这个帖子时,我在发帖后不久got one Related link。该回复的前半部分是有道理的 - 选择 *.edmx 文件并更改 Build Action 值,但后半部分让我感到困惑,直到我真正打开 *.edmx 文件并单击模型图的空白部分出现了——突然,我的属性侧边栏变成了完全不同的东西,确实具有需要更改的 Metadata Artifact Processing 值。

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

    所以,对于遇到同样问题的其他人,仅供参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 2015-07-05
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多