1

Visual Studio 2003 と .NET 2.0 を使用して構築されたカスタム アプリケーションを継承しました。Microsoft Office PIA バージョン 11 (Office 2003 用) を使用し、当初は Windows XP で動作していました。このアプリケーションは、.PST ファイルの読み取りに Outlook だけでなく、Excel、Word、および Powerpoint ファイルの読み取りにも依存しています。

現在、このアプリケーションを Office 2010 を搭載した 64 ビットの Windows 7 マシンで動作させようとしています。ほとんどの場合、アプリケーションは動作します。.PST ファイルを正しく読み取り、電子メールと添付ファイルを (正しいファイルと共に) アップロードします。メタデータ) を SharePoint に送信します。アプリケーションを閉じて Microsoft Office 2010 製品 (Word、Excel、Powerpoint、Outlook) を開こうとすると、これらのプログラムがクラッシュする傾向があります。エラー メッセージには、「Microsoft _ _ has stopped working」と表示されます。

イベント ビューアーを見ると、通常、ログは次のようになります。

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

多くのブラウジングを行った後、Office 2003 の PIA バージョン 11 を参照しているアプリケーションと関係があると推測しています。このコンピューターにあるバージョンは、Office 2010 の PIA バージョン 14 です。また、100% 確信しています。 Office 2010 アプリケーションをクラッシュさせているのはこのアプリケーションです。なぜなら、このレガシー アプリケーションを実行するたびに発生するからです。コンピューターを再起動するとこれらのクラッシュは修正されますが、このアプリケーションを実行するたびに再起動する必要はありません。

ソースコードを実際に更新する以外に、この問題を解決するためにできることはありますか?

編集: Visual Studio Express 2010 (C#) にアクセスできるようになり、Reflector を使用したソース コード ファイルがあります。それで、コードの変更を開始できると思います。ただし、まだ多くのエラーが発生しています。以下の私の回答を参照してください...

4

3 に答える 3

3

レガシ アプリがまだ 2 つの共有コンポーネントを保持しているため、後続のプログラムがクラッシュするようです。

レガシ アプリを変更できなければ、できることはあまりありません。上記のコメントが示唆するようにデバッグすることは良い方法です。しかし、実際にはアプリを変更できる必要があります。

ソースコードを入手できますか?それとも、それはベンダーの「納品」の一部ではありませんか?

于 2012-06-30T12:46:01.520 に答える
2

VB.Net 2012、Interop.Excel for MSO 14.0、およびWindows 7、64ビットを使用しても同様の問題が発生しました。4.5ではなく.Net4.0と64ビットCPUをターゲットにすることで、この問題を解決することができました。

于 2012-11-09T19:48:55.360 に答える
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;

しかし、プロジェクトをビルドしようとすると、これらすべてのエラーが表示されます

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'

Visual Studio が「システム」名前空間を読み取らない理由がわかりません。Word 名前空間が System 名前空間をオーバーライドしているように見えますか? 「using Microsoft.Office.Interop.Word」名前空間を削除すると、すべてのビルド エラーが消えます (実際に Word を使用するオブジェクトまたはメソッドを除く)。

于 2012-07-12T16:28:36.987 に答える