我有一个使用
Microsoft.Xrm.Client
程序集的 .NET Core 项目。它在 Linux 上运行良好,除了一种特定情况,即 Xrm.Client 想要创建顺序 GUID。它依赖于 DLLImport 并从本机 Windows 的 UuidCreateSequential
调用 Rpcrt4.dll
。当然,在 Linux 上它会崩溃。
相关(反编译)代码是:
namespace Microsoft.Xrm.Sdk.Client
{
[SecurityCritical]
internal static class NativeMethods
{
[SecurityCritical]
[DllImport("Rpcrt4", CallingConvention = CallingConvention.StdCall, SetLastError = true)]
public static extern long UuidCreateSequential(ref Guid ptrGuid);
}
}
我不控制这段代码,我认为我的选择是:
NativeMethods.UuidCreateSequential
(我自己在任何地方提供 GUID)。缺点是这对于用户代码来说不太方便。NativeMethods.UuidCreateSequential
,例如。使用和谐。StdCall
指定了 DLLImport。或者也许只是因为反编译器。哪种解决方案更好并且有效?人们会如何处理它?
时间已经过去了,还有选择。问题是 Microsoft.Xrm.Client 仅兼容 .NET Framework
Microsoft.PowerPlatform.Dataverse.Client 必须用于 .NET 6+。您可以在 Transition apps to Dataverse ServiceClient
阅读有关使用此 nuget 的更多信息但是,此软件包与本地版本不兼容,因为它在提供的链接中给出了注释:
保持您的应用程序项目和代码不变。继续使用 Microsoft.CrmSdk.CoreAssemblies NuGet 包和 CrmServiceClientclass。