【发布时间】:2012-02-27 21:48:31
【问题描述】:
我最近将我们所有的测试项目从 dotnet 4 切换到了 dotnet 3.5(因为我想在 CLR 2.0 下测试代码(请参阅here)。大多数情况都可以正常工作,但是一个测试项目依赖于 IWshRuntimeLibrary。这是由以下 csproj sn -p 指定:
<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,这会在 64 位平台上运行时导致 System.BadImageFormatException。在降级测试项目之前不会出现此问题。
【问题讨论】:
-
我认为不存在平台无关的 com 引用之类的东西,我怀疑新的 CLR/jitter 能够检测 x86 依赖项并专门为 x86 编译,因此它可以工作。不过只是在黑暗中刺伤。
标签: c# com com-interop platform-independent