使用.NET Core与Dynamics CRM SDK

14
有没有一种方式可以通过Dynamics SDK从.NET Core应用程序连接到Dynamics CRM 365?还是应该使用Web Api?
我已经阅读了可能是可能的,但是当我从我的.NET Core类库引用SDK并尝试连接时,我收到以下错误:
System.IO.FileNotFoundException: 'Could not load file or assembly 'System.Web.Services..

看起来这个 DLL 在 .NET Core 中不受支持:如何在 Asp.net Core 中使用 SOAP Web 服务?

我的代码是这样的:

 new Microsoft.Xrm.Tooling.Connector.CrmServiceClient(connectionString);

我可以成功地从 .NET Framework 项目中使其正常工作。

3个回答

22

你应该尝试最新的Dataverse SDK。它使用.NET Core并支持Dynamics CRM 365 CE。https://www.nuget.org/packages/Microsoft.PowerPlatform.Dataverse.Client

只需记得替换:

new Microsoft.Xrm.Tooling.Connector.CrmServiceClient(connectionString);

有了这个:

new Microsoft.PowerPlatform.Dataverse.Client(connectionString);

这个截图来自于Visual Studio: NuGet包管理器


5
请注意,此项已被弃用,已被 Microsoft.PowerPlatform.Dataverse.Client 取代。 - Mixxiphoid
谢谢@Mixxiphoid。我已经更新了帖子和图片以反映更改。 - Daniel Holth

11

区分使用.NET Core 运行时和使用.NET Core 框架的应用程序是必要的。正如您已经发现的那样,Dynamics 365 SDK目前无法与.NET Core运行时一起使用,但是当.NET Core项目将.NET Framework运行时作为目标,在项目文件中使用.NET Framework的目标框架(TFM)设置时,它可以与.NET Core框架一起使用。例如,对于.NET Core控制台应用程序,.csproj文件应如下所示(请注意TargetFramework):

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net472</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.CrmSdk.CoreAssemblies" Version="9.0.2.5" />
  </ItemGroup>

</Project>

这种应用程序将不具备跨平台性,只能在Windows上执行,但仍允许使用其他.NET标准类库和框架(如实现.NET Standard的ASP.NET Core),同时在.NET Framework运行时上执行。最终,如果Dynamics 365 SDK被更新以在.NET Core运行时上工作,则可以更改项目文件的目标框架监视器值为.NET Core并变成跨平台。


谢谢您的建议。我还能在VS中引用我的其他.NET Core项目吗?我遇到了一个错误:项目X与net461不兼容。项目X支持:netcoreapp2.1。 - Tamas Molnar
@manipurea,我在“允许使用其他.NET Core类库”这个说法上说错了。你的.NET Framework项目可以引用实现.NET标准类库的类库。如果你能将你的.NET Core项目切换为目标.NET标准,那么它应该可以工作。 - Alan Mervitz
2
谢谢。最终我使用了CRM REST OData Web Api。我按照这些文章http://www.wrapcode.com/server-authentication-dynamics-crm/,https://learn.microsoft.com/en-us/dynamics365/customer-engagement/developer/use-multi-tenant-server-server-authentication和这个代码示例https://github.com/jlattimer/CrmWebApiCSharp/blob/master/CrmWebApiCSharpNoAdal/Program.cs进行设置。 - Tamas Molnar
1
@AlanMervitz或其他人,这个答案在2023年的状态如何?请提供更新,考虑到从.NET Core 3.0及以上版本,不再支持针对完整的.NET Framework 4.6.x+进行目标设置。 - joedotnot

0

1
我认为“或以上”是不正确的 - .net4.62 - .net48。 .net5+不支持System.Web。 - Eric Patrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接