2012-06-21 47 views
2

我们最近接管了一家外包公司的项目。这个项目使用Moles和Pex进行单元测试,但由于我们没有长时间的项目,我对框架并不是很熟悉。VS 2010项目参考寻找不正确的版本

这就是说,我们正在忙于升级这个项目,运行在.Net 4.我已经解决了跳出来的大部分问题,但有一个我无法得到处理。因为错误的一些单元测试都无法编译:

Could not load file or assembly 'Example.Assembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

,导流我的是它是一个项目引用和组件被复制到单元测试的输出目录中的一部分。大多数其他项目参考被发现,我不能发现那些工作和没有工作之间的任何区别。我不确定这个问题是否与pex /痣框架有关,但我想我会提及它。

我已经尝试过去除和添加所有参考和再生痣组件的通常情况。

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

EDIT1:好了,经过一番详细的调查生成输出,它看起来好像是没有痣,但不正确生成.accessor文件。我得到的问题与Unit test project cannot find assembly under test (or dependencies)中的问题完全相同,但与他的问题不同,在删除访问者后,我的问题不会消失。

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

谢谢

回答

0

啊,是的。我已经多次阅读这个故事,并有T恤。遇到任何问题时,我都会穿过我的通常的Moles急救箱,包括这个。

也许,这个问题将提供一些帮助:Am I the only one getting "Assembly Not Available in the Currently Targeted Framework"?

  • 确保痣框架是否正确安装在工作站上和/或构建服务器
  • 确保痣组件正在兴建(见排除“痣组件”目录)
  • 检查您的建造轮廓 - 它可能需要设置为全框架轮廓
  • 三重检查您的输出目的地和后生成命令 - 我似乎有些解决方案复制OU tput的另一个位置
  • 尝试使用Visual Studio的Pex /痣扩展,如果你没有这样做

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

由于您正在升级到.NET 4,您最好还是转到4.5,并使用Moles的产品化版本(称为“Fakes”)。你会在Visual Studio 2012候选版中找到Fakes。这一显着特征并未受到多大关注。

+0

看来,这是一个堕落的私人访问者一代,而不是痣。由于这是基本被弃用的软件,我已经禁用了使用它的测试。将在稍后阶段通过不访问私有变量来重新实现它们。 – knersis

+0

这是一个好主意。当我遇到他们时,我正在将项目转换为当前的技术。 –