3

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

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

完整的错误是,

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

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

这是我迄今为止为解决此问题所做的工作:

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

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

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

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

4

2 回答 2

5

因此,在与我的建筑师一起工作了几个小时后,我们发现了问题所在。我们的开发人员将同一个 dll 的多个副本埋在我们的源代码控制的各个文件夹中。其中一个项目引用了不正确的 .dll。

修复引用并删除多余的 .dll 后,错误消失了,我们的构建终于可以工作了!:)

于 2013-06-24T05:01:30.600 回答
0

您提到您尝试在测试服务器上构建解决方案。您是使用 Visual Studio 2012 构建解决方案还是实际运行了 msbuild?

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

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

您实际上可以通过查看 TFS Build 的构建日志来获得确切的命令,它会列出它执行的构建命令并简单地自己运行它(您需要删除 TFS Build 添加的用于日志记录的额外内容)

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

要尝试的另一件事是为项目中的所有程序集设置“本地复制”。

希望这可以帮助!

于 2013-06-22T03:46:07.570 回答