2016-01-21 10 views
6

Ekin ayrıntılarını almak için seçilen ek için bir Outlook eklentisi oluşturdum. ve Outlook 2010'da gayet iyi çalışıyor. Ama bunu 2016 için oluşturduğumda, null olur. Aşağıda Outlook 2016 eklentisi AttachmentSelection Sorun

ThisAddIn.cs içinde kod şudur: -

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

     } 

ve bu AttachmentContextMenu.cs içinde kod şudur: - seçiminde

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

, her zaman görünümün 2016 için boş olduğu Lütfen ne yapmanız gerektiğini önerin:

Saygılarımızla, Ariel

+0

Bunun için bir düzeltme yaptınız mı? – Pooran

+0

sebebini buldunuz mu? Bu çözüldü? – Stavm

cevap

0

I Outlook geliştiriciler parametre nesnesi (ek) olarak geçen serbest bırakılması için ilave bir mantık ilave inanıyoruz. Bu nedenle, gerekli tüm bilgileri olay işleyicisinde toplamanız gerekir, çünkü yöntem biter bitmez nesneyi yok edebilir. Olay işleyicileri kovulduktan sonra nesnelerin canlı olduğunu kimse garanti edemez. AttachmentContextMenuDisplay olay işleyicisinde geçerli bir nesne var mı?

Tüm Outlook eklentileri, artık gerekli olmadığında Outlook nesnelerine yapılan başvuruları sistematik olarak serbest bırakmalıdır. Kullanmayı bitirdiğinizde bir Outlook nesnesini bırakmak için System.Runtime.InteropServices.Marshal.ReleaseComObject kullanın. Sonra nesneyi başvuruyu serbest bırakmak için Visual Basic'te (C# içinde null) hiçbir şey için bir değişken ayarlayın. Bu konuda Systematically Releasing Objects makalesinde daha fazla bilgi edinin.

+0

Aslında karşılaştığım problrm, e-postada eke sağ tıkladığımda, olay işleyicisi i ekledim "app.AttachmentContextMenuDisplay + = yeni Outlook.ApplicationEvents_11_AttachmentContextMenuDisplayEventHandler (app_AttachmentContextMenuDisplay);" outlook 2016 için çalışmıyor ama 2010 outlook 2010 – Ariel

+0

'da çalışmanız doğru olabilir, ancak OP'ye cevap vermede çok az şey var. – Stavm