2016-07-27 3 views
-1

2010,2013,2016のOutlookアドインを構築できました。OL2010 vstoプロジェクトを作成し、.csprojファイル(1 *)を使用して作成しました。問題は、2013/2016年に追加されたタイプが少なく、アクセスできないという点です。それぞれのOLバージョンがもちろん使用されている場合にのみアクセスします。c#outlook addin vsto access OL2010と連携しながらの相互運用性PIA

私が全部理解している限り: Interopアセンブリは、アドインと共に提供されます。そのため理論的にはILコードを挿入することや、欠落している型を提供する同じ名前空間を持つアセンブリを追加することが可能です。これらのInteropアセンブリはCOM Wrapperだけであり、インストールされたOutlookバージョンによって提供されるアンマネージコードに依存しているため、正しくインポートするとシームレスに読み込まれるはずです。

これはやや実現可能ですか? これを試してみると、クライアントにアドインをデプロイすると何がうまくいかないでしょうか?
より高いバージョンのInteropタイプを使用する必要があるかどうかを判断するにはどうすればよいですか?
より高いInteropタイプをロードするにはどうすればよいですか?
既存のタイプと競合することなくどのように使用できますか?
私はIntellisenseと静的タイピングが必要です。私はこれらの型をあらかじめ定義し、それらをGuid、CoClass、およびTypeLibTypeで飾る必要があります。それで十分でしょうか?


(* 1)(私たちはたぶんもっと簡単な方法があるProjectName.csprojファイルにDebugInfoExeNameとOfficeVersionを変更し、対応するOutlookのバージョンがインストールされている別の仮想マシンでそれぞれのインストーラを構築しました。? - >私に教えてください!...悲しいことに、何らかの理由でアドインエクスプレスを使用できません。

私は、メインのものよりも他のスレッドから例外を投げているので、完全なOL 2016 Interopアセンブリを使用しないことをお勧めします私たちはバックグラウンドで実行されるべき同期コードをいくつか持っています。

ありがとうございました!

+0

このリンクに記載されている手続きはhttps://www.add-in-express.com/creating-addins-blog/2010/03/16/interop-assemblies-late-binding/(SupportingアドインのいくつかのOfficeバージョン。Interopアセンブリと遅延バインディング。)とにかく、どんな提案も依然として高く評価されています。 – FreeG

+0

MicrosoftのCOM Interopチュートリアルhttps://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx(COM相互運用パート1:C#クライアントチュートリアル) – FreeG

答えて

0

"Interopsを手動で作成する:Visual Studioで、Office 2000スイートのアプリケーションへのCOM参照をプロジェクトに追加するだけで、必要なinteropが自動的に作成されます。 Officeのタイプライブラリのいくつかのバグが原因で、Studioがあなたにはうまくいかない相互運用機能を作成するため、クラスやイベントの数にアクセスできない場合があります。interopを逆アセンブルし、使用できないクラスやイベントをパブリックにして再コンパイルできます(ildasm.exeとilasm.exe)これはまさにAdd-in Expressのバージョンニュートラルなインターネットの作成方法です。 ソース:https://social.msdn.microsoft.com/Forums/en-US/a95cd4e3-e619-4846-be2a-ce4c235ff457/is-it-possible-to-use-the-microsoftofficeinteropoutlook-that-comes-from-office-2010-with-all?forum=outlookdev

EDIT

チェックアウトこのプロジェクト https://github.com/caioproiete/NetOffice-NuGet
それは構造および名前空間が一致してはいけないのにバージョン中立相互運用アセンブリが含まれています...しかし、まだ役に立つかもしれません。