前言

本文使用的是 Office365 授权方式在 控制台应用(.NET Framework) 连接 D365。

其实Microsoft.Xrm.Tooling.Connector 提供了多种授权方式,但就本人项目经验来说,经常使用的应该是以下两种:Office365 和 ClientSecret。

授权方式清单如下:

NameValueDescription
InvalidConnection-1Invalid connection
AD0Active Directory Auth
Live1Live Auth
IFD2SPLA Auth
Claims3CLAIMS based Auth
*Office3654Office365 base login process
OAuth5OAuth based Auth
Certificate6Certificate based Auth
*ClientSecret7Client Id + Secret Auth type.
ExternalTokenManagement99Enabled Host to manage Auth token for CRM connections.

详细步骤

1. 创建控制台应用程序进行测试

Step 1. 新建项目

  1. 打开 Visual Studio 并创建一个新的 控制台应用(.NET Framework) 项目
  2. 输入一个有意义的项目名称 –> 选择框架后 –> 单击 “创建”

新建项目-01

新建项目-01

新建项目-02

新建项目-02

Step 2. 为项目添加依赖包

  1. Microsoft.CrmSdk.CoreAssemblies
  2. System.Configuration.ConfigurationManage

右键单击你的项目 –> 管理 NuGet 程序包

为项目添加依赖包-01

为项目添加依赖包-01

在新窗口中,选择 “浏览” 选项卡并搜索 Microsoft.CrmSdk.CoreAssemblies

在结果中,选择 Microsoft.CrmSdk.CoreAssemblies 并在右侧单击 安装 按钮,在弹出的窗口中点击 “接受”。
为项目添加依赖包-02

为项目添加依赖包-02

现在 Microsoft.CrmSdk.CoreAssemblies 依赖包已经安装好了,接下来请用同样的操作,安装 System.Configuration.ConfigurationManage 依赖包。

Step 3. 为 App.config 文件添加连接信息

在 App.config 添加连接信息(connectionStrings),将以下信息替换为你的信息:

  • urlofyourdynamics365instance,你的环境访问地址 https://xxx.crm.dynamics.cn/
  • yourusername, 你的登录账号
  • yourpassword, 你的登录密码

为 App.config 文件添加连接信息

为 App.config 文件添加连接信息

 <connectionStrings>
  
  <!-- Dev 环境(Office365 认证方式) -->
  <add name="Dev-Office365" 
     connectionString="AuthType=Office365; 
     Url=urlofyourdynamics365instance; 
     Username=yourusername; 
     Password=yourpassword;" />
 
 </connectionStrings>

Step 4. 添加测试代码

添加测试代码

添加测试代码

(1)打开 Program.cs 文件

(2)将顶部的 using 替换为以下内容:

using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Tooling.Connector;
using System;
using System.Configuration;

(2)在 Main 方法中,添加以下代码

string connectionStr = ConfigurationManager.ConnectionStrings["Dev-Office365"].ConnectionString;
CrmServiceClient client = new CrmServiceClient(connectionStr);
if (client.IsReady)
{
    IOrganizationService orgServiceorgService = client;
    // 使用 WhoAmI 进行测试
    WhoAmIResponse resTest = (WhoAmIResponse)orgServiceorgService.Execute(new WhoAmIRequest());
    Console.Write($"UserId: {resTest.UserId}");
    Console.Read();
}
else
{
    throw new Exception(client.LastCrmError);
}

Step 5. 测试

(1)右键单击你的项目 –> 设为启动项目
设当前项目为启动项目

设当前项目为启动项目

(2)使用 F5 或 点击顶部的 启动 按钮来执行程序
启动测试项目

启动测试项目

如果一切正常,将打印用户的Id,接下来你可以尝试使用 IOrganizationService 进行 CRUD 操作了。
打印用户的Id

打印用户的Id