FormRegionInitializing仅在处于调试模式(VSTO Outlook)时触发]]

问题描述 投票:0回答:1

我建立了一个VSTO Outlook加载项,当从对象资源管理器中选择一条邮件消息(IPM.Note消息类)时,它仅在阅读窗格中显示一个相邻的表单区域。在调试模式下,外接程序将按预期工作。但是,使用安装程序安装时,加载项会正确加载(并且代码在启动时会触发MessageBox.Show(),但不会显示“窗体区域”。我已将MessageBox.Show()事件放置在RepInfoFactory_FormRegionInitializing方法中但他们都没有开火。

我已经搜索了类似的情况,但是只发现禁用了整个加载项的情况。就我而言,它加载得很好。我曾尝试以管理员身份启动Outlook,但这似乎并不影响加载项。我还设置了环境变量以显示VSTO警报并记录它们,但未记录任何内容-我怀疑是因为加载项正常。

因为我将FormRegionMessageClass属性设置为Note,所以我仔细检查了资源管理器中的对象确实是IPM.Notes。

我正在运行Outlook 2016(即点即用)和VS 2019。

我希望在检查/尝试的事情上有其他建议。

谢谢!

public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            MessageBox.Show("Addin Startup");  //this message box displays in both debug and installed version
        }
    }

partial class RepInfo
    {
        public static Outlook.ExchangeUser contact;
        public static System.Data.DataTable dtRepHier;
        public static System.Data.DataTable dtSubHier;
        #region Form Region Factory 

        [Microsoft.Office.Tools.Outlook.FormRegionMessageClass(Microsoft.Office.Tools.Outlook.FormRegionMessageClassAttribute.Note)]
        [Microsoft.Office.Tools.Outlook.FormRegionName("WATCHTOWER.RepInfo")]
        partial class RepInfoFactory
        {
            //The code in this method only works in debug mode.  The form only displays (under the stated conditions) when in debug mode.
            private void RepInfoFactory_FormRegionInitializing(object sender, Microsoft.Office.Tools.Outlook.FormRegionInitializingEventArgs e)
            {
                //MessageBox.Show(e.FormRegionMode.ToString() + " " + e.FormRegionSize.ToString());
                Outlook.MailItem myItem = (Outlook.MailItem)e.OutlookItem;
                //MessageBox.Show(myItem.MessageClass);
                if (myItem != null)
                    //MessageBox.Show(myItem.Sender.Name);
                    if (myItem.Sender != null)
                    {
                        {
                            contact = myItem.Sender.GetExchangeUser();
                        //MessageBox.Show(contact.Department);
                            if (contact != null && contact.Department != null && (contact.Department.Substring(7, 10) == "US-AVD-VAS"
                                || contact.Department.Substring(7, 9) == "US-AVD-US"))
                            { return; }
                        }

                        e.Cancel = true;
                    }
            }
        }

        #endregion
// code continues
    

我建立了一个VSTO Outlook加载项,当从对象资源管理器中选择一条邮件消息(IPM.Note消息类)时,它仅在阅读窗格中显示一个相邻的表单区域。加载项...

c# vsto outlook-addin visual-studio-debugging outlook-form
1个回答
0
投票

首先,我建议向代码中添加任何日志记录机制,以查看代码在最终用户计算机上的工作方式,并记录发生异常的异常。

© www.soinside.com 2019 - 2024. All rights reserved.