2015-10-20 228 views
0

建设项目时,我收到以下错误:C# - 无法嵌入互操作类型 - 仍设置“嵌入互操作类型”属性设置为false

"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,每个与其他微软.Office.Core.MsoXXX像MsoLineDashStyle或MsoSyncStatusType。

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

重新启动VS后,嵌入interop ist的属性仍设置为FALSE。

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

该项目有点旧,并没有很长一段时间。 除了一个未知对象外,VS没有标记错误。因为这个,我会期待进一步的编译错误。我不知道这是否可能与嵌入标志问题有关。

任何想法可能是错误的或如何解决它? 在此先感谢。

回答

1

我通过reallive答案:

从错误消息的第一个两个的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的代码!

所以这里的错误信息是有误导性的。 谢谢倾听。

+0

对于删除引用,我们只需要从bin文件夹中删除.ddl,对吧? ps-new到c#.net –