wes*_*ang 4 .net excel office-interop
我构建了一个应用程序,它使用COM Interop生成Excel.它适用于我和我们用户的机器:Office 2007,Windows XP SP2.现在我将它迁移到另一台机器,Office 2010,Windows 7 64位,并使用VS2008的visual studio 2010,它仍然可以正常工作.当我在用户的机器上部署它时,我遇到了问题,他们使用相同的Windows 7 64位而不是Office 2007.
因此,如果我在Win7 64位和Office 2010计算机上安装Office 2007 PIA,请更改我的visual studio项目中的引用,这样可以解决问题吗?
Sto*_*now 10
我知道这个帖子已经有一段时间了,但我想我还是会扔掉两美分以防万一有人偶然发现它.
一般的经验法则是在开发中使用PIA版本,该版本与您计划支持的最旧版本的Office 相链接.因此,如果您要支持Office 2007及更高版本,请在开发期间使用PIA的第12版.
添加对v12 PIA的引用(通过在线下载,通过VSTO下载2007 PIA,或者如果您之前已经安装了Office 2007,则可以从GAC下载).现在你可能会想"好吧,我在Visual Studio中引用v12,现在应该在Office 2007上工作".错误.由于您正在引用v12但安装了Office 2010,因此在程序集绑定期间,您的计算机会说"好了,请求v12,但我们在GAC中安装了v14,并且由于PIA是向前兼容的,我们将使用它".即使您明确告诉它使用v12,在完成构建后,您的机器将使用v14.您可以通过FUSLOG确认.FUSLOG是使用装配绑定时使用的出色工具.注意:如果您在FUSLOG中没有看到任何内容,并且您认为应该这样做,请清除Internet Explorer历史记录中的所有内容,然后重试.
要解决此问题,您需要停止所谓的" 程序集绑定重定向 ".这些PIA通常在GAC中有一个策略文件.策略文件的目的是在解析程序集时将旧版PIA版本重定向到较新版本.要查看此信息,请执行以下操作:
进入GAC后,向下滚动并查找您引用的PIA文件夹(例如Microsoft.Office.Interop.Excel).如果继续滚动,您应该看到以"Policy"开头的文件夹,然后是数字,然后是PIA的名称(例如Policy.12.0.Microsoft.Office.Interop.Excel).这是执行绑定重定向的策略文件.打开该文件夹中的XML配置文件,您将看到类似于以下内容的内容:
<?xml version="1.0" encoding="UTF-16"?><configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity publicKeyToken="71e9bce111e9429c" name="Microsoft.Office.Interop.Excel" culture="neutral"></assemblyIdentity>
<bindingRedirect oldVersion="12.0.0.0" newVersion="14.0.0.0"></bindingRedirect>
</dependentAssembly>
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中,标签"bindingRedirect oldVersion ..."负责PIA程序集重定向.如果您注释掉以下代码:
<?xml version="1.0" encoding="UTF-16"?><configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity publicKeyToken="71e9bce111e9429c" name="Microsoft.Office.Interop.Excel" culture="neutral"></assemblyIdentity>
<!--<bindingRedirect oldVersion="11.0.0.0" newVersion="12.0.0.0"></bindingRedirect>-->
</dependentAssembly>
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)
然后将忽略此重定向.我评论它而不是删除只是因为该文件确实有用,而不是在为旧版本的Office开发时.在您需要的每个PIA策略文件上执行此操作,您的开发计算机将停止重定向.
希望这能回答你的问题!
| 归档时间: |
|
| 查看次数: |
2878 次 |
| 最近记录: |