VS 2010 项目参考查找不正确的版本



我们最近从一家外包公司接手了一个项目。这个项目使用 Moles 和 Pex 进行单元测试,但由于我们没有很长时间进行这个项目,所以我对这些框架不是很熟悉。

话虽如此,我们正忙于升级此项目以在 .Net 4 中运行。我已经解决了大多数跳出来的问题,但有一个我无法处理。由于以下错误,某些单元测试无法编译:

无法加载文件或程序集'示例程序集,版本=0.0.0.0, Culture=中性,PublicKeyToken=null'或其依赖项之一。 这 系统找不到指定的文件。

让我感到困惑的部分是它是一个项目引用,并且程序集正在复制到单元测试的输出目录中。大多数其他项目参考都找到了,我无法发现有效和无效之间的任何区别。我不确定这个问题是否与pex/moles框架有关,但我想我会提到它。

我已经尝试了删除和添加所有引用并重新生成摩尔组件的常见方法。

还有其他人遇到过这个问题吗?任何帮助将不胜感激。

编辑1:好的,在对构建输出进行更多调查后,它看起来好像不是痣,而是未正确生成的.accessor文件。我遇到了与单元测试项目中提出的完全相同的问题,找不到被测程序集(或依赖项),但与他的问题不同,删除访问器后我的问题并没有消失。

编辑2:原来是一个名为Publicize的程序.exe它因该错误而失败。仍然不知道为什么。查看 Fusion 日志看起来它不会在工作目录下搜索它试图为其生成访问器的 dll。在我们的解决方案中的一堆程序集上手动运行它,我发现它适用于某些程序集,但不适用于其他程序集。但是,我无法确定有效的和无效的之间的区别。

谢谢

啊,是的。这个故事我读了很多遍,还有T恤。当遇到任何问题时,我都会检查我通常的鼹鼠急救箱,包括这个问题。

也许,这个问题会提供一些帮助:我是唯一一个获得"程序集在当前目标框架中不可用"的人吗?

  • 确保 Moles 框架正确安装在工作站和/或构建服务器上
  • 确保正在构建 Moles 程序集(请参阅排除的"Moles 程序集"目录)
  • 检查您的构建配置文件 - 可能需要将其设置为完整的框架配置文件
  • 三重检查您的输出目的地和构建后命令 - 我似乎有一些解决方案可以将输出复制到另一个位置
  • 尝试使用 Visual Studio Pex/Moles 扩展(如果尚未这样做)

侵入性"全部修复"过程是简单地创建一个全新的解决方案、项目和测试项目,然后将现有代码文件复制到其中。 令人惊讶的是,对于各种与项目相关的错误,可以解决多少问题。 基本上,整个解决方案的硬重启。

既然你要更新到.NET 4,你不妨去4.5,并使用Moles的产品化版本,称为"Fakes"。 您可以在Visual Studio 2012候选发行版中找到Fakes。 这个重要的功能没有得到太多关注。

最新更新