2010-05-06 58 views
0

我有一个由大约4000 MbUnit测试覆盖的.NET 3.5程序集。我一直在使用mbunit.cons.exe程序运行这些程序,没有任何问题。在Gallio/MbUnit失败中运行的测试;无法加载Castle DynamicProxy

现在我尝试切换到公堂(mbunit.cons.exe开始生产的XML报告时,与“内存不足”异常吹起来)。

当运行在伊卡洛斯测试,他们大多会失败,但以下情况除外:

System.TypeInitializationException: The type initializer for 'Rhino.Mocks.MockRepository' threw an exception. ---> 
System.IO.FileLoadException: Could not load file or assembly 'Castle.DynamicProxy2, Version=2.0.3.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' or one of its dependencies. 
The located assembly's manifest definition does not match the assembly reference. 
(Exception from HRESULT: 0x80131040) at Rhino.Mocks.MockRepository..cctor()

大会根据测试并使用动态代理。动态代理程序集与被测程序集位于同一个目录中。

我试图把包含组件的目录中的“提示目录”,“应用程序基目录”和伊卡洛斯“工作目录”字段,但是这不会改变结果。

有没有人成功地使用加利奥和动态代理一起,或有任何暗示,以问题可能是什么?

回答

0

貌似Rhino.Mocks引用不同版本的Castle.DynamicProxy2。它试图寻找'Castle.DynamicProxy2, Version=2.0.3.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc'。你能看看bin文件夹中的Castle.DynamicProxy2程序集,看它是否具有相同的版本和PubliKeyToken

+0

你知道吗?你是对的!我有版本2.1.0.0 但我不明白的是为什么程序集会自己和MbUnit正确工作,但不是与Gallio。 事实证明,我们正在使用依赖于两个不同版本的动态代理的两个不同的第三方的DLL(微内核和犀牛制品)。 这将是前一段时间,我可以得到的版本理顺,找出这是否正常工作。感谢您让我走上正轨。 – andypaxo 2010-05-06 23:19:20

+1

Rhino.Mocks使用ILMerge内化了DynamicProxy。因此,除非您从源代码构建自己的副本,并且不执行合并,否则我对您描述的行为感到惊讶。 – 2010-05-08 10:37:31

+0

@Jeff ...是的,最终发现了这一点。我们正在使用犀牛的未合并版本。不幸的是,合并后的版本并没有内部化,所以我们也遇到了问题(我们的项目使用Castle Windsor)。尽管如此,自己运行ILMerge以获得(几乎)所有内化的工作都很棒。 – andypaxo 2010-05-08 15:29:42

相关问题