VS2017中创建使用 XRM 工具常用登录控件的WPF应用程序,适用CRM9.X版本
微软dynamics官网之前有个CRM SDK Templates的模板,使用这个模板可以创建带有XRM工具常用登陆控件的WPF应用程序,但是在该模板已经很久没有更新了。那么如何在VS2017中创建支持CRM9.X版本的登录控件呢?请往下看。
前提条件
下载上图中的CRMSDKTemplates.vsix文件,点击安装,默认它会提示你VS2017可能会不兼容,不管它,安装即可。
安装完后打开VS2017出现下面的选项即成功了。但是不要新建这样的一个项目,因为会使用.net 4.5.2,CRM的SDK版本还是7。不是我们想要的结果。我尝试过了,连接CRM8.X的OP版本是没有问题的,但是CRM9.X的online版本和OP版本就会报错。
创建WPF项目和修改版本
- 创建一个普通的WPF应用解决方案,.net版本选择4.6.2。
- 选中project右键,添加新建项,选择添加一个Login Form。
- 因为版本的原因,会提示错误。
- 然后准备修改版本,右键Nuget管理包。选中WpfControls,点更新即可,因为其他包都依赖于它。
- 点接受
- 完了之后会发现packages.config文件里的版本号已经修改了。
- 这时回到新建的Login Form,窗体已经能正常显示了。
添加按钮调用登录控件进行调试
- 在主窗体上添加一个按钮
- 给按钮添加click事件
private void Button_Click(object sender, RoutedEventArgs e)
{
// Establish the Login control.
CRMLoginForm1 ctrl = new CRMLoginForm1();
// Wire event to login response.
ctrl.ConnectionToCrmCompleted += ctrl_ConnectionToCrmCompleted;
// Show the login control.
ctrl.ShowDialog();
// Handle the returned CRM connection object.
// On successful connection, display the CRM version and connected org name
if (ctrl.CrmConnectionMgr != null && ctrl.CrmConnectionMgr.CrmSvc != null && ctrl.CrmConnectionMgr.CrmSvc.IsReady)
{
MessageBox.Show("Connected to CRM! Version: " + ctrl.CrmConnectionMgr.CrmSvc.ConnectedOrgVersion.ToString() +
" Org: " + ctrl.CrmConnectionMgr.CrmSvc.ConnectedOrgUniqueName, "Connection Status");
// Perform your actions here
}
else
{
MessageBox.Show("Cannot connect; try again!", "Connection Status");
}
}
private void ctrl_ConnectionToCrmCompleted(object sender, EventArgs e)
{
if (sender is CRMLoginForm1)
{
this.Dispatcher.Invoke(() =>
{
((CRMLoginForm1)sender).Close();
});
}
}
- 按F5调试登录控件
- 成功连接最新CRM9.1的Online版本
总结
- 通过以上方法,利用CRM SDK Templates模板可以创建XRM工具登录控件,支持CRM9.X版本。
- 这种场景可以使用在:自己开发的基于WPF应用的CRM 工具,关联查看和修改Dynamics365的数据以及其他操作。