【问题标题】:Could not load file or assembly 'Microsoft.Xrm.Client无法加载文件或程序集“Microsoft.Xrm.Client”
【发布时间】:2013-08-14 05:32:57
【问题描述】:

我在CRM.创建了一个插件,注册成功。在我的插件中,我创建了一个具有许多功能的 Web 服务。 成功调用插件步骤后出现错误-

System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.Xrm.Client,版本=5.0.9689.2166,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件。 为了解决这个问题,我从 crmsvcutil.exe 创建了 New XRM.cs 文件,但遇到了同样的问题。对此进行了更多搜索,但尚未找到解决方案。

注意:我使用的是 Microsoft 托管版本的 CRM

下面是我正在使用的参考文件。

  • microsoft.crm.sdk.proxy
  • Microsoft.CSharp
  • microsoft.xrm.client
  • microsoft.xrm.portal
  • microsoft.xrm.sdk
  • 系统
  • 系统 System.Core
  • 系统数据
  • System.Data.Services
  • System.Data.Services.Client
  • System.DirectoryServices.AccountManagement
  • System.Runtime.Serialization
  • System.ServiceModel
  • System.Xml
  • System.Xml.Linq

有什么方法可以在托管版本的 CRM 上运行我的插件???

如果有帮助,不胜感激:)

【问题讨论】:

  • 它不工作。我已经创建了新的 XRM.cs 文件。在我的插件中查看代码 ` var connection = CrmConnection.Parse("ServiceUri=myconnectiondetails"); var service = new OrganizationService(connection); var context1 = new CrmOrganizationServiceContext(connection); var xrm = new XrmServiceContext(context1);`. xrm 对象引发了这个问题。
  • 我认为大卫的答案可能是钱。另请查看描述类似内容的this answer
  • 我们可以这样使用IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); var xrm = new XrmServiceContext(service);
  • SDK库的版本号是多少>

标签: dynamics-crm-2011


【解决方案1】:

我已经通过使用这个命令解决了这个问题。

CrmSvcUtil.exe /out:"Xrm.cs" 
               /url:http://crm/Contoso/XRMServices/2011/Organization.svc 
               /namespace:Xrm 
               /servicecontextname:XrmServiceContext
               /servicecontextprefix:Xrm

删除代码自定义选项解决了我的问题。

/codeCustomization:"Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration"

【讨论】:

    【解决方案2】:

    Microsoft.XRM.Client 通常插件不需要。
    需要从外部应用程序连接到 CRM。
    Microsoft.XRM.Client 自 CRM 2016 起已从 SDK 中删除

    插件不会自动解析项目中的依赖项,它们必须已经在服务器上。

    如果插件需要,Microsoft.XRM.Client 可以放在 GAC 中。

    Dynamics CRM 2015 更新
    NuGet 包 Microsoft.CrmSdk.Extensions 包含 Microsoft.Xrm.Client。

    Dynamics CRM 2016 和 Dynamics 365 更新
    Microsoft.Xrm.Client 不再是 SDK 的一部分。
    NuGet 包Microsoft.CrmSdk.CoreAssemblies 包含插件开发所需的一切。

    Dynamics CRM SDK are in NuGet的各个部分。
    NuGet 是比添加 Dynamics CRM dll 作为项目引用更好的解决方案;特别是对于源代码控制和团队开发。

    【讨论】:

    • 感谢您的回复,如何将 Microsoft.XRM.Client.dll 放在 GAC 的 Online CRM 上?
    • 我已经创建了 xrm.cs 文件删除参数并且它可以工作,不需要 xrm.client。 link。但我面临着 OptionSetValue 的问题。如何设置这些值。 link
    • 无法访问 CRM Online 中的 GAC。如果您有权访问 CRM 服务器,则只能在 GAC 中放置程序集。
    • 关于选项设置值请再问一个问题;如果我回答了您的问题,请将其标记为答案。
    • OP 在最初的问题中非常清楚他们使用的是“Microsoft 托管版本的 CRM”。 -- 在这种情况下,将 dll 放入 GAC 的建议非常无用。
    【解决方案3】:

    如果从 GAC 运行,Microsoft.Xrm.Client.dll 实际上似乎不起作用。这是因为它有一些狡猾的类型解析方法,只有在本地加载程序集时才有效。我在这里提出了一个完整的细节问题:https://community.dynamics.com/crm/f/117/t/144464.aspx

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 1970-01-01
      • 2014-10-10
      • 2020-08-17
      相关资源
      最近更新 更多