Tag: dynamics crm 2011

AppDomain.CurrentDomain.AssemblyResolve in dynamics crm

因此,我参考了许多引用AppDomain.CurrentDomain.AssemblyResolve文章,以便在运行时将嵌入式资源中的DLL加载到插件中(不使用IlMerge)。 但是,当我插入此代码时,事件处理程序永远不会在插件为我的主库抛出TypeLoadException消息之前接收该线程。 我已经尝试将代码放在静态构造函数中,在Execute方法内部和主构造函数中; 虽然事件处理程序已注册,但处理程序中的断点不会被命中。 环境是Dynamics CRM 2011,最新汇总并使用SDK开发人员工具插件项目和插件类生成。 任何人都知道我需要做些什么才能让它发挥作用?

无法访问Microsoft.Xrm命名空间

我已经下载了CRM Dynamics SDK并将其保存在本地目录中。 在我的代码中,我正在使用EntityCollection (在与Xrm名称空间相关的其他类中),这意味着我需要using Microsoft.Xrm.Sdk;进行添加using Microsoft.Xrm.Sdk; 。 问题是在编译期间我得到错误说: 命名空间“Microsoft”中不存在类型或命名空间名称“Xrm”(您是否缺少程序集引用?) 所以,我仔细检查引用是否已经完成,并且非常准确地说,我看到microsoft.xrm.sdk确实在我的列表中。 只是为了确定,我已经删除它并通过指向具有相同名称的DLL再次添加它。 但无济于事……令人讨厌的事情是,我的同事使用相同的代码并在机器上编译(唯一的区别是他在Win 7上,我在Win 8上)。 我们如何解决这个问题?

Update-Plugin CRM 2011上的实体前和实体后图像

我希望somone可以帮助我解决一段时间以来我一直试图解决的问题。 我有一个创建插件和一个更新插件。 出于测试目的,我的create plugin(Pre-Operation)执行简单的计算,并在保存后将结果放在字段上。 当我在预操作上注册并更改我的逻辑字段时,我的update-plugin工作正常。 但是,如果我只更改其中一个字段(或在表单上弄脏其他字段),我会收到一个错误,即密钥不在字典中。 我已经完成了我的研究,并看到您在前后实体图像之间进行检查,以检查哪些字段已更新,哪些字段未更新。 但令我困惑的是,当我这样做时,我需要在Post-opertion上注册我的更新插件,这导致我的更新不再工作,如果我在我的代码结尾处做service.Update(实体)它给出我是无限循环的另一个错误。 在我的Update插件中,我确保我注册了两个图像(Pre和Post)。 如果有人可以建议我,如何在前后图像之间进行检查,我将不胜感激?

CRM 2011 – 拦截快速搜索,获取xml和查询表达式不会返回相同的内容吗?

我正在从某些实体的快速搜索框中创建搜索快捷方式。 这是为了避免多次返回,尤其是当名称可以包含城市名称时。 (城市搜索是相关的,所以它必须留下) 我是通过插件完成的。 所以用户进入 /name Todd Richardson 在联系人实体视图的搜索框中。 更新 拦截( 术前阶段:20 预validation阶段:10)对联系人的Retrievemultiple请求。 结束更新 更新按此处要求的是从MSCRM 2011 sdk工具生成然后修改的实现的开始请记住此代码处于原型状态,可能不适合生产代码: protected void ExecutePreAccountRetrieveMultiple(LocalPluginContext localContext) { if (localContext == null) { throw new ArgumentNullException(“localContext”); } if (localContext.PluginExecutionContext.InputParameters.Contains(“Query”)) { if (localContext.PluginExecutionContext.InputParameters[“Query”] is QueryExpression) { //query expression from input is assigned to a local variable for modification. QueryExpression qe = (QueryExpression)localContext.PluginExecutionContext.InputParameters[“Query”]; […]

如何为CRM 2011插件正确设置C#unit testing?

尝试在CRM 2011中调试插件非常困难。 将.pdb文件放在服务器上的正确位置不仅存在问题,而且每次进行编码更改时,都会遇到部署和重新注册插件的麻烦。 由于触发器是在CRM本身,因此很难为它创建unit testing。 我目前为一个全新的插件编写unit testing的过程相当缓慢而且错误,但是这样的事情: 使用SDK插件注册工具注册新插件 将调试器附加到w3wp.exe,在插件代码中添加一个断点。 通过注册运行的任何操作触发插件。 当断点被击中时,将管道的preimage,postimage和目标值序列化为XML文件,然后这将成为我的unit testing的输入。 停止调试并创建一个新的unit testing,使用RhinoMocks模拟PluginExecutionContext和ServiceProvider,使用序列化的XML文件作为输入参数的存根。 创建在每个unit testing的开始和结束时运行的方法,这些方法重置(首先尝试删除,然后添加)要处理的unit testing的虚拟数据,然后在测试结束时删除虚拟数据。 编辑序列化文件以引用虚拟数据,以便我可以确保插件在每次运行时都能对抗完全相同的数据。 在unit testing中声明并实例化插件,传入模拟对象 执行插件,运行其他查询以确保插件执行我期望的工作,断言失败。 这是一件痛苦的事。 从获得正确的图像到创建虚拟数据,并在每次测试运行时重置它,似乎有很多需要改进的地方。 如何在不必从CRM实际触发插件的情况下对插件进行unit testing,或者首先运行在CRM中调试它的所有箍,并为每个测试创建独特的虚拟数据? 如何使用注入来消除在每个unit testing中删除,创建,测试,validation和删除CRM中的数据的需要? 2016年更新 这个问题仍然有很多点击,所以我想我会添加两个(我所知道的)开源项目,为unit testing提供Fake CRM实例: FakeXrmEasy – 由Jordi创建(见下面的答案) 主要是假的CRM服务 支持插件/工作流程伪造 对FakeItEasy的依赖 好文档 XrmUnitTest – 由我自己创建 假CRM服务+更多(假设,实体建设者等) 流畅支持插件/工作流程伪造 没有依赖任何模拟框架 Sucky文档(我正在研究它) 查看我创建的video ,比较和对比差异。

通过C#检索CRM中所有帐户的列表?

我正在尝试从CRM 2011中检索所有帐户记录,以便我可以使用ForEach循环遍历它们并填充下拉列表。 我正在阅读这篇文章( 检索实体列表 ),并且能够检索满足特定条件的所有帐户,但我如何检索所有? 这是每一个账户记录,无论条件如何? 这是我正在使用的代码,但我不知道在context.AccountSet之后使用哪种方法。 获得所有帐户。 var context = new XrmServiceContext(); var parentAccount = context.AccountSet.All(snippet => snippet.ParentAccountId == “Account1”); 使用context.AccountSet.All我可以获得符合条件的所有记录,但我真的不需要条件…… 谢谢你的帮助!

CRM 2011,插件中的日期和夏令时

我有一个问题,我自己解决,但需要一些确认的话,我是否100%正确的想法,只是因为没有任何文件,我发现certificate自己是正确的。 我的服务器目前处于DST时间,CRM UI也显示1小时,然后数据存储在db中。 没关系。 当我使用插件计算和存储日期时,在我的插件更新操作完成后,CRM平台从我保存的数据中扣除1小时。 我已经读过,当我们通过SDK相关日期时间进行一些操作时,CRM会按日期时间存储日期时间。 是时候在DST的时候,平台也会涉及到当时扣除1小时? 作为一个决议,我已经评论了我的扣除1小时的行,让CRM现在就做了。 我是否理解我的理解,或者如果有人可以提供任何文档URL,那将是可观的。

“Where”方法不能遵循“选择”方法或不支持

我为什么得到: “Where”方法不能遵循“选择”方法或不支持。 尝试根据支持的方法编写查询,或在调用不支持的方法之前调用’AsEnumerable’或’ToList’方法。 …使用WHERE子句时,比如调用时: XrmServiceContext.CreateQuery().Project().To().Where(p => p.FirstName == “John”).First(); ? 这有效: XrmServiceContext.CreateQuery().Project().To().First(); 这也有效: XrmServiceContext.CreateQuery().Where(p => p.FirstName == “John”).First(); 我正在使用AutoMapper QueryableExtension 。 附加信息: 我不想在Where子句之前调用ToList()。 我知道它会这样运作。 CreateQuery()返回IQueryable 。

ExecuteMultipleResponse; 如何从rest中读取和存储Guids

我正在使用ExecuteMultipleResponse方法使用SSIS一次插入10个帐户记录。 List _Accounts = new List(); // Check the batch size and process public override void InputAccount_ProcessInput(InputAccountBuffer Buffer) { //List personIDs = new List(); int index = 0; while (Buffer.NextRow()) { _Accounts.Add(InputAccountFromBuffer(Buffer)); //personIDs.Add(int.Parse(Buffer.sPersonID)); index++; if (index == 10) { ImportBatch(); index = 0; } } ImportBatch(); } private void ImportBatch() { if (_Accounts.Count > 0) […]

是否可以将组织放入其自己的过程中

所以我们在开发CRM环境中有2个Orgs。 两个组织都使用相同的工作进程(w3wp.exe)。 因此,每当一个开发人员在插件中遇到断点时,它就会锁定进程并且两个组织都会停止响应。 我的问题是……是否可以将每个组织放在自己的过程中?