2012-06-29 150 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來消除問題。

相關問題