我最近将我们所有的测试项目从 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 互操作 dll。现在是 .Net 3.5,互操作 dll 是 x86,这会导致System.BadImageFormatException
在 64 位平台上运行时出现错误。在降级测试项目之前不会出现此问题。