web-dev-qa-db-ja.com

Office 2013でMicrosoft.Office.Interopアセンブリを引き続き使用できますか?

古いプロジェクト(.Net 2)をVisual Studio 2013にインポートする必要がありました。MicrosoftProject Interop Assembliesを使用しています。

Visual Studioは、プロジェクトに参照を追加する必要があると言いました。今、私は行って読書をしましたが、どうやらMicrosoftはOffice 2010のPIAのみをリリースしたようです? (Office 2013があります)

今私が知りたいのはです。

  1. Office 2013で動作し、下位互換性を確保できますか?
  2. そして、もしそうなら、これは未来に行くのに良いルートですか?互換性がありますか?私はあなたが必要だと思うので.Net 2(最新)およびWindows 8には3(デフォルトではなく)4.5が付属しており、ほとんどの新しいコンピューターにはOffice 2012または2013が搭載されます。
45
Zapnologica

PIAは履歴アーティファクトであり、古い.NETバージョン(v4より前)でのみ必要です。これらは、「No PIA」機能とも呼ばれる「Embed Interop Types」機能に完全かつエレガントに置き換えられました。 Visual Studio 2010以降でサポートされているため、参照アセンブリを選択すると、[プロパティ]ウィンドウに戻ります。デフォルトはTrueです。基盤となるテクノロジーを説明する優れたビデオは、 こちらから入手可能 です。

MicrosoftがOffice 2013のPIAを公開しない理由は、代わりに相互運用タイプを埋め込むことを期待しているからです。

この機能は非常に望ましいもので、顧客がPIAを自分のマシンにインストールする必要がなく、インストーラーにPIAを含める必要がありません。どちらも気にしないときに問題を解決することは、まったく一般的な災難です。さらに、OfficeのPIAは非常に大きいため、相互運用型を埋め込むことの大きな利点は、アセンブリに実際に使用する型のみが含まれることです。多くのメガバイトが数キロバイトに減少しました。

ワークフローは少し異なります。 [参照の追加]ダイアログの[.NET Framework]タブで使用可能なMicrosoft.Office.Interopアセンブリへの参照を追加する代わりに、[COM]タブを使用するようになりました。そして、たとえば「Microsoft Excel 15.0 Object Library」を選択して、Excelを使用するプログラムの相互運用タイプを生成します。以前にPIAを使用していた古いプロジェクトをロードする場合、それらの参照アセンブリを削除して、COMタブから追加し直してください。

機能が失われることに注意してください。開発マシンに実際にインストールしていない古いバージョンのOfficeを意図的に対象とすることはより困難です。それが要件である場合、そのバージョンのPIAが必要な場合は、[プロパティ]ウィンドウで[相互運用型の埋め込み]を強制的にTrueにします。実際にこれを行うことは疑わしく、Microsoftは新しいバージョンのOfficeを古いバージョンと完全に互換性を保つのに苦労しています。彼らは今15年間それを維持してきましたが、Steamを使い果たしました。最悪のシナリオは、マシンにインストールしたバージョンよりも新しいバージョンをターゲットにしているため、veryでプログラムをクラッシュさせ、次のような例外を診断しにくいAccessViolationException

コードが機能するようにするには、コードを少し修正する必要があることに注意してください。合成「XxxxClass」クラスは埋め込まれず、「Xxxx」インターフェースのみが埋め込まれます。 newステートメントから「Class」という単語を削除するだけです。

121
Hans Passant

Office 365とのVS 2015コミュニティ-何らかの理由でCOMオブジェクトからの追加が機能しません。解決策は、GACに移動して相互運用機能アセンブリを見つけ、それらを一時ディレクトリにコピーしてから、DLLのようにプロジェクトに追加することです。

4
Rob

また、今まで知らなかった場合、Windows 8には.NET Frameworkの古いバージョンがありますが、デフォルトではインストールされません。 [プログラムの機能] ---> [機能をWindowsに追加] ---->に移動します。最初のチェックボックスは.NET 3.0または2.0になります。 WSUSサーバーを使用している場合は、Windows Updateサーバーからファイルを取得するようWindowsに指示する必要があります。それが役に立てば幸い!

1
amoor005

公式には、Office用PIAの下位互換性はありません。実際に動作します。

下位互換性の理由から、私はOfficeのPIAを使用していますXPは数年前からOffice XP、2003、2007、2010(2013ではまだテストされていません)およびWindows XPで正常に動作します。 Vista、7および8。

Windowsのさまざまなバージョンとの互換性のために、.NET framework 3.5を使用しています。

将来のために...それはあなたがPIAで何をしているかに依存します。可能であれば、Open XMLファイルを直接処理するか、Word/Excel用のアドインを作成することをお勧めします。

0
pmartin

Visual Studio 2013 Expressには、もはやオフィスサポートがないことがわかりました。そのため、機能させるには少なくともプロバージョンが必要です。

0
mr_w_snipes