2016-01-21 88 views
6

我已經爲選定的附件創建了一個Outlook插件來獲取附件的詳細信息。並在Outlook 2010中正常工作。 但是,當我爲Outlook 2016構建它時,它將變爲空。Outlook 2016插件附件選擇問題

下面是ThisAddIn.cs代碼: -

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
     { 
      System.Reflection.Assembly assemblyInfo = System.Reflection.Assembly.GetExecutingAssembly(); 
      Uri uriCodeBase = new Uri(assemblyInfo.CodeBase); 
      string Location = Path.GetDirectoryName(uriCodeBase.LocalPath.ToString()); 
      var path = Location.Split(new string[] { "bin" }, StringSplitOptions.RemoveEmptyEntries); 
      var rootDir = path[0].ToString(); 
      var forPermissionsRootDirectory = Path.GetDirectoryName(rootDir); 
      SetPermissions(forPermissionsRootDirectory); 

      app = this.Application; 
      app.AttachmentContextMenuDisplay += new Outlook.ApplicationEvents_11_AttachmentContextMenuDisplayEventHandler(app_AttachmentContextMenuDisplay);//attach Attachment context Menu Event// 

     } 

void app_AttachmentContextMenuDisplay(Office.CommandBar CommandBar, Outlook.AttachmentSelection selection) 
     { 
      selectedAttachment = selection; 
      RibbonUI.InvalidateControlMso("ContextMenuAttachments");//will get XML file data// 

     } 

,這是AttachmentContextMenu.cs代碼: -

public void OnOpenMyMotionCalendarButtonClick(Office.IRibbonControl control) 
     { 
      Outlook.AttachmentSelection selection = ThisAddIn.selectedAttachment; 
      if ((selection.Count > 0)) 
       { 
        //My further working 
       } 
     } 

在選材上,總有空的Outlook 2016 。 請建議做什麼?

此致 沙龍

+0

你有解決這個問題嗎? – Pooran

+0

你找出原因了嗎?這解決了嗎? – Stavm

回答

0

相信觀開發增加了額外的邏輯,用於釋放作爲參數傳遞對象(附件)。所以,你需要在事件處理程序中收集所有必需的信息,因爲只要方法結​​束,對象就可以被銷燬。事件處理人員被解僱後,沒有人能保證物體是活的。你在AttachmentContextMenuDisplay事件處理程序中獲得有效的對象嗎?

所有的Outlook加載項都應該在不再需要時系統地釋放它們對Outlook對象的引用。完成使用後,請使用System.Runtime.InteropServices.Marshal.ReleaseComObject釋放Outlook對象。然後在Visual Basic中將變量設置爲Nothing(C#中的空值)以釋放對該對象的引用。在Systematically Releasing Objects文章中閱讀更多。

+0

其實我正面臨的problrm是當我右鍵單擊電子郵件中的附件,事件處理程序我已添加「app.AttachmentContextMenuDisplay + =新的Outlook.ApplicationEvents_11_AttachmentContextMenuDisplayEventHandler(app_AttachmentContextMenuDisplay);」不適用於展望2016,但其工作在展望2010 – Ariel

+0

您的答案可能是正確的,但它對幫助回答OP沒有多大幫助。 – Stavm