【发布时间】: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