1

我的应用程序包含一段在组件服务内部执行的代码,因此我们需要在 GAC 中注册我们的业务规则层(及其依赖项)。这些依赖项之一是 FooCore.dll,它包含对整个应用程序可见的类和服务。

一切正常,直到我在 FooCore 的一个类中添加了一个新方法。现在,当我运行单元测试时,任何调用此新方法的测试都会引发 MissingMethodException,即使我使用最新版本的程序集更新了 GAC。唯一的解决方法是在运行测试之前从 GAC 中删除 FooCore。

我尝试了以下事情:

  • 重建整个解决方案,刷新 GAC 中的内容,然后运行测试 = 失败
  • 在测试项目中删除并重新添加了 FooCore 程序集引用 = 失败
  • 确保 FooCore 在 properties = failure 中设置为“Copy Local”

我可以做些什么来确保 VSTS 从其明确定义的位置而不是从 GAC 加载引用的程序集?

4

2 回答 2

1

进一步的研究在这个问题上出现了这个论坛主题,其中有人认为这可能是由于 VS2008 的性能分析功能保留了一个过时的程序集版本。

我能够通过以下方式解决我的问题:

  1. 然后重建我的解决方案
  2. 刷新 GAC 中的所有内容,然后
  3. 在我的测试项目中删除并重新添加程序集引用,然后
  4. 关闭并重新打开 Visual Studio 2008

我不确定其中哪些步骤是明确必要的,但这种“厨房水槽”方法为我解决了这个问题。

更新:这篇 Microsoft 文章指出,在编译解决方案时,GAC 中的程序集永远不会复制到输出 bin\ 文件夹中,即使“复制本地”设置为 true。

于 2008-10-14T19:56:22.577 回答
0

就我而言,我有两个位置不同的相同(几乎)程序集。测试项目引用了第一个程序集,而 UnitTest 项目引用了第二个程序集(它们完全一样)。

因此,请仔细检查所有项目参考资料。

于 2015-11-23T14:28:56.223 回答