-1

2010、2013、および 2016 の Outlook アドインを構築することができました。OL2010 vsto プロジェクトを作成し、.csproj ファイル (1*) をいじりました。問題は、2013/2016 年に追加されたタイプがほとんどなく、それらにアクセスできないことです。もちろん、それぞれのOLバージョンが使用されている場合にのみ、それらにアクセスしたい.

全体を理解している限り、Interop アセンブリはアドインと共に提供されます。したがって、理論的には、いくつかの IL コードを挿入したり、不足している型を提供する同じ名前空間を持つ追加のアセンブリを提供したりすることが可能です。これらの相互運用アセンブリは COM ラッパーのみであり、その機能は、インストールされている Outlook バージョンによって提供されるアンマネージ コードに依存しているため、正しくインポートされるとシームレスにロードされるはずです。

それは何とか実現可能ですか?これを試したり、アドインをクライアントに展開したりすると、何が問題になる可能性がありますか?
より高いバージョンの Interop Type を使用する必要があるかどうかを判断するにはどうすればよいですか?
より高い相互運用タイプをロードするにはどうすればよいですか?
既存のタイプと競合することなく使用するにはどうすればよいですか?
インテリセンスと静的型付けが欲しいので。これらの型を事前に定義し、Guid、CoClass、および TypeLibType で装飾する必要があります。それで十分でしょうか?


(1*)(ProjectName.csproj ファイルの DebugInfoExeName と OfficeVersion を変更し、対応する Outlook バージョンがインストールされている別の仮想マシンでそれぞれのインストーラーをビルドしました。もっと簡単な方法があるのではないでしょうか? -> 教えてください!..残念ながら、いくつかの理由により addin-express を使用できません。

メインスレッド以外のスレッドから使​​用すると例外がスローされるため、完全な OL 2016 Interop Assemblies を使用しないことをお勧めします。また、バックグラウンドで実行する必要がある同期コードもあります。

回答ありがとうございます。

4

1 に答える 1

0

「手動で相互運用を作成する: Visual Studio では、Office 2000 スイートのアプリケーションへの COM 参照をプロジェクトに追加するだけです。これにより、必要な相互運用が自動的に作成されます。しかし、問題が発生するのはここからです。多数のクラスとOffice タイプ ライブラリの多数の同一のバグにより、Studio が相互運用機能を作成するため、イベントにアクセスできません。 ). これはまさに Add-in Express のバージョンに依存しない相互運用性が作成された方法です." ソース: https://social.msdn.microsoft.com/Forums/en-US/a95cd4e3-e619-4846-be2a-ce4c235ff457/is-it-possible-to-use-the-microsoftofficeinteropoutlook-that-c​​omes-from- office-2010-with-all?forum=outlookdev

編集

このプロジェクトをチェックして ください https://github.com/netoffice/NetOffice-NuGet
構造と名前空間は一致しませんが、バージョンに中立な相互運用アセンブリが含まれています...それでも役立つ可能性があります。

于 2016-08-01T20:25:04.370 に答える