【问题标题】:'Validation' does not exist in the namespace 'System.Data.Entity' when building on Team City在 Team City 上构建时,命名空间“System.Data.Entity”中不存在“验证”
【发布时间】:2014-07-09 14:12:42
【问题描述】:

我有一个项目在我的计算机上运行良好,但是当我尝试在 Team City 上构建它时,对于我拥有的源文件出现以下构建错误

using System.Data.Entity;    
using System.Data.Entity.Validation;


CS0234: The type or namespace name 'Validation' does not exist in the namespace 'System.Data.Entity' (are you missing an assembly reference?)

我是否需要在运行 Team City 的服务器上手动安装 Entity Framework 才能正常工作?

激活 Nuget 还原后更新:

这一定是某种配置问题。

我可以在构建日志中看到构建过程正在复制 .dll:

[Copy] Copying file from "D:\TeamCity\agent1\work\541c9f462afc285d\packages\EntityFramework.5.0.0\lib\net45\EntityFr    amework.dll" to "bin\Release\EntityFramework.dll".
[16:51:55][Copy] Copying file from "D:\TeamCity\agent1\work\541c9f462afc285d\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.xml" to "bin\Release\EntityFramework.xml".

但不久之后,它正在考虑一堆不同的位置,但不包括 bin\Release\EntityFramework.dll" 文件夹。

更新 2:

手动将 .dll 复制到我的类库的 bin/release 文件夹有助于构建通过,但显然这不是可行的解决方案,因此需要继续找出如何正确配置它。

更新 3:

我很遗憾地说,从来没有找到令人满意的解决方案,所以非常欢迎任何能解决这个问题的天才。 :)

【问题讨论】:

  • 您是否尝试过使用通过 NuGet 获取 EF 的预构建任务?这样您就不必在构建服务器上安装 EF。 TeamCity 在尝试构建它时得到它。
  • 我赞同@Shriroop 写的内容。 Guess TeamCity 正在尝试加载 .NET 框架中包含的旧实体框架(没有 System.Data.Entity.Validation)。
  • 感谢cmets,试试这个!
  • 让我们都知道它是否有效。
  • 遗憾的是,我能够通过手动将实体框架 dll 文件复制到构建服务器上的正确文件夹来进行临时修复,但这并不是真正的解决方案。所以还是有点沮丧。正确的 .dll 由 nuget 下载,但不会放置在正确的文件夹中以使构建工作。

标签: c# entity-framework continuous-integration teamcity assembly-references


【解决方案1】:

提示您缺少程序集。正如@Shriroop 建议的那样,这是在 EF 包中。

在您的编译步骤之前,添加 Nuget 安装程序步骤。您应该设置几个选项,解决方案名称的路径,我建议您使用 nuget 2.7+ 和恢复模式:恢复。

要在 teamcity 中安装最新的 nuget 版本,请转到管理 > Nuget 设置 > NuGet.exe 并获取最新版本。

这里是 NuGet 安装程序步骤的示例:http://img.hihi.si/Upload/5PUm.png

【讨论】:

  • 嗯,我在构建日志中发现EF包已下载,但之后构建过程似乎没有找到正确的位置。
  • 您能否提供完整的日志并描述所有构建步骤
猜你喜欢
  • 1970-01-01
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
  • 1970-01-01
相关资源
最近更新 更多