- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我构建了一个应用程序,它使用 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 项目中的引用,是否可以解决问题?
最佳答案
我知道这篇文章已经有一段时间了,但我想无论如何我都会投入两分钱,以防有人偶然发现它。
一般经验法则是在开发中使用与您计划支持的最旧 Office 版本链接的 PIA 版本。因此,如果您要支持 Office 2007 及更高版本,请在开发过程中使用 PIA 版本 12。
添加对 v12 PIA 的引用(通过 VSTO 在线下载 2007 PIA,或者如果您之前已经安装了 Office 2007,则从 GAC 下载)。现在您可能会想“好吧,我在 Visual Studio 中引用 v12,这现在应该可以在 Office 2007 上运行”。错误的。由于您引用的是 v12,但安装了 Office 2010,因此在程序集绑定(bind)期间,您的计算机会显示“好吧,请求 v12,但我们在 GAC 中安装了 v14,并且由于 PIA 向前兼容,我们将使用它”。即使您明确告诉它使用 v12,构建完成后您的机器将使用 v14。您可以通过FUSLOG确认这一点。 FUSLOG 是处理程序集绑定(bind)时使用的出色工具。 注意:如果您认为应该在 FUSLOG 中看到任何内容,请清除 Internet Explorer 历史记录中的所有内容,然后重试。
要解决此问题,您需要停止所谓的“assembly binding redirection” '。这些 PIA 通常在 GAC 中拥有一个策略文件。策略文件的目的是在解析程序集时将旧的 PIA 版本重定向到新版本。要查看此内容,请执行以下操作:
进入 GAC 后,向下滚动并查找您引用的 PIA 文件夹(例如 Microsoft.Office.Interop.Excel)。如果继续滚动,您应该会看到以“Policy”开头的文件夹,然后是数字,然后是 PIA 的名称(例如 Policy.12.0.Microsoft.Office.Interop.Excel)。这是执行绑定(bind)重定向的策略文件。打开该文件夹中的 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>
在上面的代码片段中,标签“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>
那么这个重定向将被忽略。我对其进行评论而不是删除,只是因为该文件确实有很好的用途,但在为旧版本的 Office 进行开发时则不然。对您需要的每个 PIA 策略文件执行此操作,您的开发计算机将停止重定向。
希望这能回答您的问题!
关于.net - Office 2007 PIA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6984733/
我对 Office Scripts 和 Office Lab 感到困惑。 两者都可以在 Excel 中运行 javascript,但似乎无法在它们中共享代码。 对于 Office 脚本,一些代码如 f
如果我们加载一个引用 office.js 的网页在 Office 客户端之外,我们会收到警告:Office.js is loaded outside of Office client . 这些信息很有
我试图找到一种将 Outlook 插件发布到办公商店的方法。但我发现我们只能发布 Office 应用程序,而不能发布 Office 商店的加载项。因此我想知道 Office 应用程序和 Office
我想使用 Ooxml 以编程方式自定义“Heading1”和“Heading2”样式通过 office.js Visual Studio 代码中的库。我已经搜索过谷歌和许多文档,但仍然没有得到任何内容
我想使用 Microsoft.Office.Interop.Excel 从 XLS 文件中提取一些数据。我安装了 Visual Studio 2010 和 Office 开发人员工具。但是,我在 va
最近,Microsoft 推出了 Office 插件架构,该架构允许开发远程托管并在 Office 内的 IFrame 中运行的插件。我读了很多文章,试图了解这个架构是否是 VSTO 的替代品,或者它
我开发了一个将数据导入 Microsoft Excel 的应用程序。 我使用 VS2005 + .NET 2.0,并且我的计算机上安装了 Microsoft Office 2007 (Office 1
是否有推荐的方法(包、框架等)来设置 Office 加载项的自动化端到端测试。我对测试的所有搜索都导致侧加载应用程序和手动测试。 例如:https://dev.office.com/docs/add-
我们正在为 Excel 和 Word 开发 javascript Office 插件。我们的用户将使用 Office Desktop 和 Office Online。 当用户在加载项中创建新记录时,我
我在电子表格上有一个表格,我想删除所有现有数据。我使用下面的代码,除非表格已经是空的。 // Get the row count let rowCount = table.getRangeBetwee
所以我正在尝试开始开发 Office 365 加载项(以前的 Office 应用程序),我想知道 Office 在呈现您的应用程序时使用什么浏览器或浏览器引擎。我尝试使用 JavaScript 的 n
我正在寻找一些关于在 网上商店 上托管我们当前托管应用程序的更新版本的信息。 我的查询是,我们现有版本的应用程序说的 list 文件 版本。 1.0 托管在网上商店指向源位置(天蓝色 网站)说 mya
在我们的组织中,我们构建了一个 Office 加载项。现在我们想在我们的加载项中添加打印功能。谁能帮助我如何使用 Office javascript API 添加打印功能。 最佳答案 Office.J
我有兴趣了解有关 Microsoft Office Communicator 的更多信息IM 客户端,以及它如何确定您的存在(即您是在计算机旁还是不在)。任何人都可以向我指出解释这一点的教程或 API
问题: 我有两个电子表格,每个电子表格都有不同的用途,但包含一个特定的数据,这两个电子表格中的数据需要相同。这条数据(其中一列)在电子表格 A 中更新,但也需要在电子表格 B 中更新。 目标: 以某种
可在此处获得office.js的正式版本: https://appsforoffice.microsoft.com/lib/1/hosted/office.js 它在代码中包含以下几行: window
不久前我有了一个发现。只需按照以下步骤操作: 在 Office 2003 中创建一个 .doc/.xls/.ppt 文件。在其中保留一些测试数据并关闭该文件。现在重命名该文件以将其文件扩展名更改为随机
姓名:来自:file:///D:/Samples/TestUpdatedVersion/bin/Debug/TestUpdatedVersion.vsto 无法安装自定义,因为当前已安装另一个版本并且
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我对使用 Office 2007 在 2007 之前的二进制格式(.doc、.xls、.ppt)和新的 Office Open XML 格式(.docx、.xlsx、.pptx)之间进行转换很感兴趣
我是一名优秀的程序员,十分优秀!