visual studio 2010 - VS升级后互操作库中的corflags问题



我从2008年到2010年转换了我的visual studio解决方案。项目有一个对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

果然,32位标志被设置,所以我的应用程序构建为64位机器上的任何CPU不能加载这个库。如果我运行corflags/32BIT-我可以关闭32BIT标志,一切工作正常。问题是,为什么这个互操作库是用那个标志集生成的?我在VS2008中没有这个问题,这只是在升级后才开始发生。

更重要的是,我如何修复它,这样我就不必运行corflags来关闭位?我想这可能是由于一些MSBuild-fu,我不太理解。我什么也没发现

问题是升级后c#项目文件中的标签未在某些中设置,显然默认为x86。所以,要解决这个问题,转到项目属性->构建选项卡,并将平台目标设置为AnyCPU以外的东西,保存它。现在将其设置回AnyCPU并保存。将以AnyCPU的值写入项目,一切正常。

这就是我找到答案的地方

最新更新