c# -不能嵌入互操作类型-仍然设置'嵌入互操作类型'属性为false

本文关键字:类型 互操作 false 属性 不能 设置 | 更新日期: 2023-09-27 18:18:41

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

"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后,嵌入互操作列表的属性仍然设置为FALSE。

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

该项目有点老,没有建立很长时间。除了一个未知的对象,没有明显的错误VS.我预计进一步的编译错误,因为这一点。我不知道这是否可能与嵌入标志问题有关。

有什么想法可能是错的或如何解决它?

c# -不能嵌入互操作类型-仍然设置'嵌入互操作类型'属性为false

我得到了答案:

错误消息中两个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!

所以错误信息在这里是误导性的。