我們已經成功構建了2010,2013和2016的outlook插件。我們創建了一個OL2010 vsto項目,並使用.csproj文件(1 *)撥弄。問題是2013/2016年增加了幾種類型,我們無法訪問它們。我們只想訪問它們,如果當然使用各自的OL版本。c#outlook插件vsto訪問OL2016使用OL2010時的互操作性PIA
據我瞭解整個事情: 互操作程序集隨附在插件中。所以它在理論上可能注入一些IL代碼或提供具有相同名稱空間的附加程序集以提供缺少的類型。由於這些Interop程序集只有COM Wrapper,並且該函數依賴於由安裝的Outlook版本提供的非託管代碼,所以在正確導入時應該可以無縫加載。
這是不是可行? 如果我嘗試這個/將插件部署到客戶端,會出現什麼問題?
我如何繼續確定是否需要使用更高版本的Interop類型?
如何加載更高的Interop類型?
如何在不衝突現有類型的情況下使用它?
正如我想要的Intellisense和靜態類型。我必須預先定義這些類型,並用Guid,CoClass和TypeLibType對它們進行裝飾。這足夠嗎? 。
(1 *)(我們改變了DebugInfoExeName和OfficeVersion在ProjectName.csproj文件,並創建相應的安裝程序與在相應的Outlook版本安裝不同的虛擬機可能有一個更簡單的方法? - >讓我知道!...可悲的是,我們不能使用插件 - 快遞,因爲一些原因。
我最好不要使用完整的OL 2016互操作程序集,因爲它是從其他線程並且我們有一些同步代碼必須在後臺運行。
謝謝你的回答!
一個程序來實現那個鏈接中描述https://www.add-in-express.com/creating-addins-blog/2010/03/16/interop-assemblies-late-binding/(支持幾個Office版本在一個加載項中,互操作程序集和後期綁定)。無論如何,任何建議仍然受到高度讚賞。 – FreeG
Microsoft Interop教程https://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx(COM Interop第1部分:C#客戶機教程) – FreeG