首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外部C#程序不能调用vsto COMAddin对象方法,但它可以在调试器内调用。

外部C#程序不能调用vsto COMAddin对象方法,但它可以在调试器内调用。
EN

Stack Overflow用户
提问于 2016-02-05 03:40:43
回答 1查看 220关注 0票数 0

我有这些简单的代码

代码语言:javascript
复制
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,但似乎还没有准备好/初始化。但是,如果我从调试器断点检查它的内部状态,就会以某种方式强制它初始化。

有什么问题吗?

Addin扩展了StandardOleMarshalObject alrady。

EN

回答 1

Stack Overflow用户

发布于 2016-02-05 12:32:50

尝试使用后期绑定技术(.Net中的反射)。有关详细信息,请参阅Type.InvokeMember

这两个应用程序是否在相同的安全上下文中运行?或者您是否以管理权限(以管理员身份运行)运行其中的任何一个?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35215906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档