System.BadImageFormatException: 无法加载文件或程序集“x_Accessor,...”,该程序集是由一个更新的运行时构建的。

5
System.BadImageFormatException: Could not load file or assembly 'x_Accessor, 
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. 
This assembly is built by a runtime newer than the currently loaded runtime and 
cannot be loaded.

我在治疗这种病症方面遇到了困难...

我已经为dot net测试项目创建了单元测试。使用默认的单元测试框架。

自动化工具创建了一个访问器,用于测试私有方法

[我知道理论上应该通过调用者测试私有方法 - 但是,这取决于它们的目的、内容、上下文等等...所以如果可以,我会测试它们。]

我曾在几个项目中做过这件事,并且效果不错。

但是,在我现在试图测试的这两个项目中,我遇到了这个问题...

注意:我使用的是Framework 3.5 - 这可能是个问题吗?-但是访问器应该知道这一点!

我根本找不到任何地方可以修改程序集的运行时...我想这就是访问器。

是的,我确实进行了清理和重建,我彻底删除了输出文件夹并重新构建了,我删除了访问器和私有方法并重新创建了它们。

请帮助我找到如何解决这个问题!谢谢。


1
你的自动化工具针对的是.NET 4。使用类似ilmerge的工具进行重新定位。 - leppie
1个回答

7
您不能引用一个编译在更高版本的.NET(或CLR版本更准确)中的程序集。因此,在您的示例中,如果您有一个用于单元测试的程序集是.NET 3.5,则无法引用一个.NET 4.0的程序集。
我认为这个答案是您要寻找的:
VS2010 SP1单元测试针对3.5框架失败,如果使用私有访问器,请参见

问题是 - "两个都是吗?" 因为我们不是在谈论两个项目!只有一个项目,它是dot net 3.5,就是这样。如果你问的是测试项目和被测试项目,它们都是3.5,并且它们在同一平台上 - 除了私有测试之外,所有测试都执行得很好。我真的没有在谈论一个单独的项目!! - Thalia
你使用的是哪个版本的Visual Studio? - Daniel Lee
如果您在项目的引用中查看,是否有任何被引用的dll文件的.NET版本高于3.5? - Daniel Lee
他们都说v2.0.50727 - 这是3.5的值。 - Thalia
你尝试过重新生成私有访问器吗?http://msdn.microsoft.com/zh-cn/library/ms184796(v=vs.80).aspx - Daniel Lee
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接