2012-06-29 110 views
1

我继承了使用Visual Studio 2003和.NET 2.0构建的自定义应用程序。它使用Microsoft Office PIA版本11(用于Office 2003),它最初在Windows XP上运行。该应用程序依赖于读取Excel,Word和Powerpoint文件,以及Outlook读取.PST文件。使用Microsoft Office Interop v.11与Windows 7,Microsoft Office 2010的应用程序

现在我试图让此应用程序可以在具有Office 2010的64位Windows 7计算机上工作。大多数情况下,该应用程序的工作原理 - 正确读取.PST文件并上传电子邮件和附件(连同正确的元数据)到Sharepoint。只是在关闭应用程序并尝试打开Microsoft Office 2010产品(Word,Excel,Powerpoint,Outlook)后,这些程序往往会崩溃。错误信息会显示“Microsoft _ _已停止工作。”

望着事件查看器,日志通常是这样的:

Faulting application name: OUTLOOK.EXE, version: 14.0.6109.5005, time stamp: 0x4e79b881 
Faulting module name: ntdll.dll, version: 6.1.7601.17514, time stamp: 0x4ce7ba58 
Exception code: 0xc0000005 
Fault offset: 0x0002e3fb 
Faulting process id: 0x1b20 
Faulting application start time: 0x01cd5631d6ed41d9 
Faulting application path: C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE 
Faulting module path: C:\WINDOWS\SysWOW64\ntdll.dll 
Report Id: 2f11010e-c226-11e1-8b8d-9cb70de93ccf 

做大量的浏览之后,我猜它与应用程序中引用PIA 11版的Office 2003做的,而我在此计算机上安装的版本是Office 2010的PIA版本14.此外,我100%确定这是导致Office 2010应用程序崩溃的应用程序,因为每次运行旧应用程序时都会发生这种情况。重新启动计算机修复这些崩溃,但我宁愿不必每次运行此应用程序时重新启动!

实际上更新源代码的缺点,有什么我可以做的,以解决这个问题?

编辑:我现在有权访问Visual Studio Express 2010(C#),并使用Reflector有源代码文件。所以我想我可以开始进行代码更改。尽管如此,我仍然收到了很多错误,请参阅下面的回复...

+0

这是一个办公室加载项(单独加载项的Outlook,单词等)?或者只是一个使用PIA的独立应用程序?您可以调试加载项并找出它失败的位置。你需要使用Visual Studio,并且可能是一个反编译和调试你没有源代码的第三方应用程序的工具(Reflector Pro可以做到这一点)。只需要试用。作为一种解决方法,在启动Word之前,您是否可以保留一个reg文件来禁用加载项(假设它是代码的附加部分,而不仅仅是一个使用interop的独立应用程序,导致崩溃)?有趣的是,重新启动'修复'崩溃... – JohnZaj

回答

3

听起来像传统应用程序仍然保留两个共享组件,从而导致后续程序崩溃。

如果您无法更改旧版应用程序,那么您可以做的不多。像上面的评论一样调试它是一个好方法。但真的,你需要能够改变应用程序。

你能得到源代码吗?或者这不是供应商“交付”的一部分?

+0

好吧,我能够安装Visual Studio Express,所以希望这将在一个捏... 供应商已不再业务,我不认为源代码是交付的一部分。但是,我能够下载反编译可执行文件的工具,所以我认为我现在已经准备好了Visual Studio项目进行调试。它主要由Visual C#文件(.cs)组成 这不是一个办公室加载项,只是一个使用PIA的独立应用程序。 – user1492136

0

我试图删除对旧的Microsoft Office PIA版本11(对于Office 2003)的引用,并向当前PIA版本14(对于Office 2010)添加新引用。我也将目标.NET更改为.NET 4 ...构建软件包时,我收到了许多奇怪的代码错误。

主要文件将有

using System; 
using Microsoft.Office.Interop.Excel; 
using Microsoft.Office.Interop.Outlook; 
using Microsoft.Office.Interop.PowerPoint; 
using Microsoft.Office.Interop.Word; 

但是当我试图建立的项目,为什么Visual Studio中不读,我会得到所有这些错误是说

Microsoft.Office.Interop.Word.System does not contain a definition for 'IO' 

The type name 'Drawing' does not exist in the type 'Microsoft.Office.Interop.Word.System' 

不知道“系统”名称空间。它看起来像Word命名空间重写了System命名空间?当我删除“using Microsoft.Office.Interop.Word”命名空间时,所有的构建错误消失(除了实际使用Word的对象或方法,显然)

2

我有一个类似的问题,使用VB.Net 2012, Interop.Excel适用于MSO 14.0和Windows 7,64位。我能够通过目标.Net 4.0而不是4.5和64位cpu来消除问题。

相关问题