C# - 无法嵌入互操作类型 - 仍然将'嵌入互操作类型'属性设置为false

时间:2015-10-20 13:10:37

标签: c# interop office-interop com-interop

构建项目时出现以下错误:

"Cannot embed interop type 'Microsoft.Office.Core.MsoXXX' found in both assembly 'c:\Windows\assembly\GAC_MSIL\office\14.0.0.0__71e9bce111e9429c\OFFICE.DLL' and 'c:\myProject\lib\OFFICE.DLL'. Consider setting the 'Embed Interop Types' property to false."

我收到了130个错误,每个错误都有另一个Microsoft.Office.Core.MsoXXX,如MsoLineDashStyle或MsoSyncStatusType。

实际上,Visual Studio中项目中的大多数引用都将该属性设置为TRUE。所以我将它们全部更改为FALSE,尤其是OFFICE.dll。 错误仍然存​​在。

重新启动VS后,embed interop的属性仍然设置为FALSE。

同一个地图中的另一个项目使用完全相同的OFFICE.dll(也位于c:\ myProject \ lib \ OFFICE.DLL),并且标志设置为FALSE。建立这个项目确实很好。

这个项目有点老了,很长时间没有建成。 除了一个未知对象外,VS没有明显的错误。因此,我期待进一步的编译错误。我不知道这是否与嵌入标志问题有关。

任何想法可能出错或如何解决? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我得到了答案:

错误消息中的两个dll中的第一个 (C:\ WINDOWS \装配\ GAC_MSIL \办公\ 14.0.0.0__71e9bce111e9429c \ OFFICE.DLL) 实际上命名为Windows.Microsoft.Office.Core

而第二次参考 (C:\ myProject的\ lib中\ OFFICE.DLL) 被命名为OFFICE.DLL。

两者都在项目中并存。删除我的项目中的两个引用之一后,不再有任何问题。 我也能用embed-flag = TRUE来编译和运行代码!

所以这里的错误信息是误导性的。 谢谢你的聆听。