2016-01-21 6 views
6

Ich habe ein Outlook-Add-in für ausgewählten Anhang erstellt, um Details des Anhangs zu erhalten. und es funktioniert gut in Outlook 2010. Aber wenn ich es für Outlook 2016 erstellen, dann wird es null.Outlook 2016 Plugin AttachmentSelection Problem

Sie den Code unten in ThisAddIn.cs ist: -

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// 

     } 

und dies ist der Code in AttachmentContextMenu.cs: -

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

Bei der Auswahl gibt es für Outlook 2016 immer null Bitte schlagen Sie vor, was zu tun ist?

Mit freundlichen Grüßen, Ariel

+0

Haben Sie eine Lösung dafür gefunden? – Pooran

+0

Haben Sie die Ursache herausgefunden? war das gelöst? – Stavm

Antwort

0

Ich glaube, Outlook-Entwickler die übergebene zur Freigabe als Parameter Objekt (Anlage) eine zusätzliche Logik hinzugefügt. Sie müssen also alle erforderlichen Informationen im Ereignishandler erfassen, da das Objekt nach dem Beenden der Methode zerstört werden kann. Niemand kann garantieren, dass Objekte nach dem Auslösen der Event-Handler noch aktiv sind. Erhalten Sie im Ereignishandler AttachmentContextMenuDisplay ein gültiges Objekt?

Alle Outlook-Add-Ins sollten ihre Verweise auf Outlook-Objekte systematisch freigeben, wenn sie nicht mehr benötigt werden. Verwenden Sie System.Runtime.InteropServices.Marshal.ReleaseComObject, um ein Outlook-Objekt freizugeben, wenn Sie es nicht mehr verwenden. Setzen Sie dann in Visual Basic eine Variable auf Nothing (null in C#), um den Verweis auf das Objekt freizugeben. Lesen Sie mehr dazu im Artikel Systematically Releasing Objects.

+0

Eigentlich ist das Problem, dass ich konfrontiert ist, wenn ich rechts auf Anlage in E-Mail, der Event-Handler Ich habe hinzugefügt "app.AttachmentContextMenuDisplay + = new Outlook.ApplicationEvents_11_AttachmentContextMenuDisplayEventHandler (app_AttachmentContextMenuDisplay);" nicht für Outlook 2016 arbeiten, aber seine Arbeit in Outlook 2010 – Ariel

+0

Ihre Antwort könnte richtig sein, aber es hilft wenig, um die OP zu beantworten. – Stavm