类型'xxx'在未引用的程序集中定义

时间:2013-06-22 02:54:43

标签: c# reference assemblies tfsbuild tfs2012

我一直在网上寻找答案,并且可以真正使用帮助。

我已经查看了有关此错误的其他帖子,但这些答案都没有帮助我。

完整错误是,

类型'xxx'在未引用的程序集中定义。您必须添加对程序集'xxx,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'的引用。

解决方案在本地构建良好,但是当我在构建服务器上触发构建时会发生错误。

以下是我迄今为止试图解决的问题:

  • 确保所有项目参考都是正确的(如果建筑师对其进行审核) 和我一起)
  • 将“SpecificVersion”属性更改为true
  • 删除了引用并将其添加回来(在VS2012中并进行了编辑 .csproj文件本身)
  • 在构建服务器上本地构建解决方案,它通过
  • 编辑 - 我还应该提一下,我已经在两个不同的构建服务器上构建了这个解决方案,但仍然会遇到同样的错误

我正在使用VS2012和TFS2012来执行此操作。

我真的很感激任何帮助,谢谢。

* 更新: *我刚刚在构建服务器上执行了MSBuild,但是将配置更改为“Release”,并且能够重现部分错误。但是,一些关键的差异是它正在寻找的版本突然是1.3.1.15而不是0.0.0.0而PublicKeyToken不再是null。有谁知道这可能意味着什么?程序集的版本应该是0.0.0.0。

2 个答案:

答案 0 :(得分:5)

因此,在与我的建筑师再花几个小时之后,我们发现了这个问题。我们的开发人员在源代码管理中的各种文件夹中隐藏了同一个dll的多个副本。其中一个项目引用了不正确的.dll。

修复引用并删除额外不需要的.dll后,错误消失了,我们的构建终于工作了! :)

答案 1 :(得分:0)

您提到过您尝试在测试服务器上构建解决方案。您是否使用visual studio 2012构建解决方案,或者您是否实际运行了msbuild?

准确的测试是使用与此类似的msbuild:

MSBuild MySolution.sln / p:Configuration =“Debug”/ p:Platform =“CPU Any”

你可以通过查看TFS Build的构建日志来获得确切的命令,它将列出它执行的构建命令并自行运行它(你需要删除TFS Build为日志记录添加的额外内容)

之后,您可以在本地计算机上运行相同的命令,看看它是否通过。

要尝试的另一件事是为项目中的所有程序集设置“copy local”。

希望这有帮助!