Ras*_*ast 5 c# linux pinvoke dllimport .net-core
我有一个使用程序集的 .NET Core 项目Microsoft.Xrm.Client。它在 Linux 上运行良好,除了一种特定情况,即 Xrm.Client 想要创建顺序 GUID。它依赖于 DLLImport 和UuidCreateSequential来自本机 Windows 的调用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);
}
}
Run Code Online (Sandbox Code Playgroud)
我不控制这段代码,我认为我的选择是:
NativeMethods.UuidCreateSequential(我自己在任何地方提供 GUID)。缺点是这对于用户代码来说不太方便。NativeMethods.UuidCreateSequential为 .NET 实现,例如 使用和谐。StdCall. 或者可能只是因为反编译器。哪种解决方案更好并且有效?人们会如何处理它呢?
时间过去了,还有选择。问题是 Microsoft.Xrm.Client 仅兼容 .NET Framework
Microsoft.PowerPlatform.Dataverse.Client必须用于 .NET 6+。人们可以在将应用程序转换为 Dataverse ServiceClient中阅读有关使用此 nuget 的更多信息
但是,此软件包与本地版本不兼容,因为它在提供的链接中给出了注释:
保留您的应用程序项目和代码不变。继续使用 Microsoft.CrmSdk.CoreAssemblies NuGet 包和 CrmServiceClient 类。
| 归档时间: |
|
| 查看次数: |
849 次 |
| 最近记录: |