外部C#程序无法调用vsto COMAddin对象方法,但它可以在调试器内部调用
我有这些简单的代码外部C#程序无法调用vsto COMAddin对象方法,但它可以在调试器内部调用,c#,dynamic,com,vsto,office-interop,C#,Dynamic,Com,Vsto,Office Interop,我有这些简单的代码 static void Main(string[] args) { object addInName = "MyAddin"; Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Core.COMAddIn ad
static void Main(string[] args)
{
object addInName = "MyAddin";
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Core.COMAddIn addin = app.COMAddIns.Item(ref addInName);
app.Visible = false;
var myObject = addin.Object;
var vvv = myObject.someMethod();
}
当运行它时,它在第行someMethod抛出NullReferenceException时失败。但是myObject不是空的
如果在该行上放置断点,将鼠标光标移到myObject上,单击扩展的动态视图,然后单击一些界面视图。那就行了
COM对象虽然不是null,但似乎还没有准备好/初始化。但若我从调试器断点检查它的内部状态,我会以某种方式强制它初始化
有什么问题
加载项COM扩展了StandardOleMarshallObject。请尝试使用后期绑定技术(在.Net中反射)。有关更多信息,请参阅
这两个应用程序是否在相同的安全上下文中运行?或者您是否以管理员权限(以管理员身份运行)运行它们中的任何一个?您是否看到了这篇MSDN文章中的信息:这个答案看起来更像是一个注释。这并没有提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。-我建议使用后期绑定技术,这可能会有所帮助。在大多数情况下,这有助于避免此类问题。