【问题标题】:Strong Name Validation Failed on CRM 2016 GeneratePicklistEnumsCRM 2016 GeneratePicklistEnums 上的强名称验证失败
【发布时间】:2016-06-06 12:06:22
【问题描述】:

我正在一台运行 CRM 2016 的新 Windows 10 计算机上开始一个新项目,并且有一些奇怪的行为。我需要为我的代码生成选项列表的枚举,因此我使用了 2016 SDK SampleCode 文件夹中的 GeneratePicklistEnums 项目。我在项目属性上创建了签名证书,运行构建,并修改了 .bat 文件(就像我对过去版本所做的那样),当我运行批处理文件时,我收到了这个错误:

未处理的异常:System.IO.FileLoadException:无法加载文件或程序集“Microsoft.Xrm.Sdk,Version=8.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。强名称验证失败。 (来自 HRESULT 的异常:0x8013141A)---> System.Security.SecurityException:强名称验证失败。 (来自 HRESULT 的异常:0x8013141A) --- 内部异常堆栈跟踪结束 --- 在 Microsoft.Crm.Services.Utility.CrmSvcUtil.Main(String[] args)

我阅读了很多关于关闭强名称检查和添加例外的博客和 MS 社区帖子 - 它们都不起作用。

我查看了 AssemblyInfo.cs 并没有看到对 AssemblyKeyFile 的任何引用,所以我添加了一个 - 没有任何区别。我用 sn.exe 尝试了几件事,包括“sn -Vr *”,但这也没有用。我使用 ildasm 检查 GeneratePicklistEnums.dll,它显示为版本 0.0.0.0,所有引用的程序集都有版本号。

有什么建议吗?

--- 更新: 我终于通过返回 SDK 并将以下文件从该 BIN 文件夹复制到我的项目 BIN 文件夹中来运行代码:

Microsoft.Xrm.Tooling.Connector
Microsoft.IdentityModel.Clients.ActiveDirectory
Microsoft.Xrm.Tooling.CrmConnectControl
Microsoft.Crm.Sdk.Proxy
Microsoft.Xrm.Sdk

但它仍然没有获得版本或强名称。

【问题讨论】:

  • 您将它们复制到您的 bin 文件夹中?尝试更新您的项目引用以指向 SDK 的 bin 文件夹中的 dll(更好的是,使用 nuget 上可用的程序集)。另外,您说您的代码可以运行,但它仍然没有获得版本或强名称....您是说您的代码比上次更远,但您仍然遇到同样的错误?

标签: c# sdk dynamics-crm


【解决方案1】:

CRM SDK 工具包有 2 个不同的文件夹,其中包含 CrmSvcUtil.exe。如果您使用 \SampleCode\CS\CrmSvcUtilExtensions\GeneratePicklistEnums\bin\Debug 下的那个,您将收到错误消息。但是,如果您使用 \bin 下的那个,它会起作用。

只需确保在命令或批处理文件中使用 [CRMSDK]\bin\CrmSvcUtil.exe 的绝对路径

【讨论】:

    【解决方案2】:

    有一个来自 Daryl LaBar 的名为 Early Bound GeneratorXrmToolbox 开源工具,它只是 SDK 中 crmsvcutil 之上的一个包装器。省去麻烦并使用该工具,它具有许多不错的功能。顺便说一句,使用最新版本的工具箱,有一个插件“商店”,因此您甚至不必再手动下载 EBG。

    【讨论】:

    • 我喜欢 XRMToolbox 并且已经使用了一段时间。在这种情况下,我想让这个程序独立工作,这样我就可以自动更新 optionsets.cs 文件
    • 你很幸运...Early Bound Generator 输出一个 crmsvcutil 命令,您可以使用该命令从命令行重新生成文件,包括您选择的所有选项,而无需运行工具箱。
    • 我明白了 - 我试图解决的问题(我想我有 - 请参阅上面的修订版)是生成早期绑定类的 OOTB 示例代码项目在我替换之前无法工作该项目中的 DLL 与 SDK bin 文件夹中的 DLL(上图)。
    • 这是如何解决问题的? XRMToolbox 很好,但这只是回避了 Eccountable 存在的问题,并且对将来查看此帖子的任何人都没有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多