System.BadImageFormatException:无法加载文件或程序集或其依赖项之一

时间:2013-12-19 06:43:29

标签: .net 64-bit

我与System.BadImageFormatException: Could not load file or assembly有类似的错误。 但解决错误的条件是不同的。

  

测试名称:Test_DisableTestUserAccount
   测试FullName:
   测试来源:
   测试结果:失败    测试持续时间:0:00:00

     

结果讯息:
   无法获取#typename#类型。错误:System.IO.FileLoadException:无法加载文件或程序集'ComponentName.IntTest,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = a433f9a8cee952'或其依赖项之一。强名称验证失败。 (HRESULT异常:0x8013141A)
   文件名:'ComponentName.IntTest,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 433f9a8cee952'---> System.Security.SecurityException:强名称验证失败。 (HRESULT异常:0x8013141A)
   失败的集会区域是:
   我的电脑
      在System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark& stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)
      在System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark& stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)
      在System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,Evidence assemblySecurity,RuntimeAssembly reqAssembly,StackCrawlMark& stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)
      at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile,Evidence securityEvidence,Byte [] hashValue,AssemblyHashAlgorithm hashAlgorithm,Boolean forIntrospection,Boolean suppressSecurityChecks,StackCrawlMark& stackMark)
      在System.Reflection.Assembly.LoadFrom(String assemblyFile)
      在Microsoft.VisualStudio.TestPlatform.MSTestFramework.TypeCache.LoadType(String typeName,String assemblyName)

条件:

  1. 该解决方案具有C#控制台应用程序及其UnitTest项目
  2. InternalsVisibleTo从控制台应用程序启用到单元项目
  3. 所有项目都是名字签名
  4. sln平台有两种配置:x64和x86(其他都被移除)
  5. 当我运行将访问控制台应用程序内部元素的单元测试用例时,测试用例将失败并抛出异常。

2 个答案:

答案 0 :(得分:10)

问题的根本原因是我使用x64平台构建sln并使用x86测试设置运行测试用例。

只需使用正确的测试设置平台来运行测试用例:

  • 构建平台应与运行测试用例的平台相同。

截图: enter image description here

答案 1 :(得分:0)

在VS2010中,它应该是

测试 - 编辑测试设置 - 本地 - 主机

另外,您需要检查Build - Configuration Manager