我为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);
}
答案 0 :(得分:0)
好吧,事实证明,事情对我而言不起作用的明显原因是由于Dynamics NAV / BC UI可扩展性组件 Microsoft.Dynamics.Framework.UI.Extensibility 不同于目标系统的版本,或者至少这是我认为的原因。 我已经尝试了许多不同的方法来调整项目,以使其正常运行,似乎更改此程序集就可以解决问题。
我不能百分百确定,因为我还没有亲自将程序集部署到NAV,所以我不知道是否重启了适当数量的服务,缓存清除以及其他奇怪的事情已采取必要的措施。
因此,在出现其他原因导致我的问题的证据之前,我将假定是导致程序集版本不匹配的原因。