1

在我的 asp.net 应用程序中引用程序集 Microsoft.Office.Interop.Word 时出现以下错误。

'Microsoft.Office.Interop.Word.ApplicationClass' 类型存在于两者中

C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.Word\11.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll

C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.Word\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll

以前,我收到错误,但 12.0.0.0 在 Visual Studio 下的 PIA 目录中,但错误消息是相同的,只是指向不同的路径。从那时起,我将 dll 复制到 GAC,但出现了同样的错误。

我认为 .Net 应该解决这个问题。谁能给我一些帮助?

顺便说一句,我正在使用 Visual Studio .Net 2008 执行此操作

4

1 回答 1

0

这是来自上一个答案,但包含相关信息,以防链接腐烂的参考死亡:


主互操作程序集版本控制的问题:使用 .config 文件和程序集绑定重定向,我终于能够摆脱最初报告的异常。我创建了一个 .config 文件,其中包含有关程序集绑定重定向的信息。然后将 .config 复制到包含托管应用程序二进制文件的目录中。现在旧插件和插件共存并正常工作,无需在转换 COM 组件时使用 Marshal.CreateWrapperOfType 方法,因此似乎有一种解决方法,我什至不必对 GAC 进行更改。仍有一些问题需要解决,但目前似乎有一个可行的解决方案。

<configuration>
<runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 <dependentAssembly>
              <assemblyIdentity name="MyCompany.Assembly1.Interop"
                                publicKeyToken="25578904345626a0"
                                culture="neutral" />
              <bindingRedirect oldVersion="1.0.0.0"
                               newVersion="1.0.1.0"/>
              <codeBase version="1.0.1.0"
                        href="F:\MyApp\bin\Primary Interop Assemblies\MyCompany.Assembl1.Interop.dll"/>
         </dependentAssembly>
 <dependentAssembly>
              <assemblyIdentity name="MyCompany.Assembly2.Interop"
                                publicKeyToken="25578904345626a0"
                                culture="neutral" />
              <bindingRedirect oldVersion="9.0.0.0"
                               newVersion="9.0.1.0"/>
              <codeBase version="9.0.1.0"
                        href="F:\MyApp\bin\Primary Interop Assemblies\MyCompany.Assembly2.Interop.dll"/>
         </dependentAssembly>
       </assemblyBinding>
</runtime>
</configuration>

[在链接上有更多关于根本原因的讨论,其他可能但尴尬的解决方案]

于 2011-10-25T13:33:24.947 回答