发布Outlook加载项后,Google.Apis代码将无法执行

时间:2014-12-02 13:52:41

标签: c# visual-studio-2012 oauth google-calendar-api outlook-addin

我创建了一个Outlook加载项,可以将Outlook日历同步到Google日历。加载项在测试和调试期间运行良好,但一旦发布(使用One Click Manifest),它就会抛出错误(图片如下)。未从错误中禁用加载项。

以下是用于“登录”Google的代码。

    public void Create_Service()
    {
            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                new ClientSecrets
                {
                    ClientId = "*******",
                    ClientSecret = "***********",
                },
                new[] { CalendarService.Scope.Calendar }, "user", CancellationToken.None).Result;

            service = new CalendarService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "******",
            });
    }

这是错误。

在调试和测试过程中会导致这种情况发生的原因,但是在发布之后(在同一台计算机上,请注意)?

enter image description here

2 个答案:

答案 0 :(得分:0)

Tronal,

您是否有机会在Outlook中检查COM加载项列表?您的加载项是否在此处列为活动状态?

  

Microsoft Office应用程序可以禁用意外行为的加载项。如果应用程序未加载您的加载项,则应用程序可能会对加载项进行硬禁用或软禁用。

     

当加载项导致应用程序意外关闭时,可能会发生硬禁用。如果在加载项中的启动事件处理程序正在执行时停止调试器,也可能在开发计算机上发生。

     

当加载项产生不会导致应用程序意外关闭的错误时,可能会发生软禁用。例如,如果在启动事件处理程序执行时抛出未处理的异常,应用程序可能会软禁用加载项。

     

重新启用软禁用加载项时,应用程序会立即尝试加载加载项。如果最初导致应用程序软件禁用加载项的问题尚未修复,则应用程序将再次软禁用加载项。

您可以在MSDN的How to: Re-enable an Add-in That Has Been Disabled文章中详细了解该内容。

答案 1 :(得分:0)

经过几天的研究,我终于找到了问题,并在帖子的标题中实现了我可怕的拼写。

问题在于ClickOnce安装程序没有发布所有必需的dll。我想这是微软尚未解决的已知问题。我为解决这个问题所做的是浏览项目中的所有参考文件,并将它们与我发布的文件夹中的参考文件进行比较。

然后我将所有丢失的文件直接导入到我的项目中作为新项目(这引起了警告,因为我的项目中的.dll文件与参考文件匹配,但谁在乎它是否解决了问题)。然后,一旦我再次发布,发布者导出丢失的文件,一切都开始工作。 HOORAY!