Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以编程方式加载/卸载Word加载项?_C#_.net_Ms Word_Vsto_Add In - Fatal编程技术网

C# 如何以编程方式加载/卸载Word加载项?

C# 如何以编程方式加载/卸载Word加载项?,c#,.net,ms-word,vsto,add-in,C#,.net,Ms Word,Vsto,Add In,我想知道如何在Word中以编程方式加载和卸载VSTO插件。我将Word 2007和VS2010与C#一起使用 我认为使用Microsoft.Office.Interop.Word.COMAddins和.Addins属性可能会有一些运气,但是.Addins属性提供了一个空列表,COMAddins是不透明COM对象的集合 A建议使功能区菜单不可见,但实际上我想完全卸载外接程序。我有类似的要求,并通过一些小技巧实现了它 我有一个名为AddinLauncher(没有功能区)的加载项,它将查找用户类型并启

我想知道如何在Word中以编程方式加载和卸载VSTO插件。我将Word 2007和VS2010与C#一起使用

我认为使用Microsoft.Office.Interop.Word.COMAddins和.Addins属性可能会有一些运气,但是.Addins属性提供了一个空列表,COMAddins是不透明COM对象的集合


A建议使功能区菜单不可见,但实际上我想完全卸载外接程序。

我有类似的要求,并通过一些小技巧实现了它

我有一个名为AddinLauncher(没有功能区)的加载项,它将查找用户类型并启动或关闭另一个加载项

此代码是在AddinLauncher Addin启动事件期间调用的

foreach (COMAddIn addin in Globals.ThisAddin.Application.COMAddins)
{
  if (**specify your own condition**)
    {
        addin.Connect = true;
    }                       
}
部署中需要进行以下更改

AddinLaucher加载项的LoadBehavior为3,所有其他加载项为0。
关于LoadBehavior的更多信息

如果你能找到一种用C#代码实现的方法,我会非常惊讶——要做到这一点,需要将每个插件隔离到单独的AppDomain中,而我认为Office插件不存在这种情况(你可以通过列举所有AppDomain来检查自己)。您好,我发现你甚至可以执行“重新加载”对于外接程序:`public void ReloadVstoAddIn(){var addIn=Application.COMAddIns.Item(“”;addIn.Connect=false;//卸载外接程序addIn.Connect=true;//再次触发AddInBase.Startup事件}`。当我测试我安装的解决方案时,我的外接程序保持未连接状态,因此您似乎无法重新加载自己的外接程序。对不起,Jörg