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

C# - Cannot embed interop type - still set 'Embed Interop Types' property to false

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

"Cannot embed interop type 'Microsoft.Office.Core.MsoXXX' found in both assembly 'c:\Windows\assembly\GAC_MSIL\office.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 ist 的 属性 仍然设置为 FALSE。

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

项目有点老,好久没建了。 除了一个未知物体外,VS 没有发现任何明显的错误。因此,我预计会出现进一步的编译错误。我不知道这是否与嵌入标志问题有关。

任何想法可能是错误的或如何解决它? 提前致谢。

我通过realive得到答案:

来自错误消息的两个 dll 中的第一个 (c:\Windows\assembly\GAC_MSIL\office.0.0.0__71e9bce111e9429c\OFFICE.DLL) 实际上被命名为 Windows.Microsoft.Office.Core

而第二个参考 (c:\myProject\lib\OFFICE.DLL) 被命名为 OFFICE.DLL.

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

的代码

所以这里的错误信息是误导。 感谢收听。