如何使用C#VSTO在Microsoft word中自动加载卸载自定义加载项?

如何使用C#VSTO在Microsoft word中自动加载卸载自定义加载项?,c#,vsto,office-addins,C#,Vsto,Office Addins,如何通过单击按钮以编程方式在Word中加载和卸载VSTO加载项 我用下面的代码在事件单击bu时卸载了它 foreach (Office.COMAddIn addin in Globals.ThisAddIn.Application.COMAddIns) { if (addin.ProgId == "DocDrafter")

如何通过单击按钮以编程方式在Word中加载和卸载VSTO加载项

我用下面的代码在事件单击bu时卸载了它

foreach (Office.COMAddIn addin in Globals.ThisAddIn.Application.COMAddIns)
                            {
                                if (addin.ProgId == "DocDrafter")
                                {
                                    addin.Connect = false;
                                    return;
                                }
                            }
但是在文档更改和文档启动时,我必须再次加载加载项


但一旦卸载了加载项,我就无法再次加载它。

您有两种可能性—这取决于您到底想做什么。首先,您应该(已经)阅读Word对象模型帮助中有关
AddIns
集合和
Addin
对象的信息。(我们正在讨论VSTO项目的Globals.ThisAddIn.Application.Addin/s。)

基本上有两种方法。一种是使用
Addin
对象的
Installed
属性从Word UI加载(
=true
)/卸载(
=false
)外接程序,将其保留在外接程序列表(Word的文件/选项/外接程序选项卡中的列表)中,以便用户(或您的代码)可以根据需要再次加载它。听起来这就是你需要的

另一种方法是从该列表中删除/添加外接程序。使用
Addin.Delete
方法删除外接程序;使用
Addins.Add
将外接程序添加到列表中

如果您从VSTO项目中断开外接程序的连接,就像您的代码那样,我认为在VSTO范围内没有任何方法可以让它连接,再次


文档中的帮助主题:从这里开始:

Cindy Meister,你能告诉我C代码中的任何一种方法吗。我怎么能做到呢。直到你发表你的评论,我才意识到你没有仔细考虑这一部分。。。从逻辑上讲,如果卸载外接程序,则无法使用外接程序重新加载自身!请告诉我们更多有关卸载外接程序的原因。如果只是针对特定文档或文档类型,您不应该有文档级自定义,而不是应用程序级加载项吗?或者它应该是一个外接程序,但UI的某些部分有时不可见?或者您需要两个外接程序:一个用于处理文档,另一个“不可见”处理您提到的事件?实际上,我有两个版本的文档。。。对于版本1,我想使用addin。。如果用户打开版本2文档,我希望加载项应该被禁用,或者不应该对用户可见,或者卸载它。。但我用户再次打开版本1,该文档应该存在。事实上,我对vsto和word外接程序不熟悉,因此无法找到正确的解决方案。您有外接程序吗?或者您是否有文档级自定义?文档级自定义是特定于文档(或模板以及根据模板创建的所有文档)的。外接程序用于整个Word应用程序。在我看来,您需要阅读MSDN上的VSTO文档中有关文档级自定义的内容。我有一个外接程序,我认为我不需要文档级自定义。如果要将自定义用户界面限制为一个文档或文档类型(从模板创建),则需要文档级自定义。从您告诉我们的情况来看,情况就是这样(文件1和文件2)。