Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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#-can';t调试office word加载项_C#_Debugging_Ms Word_Add In - Fatal编程技术网

C#-can';t调试office word加载项

C#-can';t调试office word加载项,c#,debugging,ms-word,add-in,C#,Debugging,Ms Word,Add In,以下是我所做的: 从VS2010>新建C#项目(从其他项目类型>扩展性>共享加载项)>Connect类中的一些基本配置 之后,我在“项目属性”>“调试”>“启动外部程序”中设置winword的路径(C:\program Files(x86)\Microsoft Office\Office12\winword.EXE) 创建共享外接程序时,安装文件位于同一解决方案中的单独项目中。所以我为外接程序做了一个构建,并安装了它 当我启动word(单独启动或从VisualStudio的StartWithDe

以下是我所做的:

从VS2010>新建C#项目(从其他项目类型>扩展性>共享加载项)>Connect类中的一些基本配置

之后,我在“项目属性”>“调试”>“启动外部程序”中设置winword的路径(C:\program Files(x86)\Microsoft Office\Office12\winword.EXE)

创建共享外接程序时,安装文件位于同一解决方案中的单独项目中。所以我为外接程序做了一个构建,并安装了它

当我启动word(单独启动或从VisualStudio的StartWithDebug启动)时,外接程序运行良好,但似乎没有遇到任何断点

如果我修改了某些内容并只进行了构建,当我再次启动word时,更改就在那里,因此word加载的必须是正确的dll


当然,问题是,如何让断点工作?

首先,如果您运行已安装的加载项实例,则断点根本不起作用。您必须从VS内部启动加载项才能进行任何调试(好的,技术上不完全正确,我认为+您可以“附加”到正在运行的实例,但我从未以这种方式进行过调试)

您需要确保处于调试生成配置中。发布模式不一定设置为允许调试

您应该能够在启动整个解决方案之前重新生成它。重新生成解决方案将在注册表中注册内容,以便word+能够找到您正确的加载项

最后,确保在所有测试运行等过程中,Word没有禁用您的加载项。请检查选项/Addins/Com加载项,并确保您的加载项在列表中并已启用


如果您的加载项由于某种原因失败,word有禁用它的习惯,从那时起,除非您重新启用,否则不会加载它。

加载项有一个功能区选项卡,当我卸载加载项时,word会删除功能区。如果我重新安装它,它会返回。如果我在卸载时点击run in VS,word会启动,但没有功能区。如果我在安装时点击run,功能区在word中,但调试无法工作。在任何情况下,加载项都不会被禁用(我已检查)这听起来确实像是加载项注册到了已安装的副本,而不是VS在开始word作为调试会话之前构建的副本。如果是这种情况,则word加载了错误的dll副本,并且VS没有挂接到该dll以进行调试。通常,先进行清理,然后进行完全重建,最后运行g VS中的应用程序将得到正确注册。除非您在本地计算机上没有适当的权限。附加到正在运行的进程可以正常工作,尽管这显然比点击“F5”更麻烦。没错。我已经了解了“附加到正在运行的进程”是如何工作的调试是有效的。虽然有点麻烦,但它确实允许您调试许多其他情况下很困难的情况。