我最近将所有测试项目从dotnet 4切换到dotnet 3.5(因为我想在CLR 2.0下测试代码(请参见这里)。大多数事情都很好,但是一个测试项目依赖于IWshRuntimeLibrary。这由以下csproj片段指定:
<COMReference Include="IWshRuntimeLibrary">
<Guid>{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
我们将测试项目构建为“AnyCPU”。当测试项目是.Net 4时,这似乎会产生一个ANYCPU的interop dll。现在它是.Net 3.5,interop dll是x86的,在64位平台上运行时会导致System.BadImageFormatException。在降级测试项目之前,这个问题并没有发生。