尝试在.NET Core 2.0项目中使用Microsoft Dynamics 365 SDK Core Assemblies时,运行时只会using Microsoft.Xrm.Sdk
发生以下错误:
TypeLoadException:无法加载类型 ' System.ServiceModel.Description.MetadataConversionError'从 assembly' System.ServiceModel,Version = 4.0.0.0,Culture = neutral, 公钥= b77a5c561934e089'
看起来核心程序集(Microsoft.Xrm.Sdk.Client)可能与~net4x之外的任何内容都不兼容。
是否有任何明显的方法可以解决此错误或在目标System.ServiceModel
的上下文中加载Microsoft.Xrm.Sdk
所需的WCF netcoreapp2.0
类/接口?是否可以使用
Microsoft.Windows.Compatibility弥合差距?看起来像Microsoft.Windows.Compatibility包documentation表示 Windows Communication Foundation(WCF)类/接口是"可用"。如何使用兼容包加载System.ServiceModel.Description
?
感谢您提供任何帮助!
答案 0 :(得分:3)
根据github上的多次讨论,我尝试了所有可能的方法,并且可以说SDK,ServiceModel等与.net核心不兼容,而且永远不会兼容。但是,我能够做到这一点:
重要编辑:
我发现,由于各种原因,SDK 2016在Linux的.net core中无法可靠运行,并于2011年停止(nuget包为Microsoft.Xrm.Sdk.2011
)。除非出现以下情况,否则它可以正常工作:您context.AddObject
并传递了一个没有ID的实体 。 SDK依赖于p /调用本机Windows库来创建连续的UUID并在Linux上崩溃。您可以通过在调用.AddObject()
之前设置ID来解决此问题。
答案 1 :(得分:0)
我遇到了同样的问题,当我在Visual Studio中选择模板控制台应用程序(.Net Framework)而不是控制台应用程序(.Net Core)时,问题得到解决。