C# Can';在项目中找不到互操作dll

C# Can';在项目中找不到互操作dll,c#,.net,ms-word,office-interop,C#,.net,Ms Word,Office Interop,我正在使用MicrosoftWord2007开发一个C#项目。我在项目中添加了对单词component的引用。编译后,我在bin中找不到互操作dll。在哪里可以找到互操作dll?我需要复制它。在Word组件中,展开项目引用,找到互操作dll,突出显示它,然后在“属性”窗口中启用“复制本地”。再次编译后,您现在应该可以在输出目录中看到dll。在正常配置中,Office已经在GAC中安装了dll(PIA=主互操作程序集)。因此,您无需将其与项目一起分发 对于Office2007,总是有一个警告,即默

我正在使用MicrosoftWord2007开发一个C#项目。我在项目中添加了对单词component的引用。编译后,我在bin中找不到互操作dll。在哪里可以找到互操作dll?我需要复制它。

在Word组件中,展开项目引用,找到互操作dll,突出显示它,然后在“属性”窗口中启用“复制本地”。再次编译后,您现在应该可以在输出目录中看到dll。

在正常配置中,Office已经在GAC中安装了dll(PIA=主互操作程序集)。因此,您无需将其与项目一起分发

对于Office2007,总是有一个警告,即默认情况下不会安装PIA,因此用户的机器可能不会在GAC中安装PIA。出于这个原因,微软提供了一个可再发行的下载。您的安装可以检查项目中使用的PIA是否存在并安装它们(与.NET Framework相同)

可以使用tlbimp.exe()创建您自己的IA,在某些情况下您可能需要这样做。在这种情况下,您可以将dll与项目一起分发


Hans提到了.NET Framework最新版本的“嵌入互操作类型”选项。这可能很有用,但需要进行彻底的测试,因为此选项有时会产生“意外的结果”(从PIA中嵌入错误或不完整的信息)。

当您使用.NET 4.0或更高版本以及VS2010或更高版本时,应该这样做。“嵌入互操作类型”功能取代了仍然需要部署互操作库的需求。不要修复它。@HansPassant您希望在鼓励人们使用“启用互操作类型”时要小心,因为Office对象模型的某些部分存在已知问题(嵌入了不正确的信息)。当你推荐它的时候,最好也推荐彻底的测试…嗯,不,那是没有必要的。一些程序员不理解“使用适用接口”错误消息的含义,仅此而已。我们对此有Q+A。