Lorsque vous essayez d'utiliser Microsoft Dynamics 365 SDK Core Assemblies dans un projet .NET Core 2.0, l'erreur suivante se produit au moment de l'exécution simplement par using Microsoft.Xrm.Sdk
:
TypeLoadException: impossible de charger le type 'System.ServiceModel.Description.MetadataConversionError' de l'assembly 'System.ServiceModel, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'.
Il semble que les assemblys de base (Microsoft.Xrm.Sdk.Client) ne soient tout simplement pas compatibles avec autre chose que ~ net4x.
Existe-t-il un moyen évident de contourner cette erreur ou de charger le WCF System.ServiceModel
classe/interfaces nécessaires à Microsoft.Xrm.Sdk
dans le contexte de la cible netcoreapp2.0
? Est-il possible d'utiliser Microsoft.Windows.Compatibility pour combler l'écart? Il ressemble au pack Microsoft.Windows.Compatibility documentation indique Les classes/interfaces Windows Communication Foundation (WCF) sont "disponibles" . Comment puis-je utiliser le pack de compatibilité pour charger peut-être System.ServiceModel.Description
?
Merci pour toute aide que vous pouvez fournir!
J'ai essayé toutes les choses possibles et je peux dire que SDK, ServiceModel, etc. ne sont pas compatibles avec le noyau .net et ne le seront jamais, selon plusieurs discussions sur github. Cependant, j'ai pu le faire:
MODIFICATION IMPORTANTE: J'ai découvert que le SDK 2016 ne fonctionne pas de manière fiable dans le noyau .net sur linux pour diverses raisons et j'ai arrêté en 2011 (le package nuget est Microsoft.Xrm.Sdk.2011
). Cela fonctionne bien sauf dans un cas: quand vous faites context.AddObject
Et passez une entité sans ID. Le SDK repose sur p/invoquant la bibliothèque Windows native pour créer un UUID séquentiel et se bloque sous Linux. Vous pouvez résoudre ce problème en définissant l'ID avant d'appeler .AddObject()
.