我们最近接管了一家外包公司的项目。这个项目使用Moles和Pex进行单元测试,但由于我们没有长时间使用该项目,所以我对框架不是很熟悉。
话虽这么说,我们正在忙着升级这个项目以运行.Net 4.我已经解决了大部分已经跳出来的问题,但有一个我无法处理。由于错误,某些单元测试无法编译:
无法加载文件或程序集'Example.Assembly,Version = 0.0.0.0, Culture = neutral,PublicKeyToken = null'或其依赖项之一。该 系统找不到指定的文件。
让我困惑的部分是它是一个项目引用,并且程序集被复制到单元测试的输出目录中。大多数其他项目参考都被发现,我无法发现有效的和不可用的。我不确定这个问题是否与pex / moles框架有关,但我想我会提到它。
我尝试过删除和添加所有引用以及重新生成moles程序集的常用操作。
还有其他人遇到过这个问题吗?任何帮助将不胜感激。
EDIT1:好的,在对构建输出进行一些调查之后,它看起来好像不是痣,而是正确生成的.accessor文件。我得到的问题与Unit test project cannot find assembly under test (or dependencies)中的问题完全相同,但与他的问题不同,删除访问者后我的问题不会消失。
EDIT2:结果是一个名为Publicize.exe的程序,该程序因此错误而失效。但仍然不知道为什么。查看Fusion日志看起来它不会在工作目录下搜索它正在尝试为其生成访问器的dll。从我们的解决方案中的一堆程序集上手动运行它,我发现它适用于某些程序,但不适用于其他程序。但是,我无法确定有效的和有效的无差异。
由于
答案 0 :(得分:0)
啊,是的。我多次读过这个故事,并且有T恤。当遇到任何问题时,我会使用我常用的Moles急救包,包括这个问题。
也许,这个问题会提供一些帮助:Am I the only one getting "Assembly Not Available in the Currently Targeted Framework"?
侵入性修复 - 所有过程只是创建一个全新的解决方案,项目和测试项目,然后将现有的代码文件复制到其中。令人惊讶的是,可以解决与项目相关的各种错误的问题。基本上,整个解决方案都需要重新启动。
由于您要更新到.NET 4,您可以转到4.5,并使用Moles的产品化版本,称为“Fakes”。您将在Visual Studio 2012发布候选版本中找到Fakes。这一重要特征并未受到太多关注。