古いプロジェクト(.Net 2)をVisual Studio 2013にインポートする必要がありました。MicrosoftProject Interop Assembliesを使用しています。
Visual Studioは、プロジェクトに参照を追加する必要があると言いました。今、私は行って読書をしましたが、どうやらMicrosoftはOffice 2010のPIAのみをリリースしたようです? (Office 2013があります)
今私が知りたいのはです。
.Net 2
(最新)およびWindows 8には3(デフォルトではなく)4.5が付属しており、ほとんどの新しいコンピューターにはOffice 2012または2013が搭載されます。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
」という単語を削除するだけです。
Office 365とのVS 2015コミュニティ-何らかの理由でCOMオブジェクトからの追加が機能しません。解決策は、GACに移動して相互運用機能アセンブリを見つけ、それらを一時ディレクトリにコピーしてから、DLLのようにプロジェクトに追加することです。
また、今まで知らなかった場合、Windows 8には.NET Frameworkの古いバージョンがありますが、デフォルトではインストールされません。 [プログラムの機能] ---> [機能をWindowsに追加] ---->に移動します。最初のチェックボックスは.NET 3.0または2.0になります。 WSUSサーバーを使用している場合は、Windows Updateサーバーからファイルを取得するようWindowsに指示する必要があります。それが役に立てば幸い!
公式には、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用のアドインを作成することをお勧めします。
Visual Studio 2013 Expressには、もはやオフィスサポートがないことがわかりました。そのため、機能させるには少なくともプロバージョンが必要です。