VS升级后互操作库上的corflags问题

时间:2011-07-11 23:23:29

标签: visual-studio-2010 corflags

我将视觉工作室解决方案从2008年转换为2010年。一个项目提到了ShDocVw。当我运行程序时,我得到一个BadImageFormatException。谷歌搜索让我用corflags检查互操作库:

corflags Interop.ShDocVw.dll

Version   : v2.0.50727 
CLR Header: 2.5
PE        : PE32
CorFlags  : 3
ILONLY    : 1
32BIT     : 1
Signed    : 0

果然,设置了32BIT标志,因此我在64位计算机上构建为Any CPU的应用程序无法加载此库。如果我运行corflags / 32BIT-我可以关闭32BIT标志,一切正常。问题是,为什么使用该标志设置生成此Interop库?我没有VS2008那个问题,这只是在升级后才开始发生的。

更重要的是,如何修复它以便我不必运行corflags来关闭它?我认为这可能是由于一些我不太了解的MSBuild-fu。无论如何,我无法发现任何东西。

1 个答案:

答案 0 :(得分:2)

问题是升级后,< PlatformTarget> 标记未在C#项目文件中的某些< PropertyGroups> 中设置,显然默认为x86 。所以,要解决这个问题,请转到项目属性 - >构建选项卡并将平台目标设置为AnyCPU以外的其他内容,保存它。现在将其设置回AnyCPU并保存。 < PlatformTarget> 将以AnyCPU的值写入项目,一切顺利。

Here is where I found the answer.

相关问题