2014-12-02 48 views
0

我已经创建了一个Outlook加载项,可以将您的Outlook日历同步到您的Google日历。该插件在测试和调试过程中效果很好,但一旦发布(使用一键式清单),它将引发错误(图片下方)。加载项不会从错误中禁用。Google.Apis代码在发布Outlook加载项后不会执行

这里是用于'登录'到谷歌的代码。

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

回答

0

Tronal,

难道你有机会检查Outlook中的COM加载项列表?您的加载项在那里列为活动吗?

Microsoft Office应用程序可以禁用出现意外行为的加载项。如果应用程序不加载加载项,应用程序可能会硬禁用或软禁用加载项。

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

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

当您重新启用软禁用加载项时,应用程序会立即尝试加载加载项。如果最初导致应用程序软禁用加载项的问题尚未解决,应用程序将再次软禁用该加载项。

您可以在MSDN的How to: Re-enable an Add-in That Has Been Disabled文章中阅读更多关于该文章的内容。

+0

我应该澄清。加载项没有被禁用。 – Tronald 2014-12-02 15:02:42

+0

您是否尝试调试代码或创建日志文件? – 2014-12-02 15:17:24

+0

终于通过更改我的错误处理方法,在发布后抛出错误。我张贴了一张照片。你怎么看?再次。调试期间不会引发此错误。 – Tronald 2014-12-02 16:09:28

0

经过几天的研究,我终于明白了这个问题,并在我的帖子的标题中意识到了我可怕的拼写。

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

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

相关问题