【问题标题】:VS 2010 project reference looking for incorrect versionVS 2010 项目参考寻找不正确的版本
【发布时间】:2012-06-21 15:09:16
【问题描述】:

我们最近从一家外包公司接手了一个项目。这个项目使用 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。在我们解决方案中的一堆程序集上手动运行它,我发现它适用于某些,但不适用于其他。不过,我无法确定有效和无效之间的区别。

谢谢

【问题讨论】:

    标签: visual-studio-2010 unit-testing .net-4.0 moles


    【解决方案1】:

    啊,是的。我读过这个故事很多遍了,我有这件 T 恤。遇到任何问题(包括这个问题)时,我都会使用常用的 Moles 急救箱。

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

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

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

    由于您正在更新到 .NET 4,您不妨转到 4.5,并使用 Moles 的产品化版本,称为“Fakes”。您会在 Visual Studio 2012 候选版本中找到 Fakes。这一重要功能并未受到太多关注。

    【讨论】:

    • 看来倒塌的是私有访问器一代,而不是鼹鼠。由于这基本上是不推荐使用的软件,因此我禁用了使用它的测试。稍后将通过不访问私有变量来重新实现它们。
    • 这是个好主意。当我遇到它们时,我正在将项目转换为当前技术。
    猜你喜欢
    • 1970-01-01
    • 2015-04-25
    • 2018-07-09
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多