详情可参考微软官方文档:
https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-tools/write-business-logic
1.创建一个C#类库项目
在File->New->Project或者
Solution->Add->New Project中新建项目:
选择Class Library(.NET Framework) 点击OK
右键新建的类库->Properties,找到Target framework,将版本改为.NET Framework 4.5:
2.添加引用
右键References,添加新引用。在C:\AOSService\PackagesLocalDirectory\下找到
Microsoft.Dynamics.AX.Framework.Linq.Data.dll
Microsoft.Dynamics.AX.Framework.Linq.Data.Interface.dll
Microsoft.Dynamics.AX.Framework.Linq.Data.Msil.dll
Microsoft.Dynamics.AX.Xpp.Support.dll
Microsoft.Dynamics.AX.Data.Core.dll
这些文件进行引用。
并在所定义的class中using:
下列函数的逻辑为能否找到一个大于传入分数的学生:
namespace ClassLibrary1
{
using Dynamics.AX.Application;
using Microsoft.Dynamics.AX.Framework.Linq.Data;
using Microsoft.Dynamics.Ax.Xpp;
public class Class1
{
public static bool CheckAge(int score)
{
StudentTable student;
QueryProvider provider = new AXQueryProvider(null);
var students = new QueryCollection<StudentTable>(provider);
var query = from s in students
where s.Score > score
select s;
student = query.FirstOrDefault();
return !String.IsNullOrEmpty(student.Score.ToString());
}
}
}
3.在所需的Dynamics365项目中进行使用
在刚才的C#类库中继续添加引用,但是这次添加所想引用的model,例如想在FleetManagement这个model中使用。则找到
Dynamics.Ax.FleetManagement.dll
添加引用
在目前开发的project中,右键引用,找到刚才新建的类库:
点击OK,注意,C#类库要先经过编译.
4.在x++中调用C#代码
在需要的代码位置调用using,该类库下加上类都可以像x++一样被正常调用。例如在窗体中调用:
using ClassLibrary1;
[Form]
public class AForm FormRun
{
[Control("Button")]
class YourButton
{
public void clicked()
{
super();
boolean testbool = ClassLibrary1.Class1::CheckAge(0);
if(testbool)
Info("测试成功");
else
Info("测试失败");
}
}
}
testbool传出值,调用C#成功