0

我为 Dynamics NAV/BC 创建了一个简单的控件加载项,但遇到了一些问题。我在这个插件中所做的完全一样(据我所知),就像我在以前创建的相同类型的插件中所做的一样,它们工作得很好。

问题是,当插件程序集被添加到页面时(我个人对这部分了解不多,只是边看边做),假定插件的事件和方法出现(应该生成存根代码),但事实并非如此......没有任何反应。

当他们尝试使用类似的程序集(相同的框架、相同类型的界面、相同版本的 'Microsoft.Dynamics.Framework.UI.Extensibility' 程序集 - 简而言之非常相似的程序集)时,方法和事件的代码生成为预期的。

所以我的问题是,很明显,当它们在 C# 代码中几乎相同时,为什么它适用于一个程序集而不是另一个程序集?

这是程序集不起作用的代码。

using Microsoft.Dynamics.Framework.UI.Extensibility;

namespace Dynamics.NAV.CR
{
    [ControlAddInExport("Dynamics.NAV.CR")]
    public interface ICRAddIn
    {
        [ApplicationVisible]
        event ApplicationEventHandler AddInReady;

        [ApplicationVisible]
        event DataEventHandler ButtonClicked;

        [ApplicationVisible]
        event DataEventHandler ElementHtmlRetrieved;

        [ApplicationVisible]
        event DataEventHandler ElementTextRetrieved;



        [ApplicationVisible]
        void setElementHtml(string control_id, string html);        

        [ApplicationVisible]
        void setElementText(string control_id, string text);

        [ApplicationVisible]
        void setElementCss(string control_id, string css);

        [ApplicationVisible]
        void addElementCssCls(string control_id, string cls);

        [ApplicationVisible]
        void removeElementCssCls(string control_id, string cls);

        [ApplicationVisible]
        void setElementProp(string control_id, string prop_name, string prop_value);
    }
}

我错过了什么?

部署该组件的人说他已经确保它“畅通无阻”,所以这不应该是问题。

我忘了添加自定义事件处理程序的代码 - 在这里。

namespace Dynamics.NAV.CR
{
    public delegate void DataEventHandler(object data);
}
4

1 回答 1

0

好的,事实证明,事情对我来说不起作用的明显原因是 Dynamics NAV/BC UI 可扩展性程序集Microsoft.Dynamics.Framework.UI.Extensibility与目标系统的版本不同,或者在至少这就是我认为的原因。我尝试了许多不同的方法来调整项目以使其正常工作,并且似乎更改此程序集起到了作用。

不过,我不能 100% 确定,因为我没有亲自将我的程序集部署到 NAV,所以我不知道是否有适当数量的服务重新启动、缓存清除以及其他奇怪的必需操作有发生在。

因此,在证明其他东西是导致我的问题的原因之前,我会假设这是一个程序集版本不匹配的原因。

于 2019-05-27T07:42:20.827 回答