摘要:
今天一早上google,发现主页上google的logo变成了吃豆子的游戏画面,google提供了一个Insert Coin的按钮,点击这个按钮即可开始吃豆子游戏。这也是为了纪念该游戏诞生30周年。小的时候,在任天堂红白机上,这是一款非常受欢迎的游戏。虽然现在看来很简单,画面也很枯燥,但它是一个时代的代表,见证了电视/电脑游戏的发展历程。 阅读全文
摘要:
去年年底我写了一系列文章,介绍领域驱动设计在Entity Framework中的应用。这些文章是我在CSAI的博客中发布的,也有不少网友对这个话题比较关注。时间关系,整个系列文章并没有能够写完,剩下还有几个话题没能发布出来。为了能够与更多的网友分享我的实践经验,今天特地将这些文章的链接列出来,供大家参考讨论。我没有将这些文章重新逐一发布在园区的一个重要原因是,很多网友已经在原文上做了评论,我也针对... 阅读全文
摘要:
在Microsoft Dynamics AX的MorphX中,AOT下有个Maps节点(注意,不是Map Class),这个节点下罗列了所有的Table Mapping。很多开发人员对于Table Mapping的概念不是很清楚,在使用过程中也会遇到一些问题。本文简单地收集并罗列一下。一、Table Mapping也是Table在AOT上,任意选择一个Table Map,单击鼠标右键选择Open,... 阅读全文
摘要:
今天在AspDotNetStorefront做定制化开发,编译的时候莫名其妙地报告Could not load file or assembly 'App_Licenses, Version=0.0.0.0, Culture=neutral, ... (Exception from HRESULT: 0x80070057 (E_INVALIDARG))的错误,检查文件系统,发现文件还在,然后查看文... 阅读全文
摘要:
这个题目想了半天,不太好用一句话描述。这样,举个简单的应用场景:在用Windows Forms制作向导程序的时候,通常会有“上一步”、“下一步”这样的按钮。假设现在需要做一个通用的“向导制作框架”,那么我们就需要在这个“向导制作框架”中,对“上一步”、“下一步&rdq... 阅读全文
摘要:
关注X++的博客园博友有福啦,现在发布X++代码也同样可以实现语法高亮。目前仅支持SyntaxHighlighter插件。请看如下:使用方法如下:安装正常的操作过程,使用SyntaxHighlighter插件插入高亮代码块:在弹出的对话框中,“编程语言”随便选哪个都可以。我选择的是默认的“C#”,在贴入代码以后,打开HTML编辑视图,直接将HTML中... 阅读全文
摘要:
很多情况下,需要用到文件的Base64编码字符串。比如,通常情况下,第三方应用系统都会使用Base64编码来实现图片文件的存储,在做系统集成的时候,就难免会要在代码中对文件进行Base64编码。其实,在X++中获取文件的Base64非常简单,就是使用BinData类。代码如下: 阅读全文
摘要:
在标准的Dynamics AX系统中,Grid的每个列头(Column Header)是可以点击的,用户可以通过点击Column Header以实现针对该字段的排序。但并非所有的情形下,我们都希望Grid提供这样的功能。比如,用于记录事件触发历史的数据表上,我们就希望默认以事件发生的时间作为排序字段,而不允许用户通过单击Column Header重新排序。为了去掉这个标准的功能,我们需要在Grid... 阅读全文
摘要:
Microsoft向公众发布了Visual Studio 2010 with .NET 4.0, Release Candidate版本。详细信息请参见:http://msdn.microsoft.com/en-gb/vstudio/dd582936.aspx。 阅读全文
摘要:
所谓动态调用,最主要的是允许用户能够在系统中设置Web Service的服务地址,比如用户可以在AX中动态设置销售网站的Web Service地址,以便与第三方系统通信。本文介绍的方法其本质是使用COM创建SOAP request,然后以HTTP POST的方式,往指定的服务地址发送请求,进而实现Web Service的动态调用。请参考下面的例子:以上例子展示了通过Web Service向AspD... 阅读全文
摘要:
最近在研究Dynamics AX与AspDotNetStorefront的集成问题。AspDotNetStorefront提供一种领域事件模型,允许开发人员对事件进行定制或捕获,进而执行一些客户化操作。它所支持的EventHandler是一系列的ASP.NET页面,也就是CalloutURL中需要指定一个ASP.NET页面作为Event Handler。在第一次开发的时候,我一直得到“... 阅读全文
摘要:
X++代码中有个分号特别有意思,看起来像是把变量的声明段和代码部分分开了,便于编译器解析。我们会发现,有时候不加这个分号,代码编译也不会有错,而有时候又不得不加。有人说,如果代码部分开始的第一个词语是一个关键字,则可以不加。这种说法没错,但没解释原因。总之,目的只有一个,就是为了编译器能够顺利解析哪些部分是声明,哪些部分是代码。请看下面的代码:上面的代码是没法编译通过的,原因就是声明和代码体部分少... 阅读全文
摘要:
在.NET中如需在非UI线程中改变UI控件属性时,CLR会抛出异常,提示无法在非UI线程中更新界面上的控件(Cross-thread operation not valid)。一般情况下有两种解决办法。第一种就是设置Control的静态属性CheckForIllegalCrossThreadCalls为False,如下:另一种办法,就是使用委托,根据控件的InvokeRequired属性判断当前控... 阅读全文
摘要:
开发中有时候需要根据给定的数据表记录以及该表的字段名,获取字段的值。其实方法很简单,只需要在common数据记录上直接使用圆括号进行引用即可。请参见下面的代码:使用这种方式可以很轻松地跟踪数据表记录的变更历史。 阅读全文
摘要:
在对AOT\Tables下的数据表做BP检查的时候,如果出现“Code to handle the InventDimId field must be added to the Multisite Activation Wizard.” 这样的BP错误,则到InventSiteActivateDimFieldsCheck类中,找到updateableFields或者nonU... 阅读全文
摘要:
发生了什么?这是件非常有趣的事情。我们现在可以在X++中编译并执行C#脚本。请看下面的X++代码:执行完上面这段job程序,Dynamics AX就会编译#SourceScript宏中定义好的C#脚本,然后执行脚本程序,并弹出了一个infolog,上面显示了计算结果:30。如下:这是如何实现的?如果你直接将上面的job导入到AOT里去执行,那么在编译阶段就会出错,原因是你的Dynamics AX根... 阅读全文
摘要:
在Dynamics AX 6中,有引入一种称为Attribute的新特性。请看:【注:以上代码来自http://blogs.msdn.com/mfp/archive/2009/04/02/ax6-sneak-preview-x-unit-test-improvements.aspx】其实到目前为止,我手头没有拿到Dynamics AX 6的版本,这种新特性也是从上面的博客中看到。但我想,对于只专注... 阅读全文
摘要:
这里有篇文章介绍了Dynamics AX 6在MorphX上的又一个新特性:axmodel。axmodel其实是一个layer下的另一种应用程序组织形式,在6.0以前,客户自定义的开发都是在一个特定的layer下进行的,这样会产生一些问题,比如我从两个ISV购买了两套产品,如果是直接使用AOD文件,我没办法将两个产品同时应用在bus层,而只能逐个导入XPO。那么今后如果某个ISV的产品有了升级,我... 阅读全文
摘要:
今天在Dynamics AX相关的MSDN博客上看到了Dynamics AX 6.0的新的X++编辑器。这下做X++开发的朋友有希望了。Dynamics AX team采用了Visual Studio的编辑器实现框架,提供了字体设置、修改跟踪、行号、增强的语法着色等令人心动的功能,请看:增强的编辑器: 阅读全文
摘要:
在CSDN上,很多朋友会问,C#中如何读取XML文件?如何读取最快?我的回答是,使用XmlTextReader读取的速度是最快的。但也不乏一些效率稍低但也非常有效的读取方式,比如序列化方式。这里详细介绍一下步骤吧。使用Visual Studio的CreateSchema工具,或者XMLSpy等第三方的工具,打开需要读取的XML文件,并创建XSD(推荐使用Visual Studio自带的工具) 比如... 阅读全文