WPF アプリケーションを起動し、InitializeComponent
1 つのユーザー コントロールの関数呼び出しに移行すると、サイレントに終了し、出力ウィンドウに Managed (v4.0.30319)' has exit with code -1073740771
( 0xc000041d
) というメッセージが 1 つだけ残ります。「静かに」と言うとき、このInitializeComponent
呼び出しをブロックでラップしても例外がキャッチされないことを意味しますtry
(catch
これが通常、問題の場所を見つける方法です)
私が行ったことは次のとおりです。このアプリケーション プロジェクトでは、バージョン番号 10.0.4504.0 の参照 Microsoft.Office.Interop.Owc.dll を使用する必要があります。これは相互運用ライブラリであるため、VS2012 にこの参照を追加すると、プロパティが自動的にEmbedded Interop Types
true に設定されます。これは、個々の dll を出力フォルダーに保持せず、代わりにこのライブラリをメイン出力に埋め込むことを意味すると想定しています (少なくともこれは、Microsoft.Office.Interop.Outlook.dll などの他の参考文献で見られる方法です)。ただし、プロジェクトを開始すると、次のようなXamlParseException
ことわざがスローされます。
"ファイルまたはアセンブリ 'Microsoft.Office.Interop.Owc, Version=10.0.4504.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つを読み込めませんでした。指定されたファイルが見つかりません。":"Microsoft.Office .Interop.Owc、バージョン = 10.0.4504.0、カルチャ = ニュートラル、PublicKeyToken = 31bf3856ad364e35""
参照が埋め込まれていないようです(またはバージョンが正しくありません。ただし、参照バージョンが実際に10.0.4504.0であることを確認しました)
次に、この dll を出力フォルダーに直接コピーして、bin\Debug\
このライブラリが確実に見つかるようにしました。今回は例外はスローされませんが、最初に説明したように、アプリケーション全体が静かに終了します。-1073740771
コード( )をググってみました0xc000041d
が、それに関する記事はありません。Embedded Interop Types
をtrue/falseに設定しようとしましたが、問題は同じです。
アップデート:
ここにさらに説明を追加したいと思います。前述のとおり、問題のあるライブラリは OWC(Office Web Component)10 です。このリンクに従って、OWC を VB.NET デスクトップ アプリケーションと連携させました: HOW TO: Visual Studio .NET で Office Web コンポーネントのイベントを処理します。しかし、この公式記事はとても古いので、ラッパー dll をコンパイルするために多くの変更を加える必要がありました (主に名前空間の不一致のため)。次に、実際の相互運用ライブラリ Microsoft.Office.Interop.Owc への参照を追加するときに、既定の設定に従って埋め込み相互運用型を True にすると、実行時にエラーが発生します (XamlParseException
) アセンブリをロードできません (上記の説明を参照)。なんてこったい?「埋め込み」として作成すると、このライブラリが確実に見つかると思いました。次に、このdllを出力フォルダーにコピーすると、このサイレント終了の問題が発生します。ただし、今回は出力ウィンドウにMicrosoft.Office.Interop.Owc.dll
が実際にロードされていることが示されていることに注意してください。実際には、メッセージの前の最後のmanaged has exited
メッセージです。したがって、それはまだこのライブラリに関連している必要があります。
これはすべて OWC10 でのみ発生します。OWC11 (最新ですが、残念ながら Office2003 に付属しているため、残念ながらかなり古いバージョンです) にも同様の方法があります。HOW TO: Visual Studio .NET で Office 2003 Web コンポーネントのイベントを処理する しかし、実際には機能し、アプリケーションにコントロールが表示されます。OWC11の代わりにOWC10を試したかったのは別の理由によるものです