我正在一台新的Windows 10计算机上开始一个新项目,该计算机在CRM 2016上工作并且有一些奇怪的行为。我需要为我的代码生成选项列表的枚举,所以我使用了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
但它仍然没有获得版本或强名称。
答案 0 :(得分:0)
CRM SDK工具包具有2个包含CrmSvcUtil.exe的文件夹。如果您使用\ SampleCode \ CS \ CrmSvcUtilExtensions \ GeneratePicklistEnums \ bin \ Debug下的一个,则会收到错误消息。但是,如果在\ bin下使用一个,它将起作用。
只需确保在命令或批处理文件中使用[CRMSDK] \ bin \ CrmSvcUtil.exe的绝对路径
答案 1 :(得分:-1)
来自Daryl LaBar的XrmToolbox有一个名为Early Bound Generator的开源工具,它只是来自SDK的crmsvcutil之上的包装器。省去麻烦并使用该工具,它有很多很好的功能。顺便说一句,使用最新版本的工具箱,有一个插件" store"所以你甚至不必再手动下载EBG了。