我创建了一个插件并使用了对我创建的另一个项目(DLL)的引用.问题是当我尝试运行插件时,我得到一个CRM错误说:
无法加载文件或程序集"XXX,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = a760feb9ec7271a9"或其中一个依赖项.该系统找不到指定的文件.
有没有人有任何想法解决这个问题?
我想在N:N(多对多)关系中触发MS Dynamic CRM插件?
当用户在N:N关系中添加或删除行时,则暴露我的插件.
这是可能的,如果是这样的话?
尝试在CRM 2011中调试插件非常困难.将.pdb文件放在服务器上的正确位置不仅存在问题,而且每次进行编码更改时,都会遇到部署和重新注册插件的麻烦.由于触发器是在CRM本身,因此很难为它创建单元测试.
我目前为一个全新的插件编写单元测试的过程相当缓慢而且错误,但是这样的事情:
这是一件痛苦的事.从得到的图片正确,创造虚拟的数据,并且每个测试运行时将其复位,似乎有需要改进的很多地区.
如何在不必从CRM实际触发插件的情况下对插件进行单元测试,或者首先运行在CRM中调试它的所有箍,并为每个测试创建独特的虚拟数据?如何使用注入来消除在CRM中为每个单元测试删除,创建,测试,验证和删除数据的需要?
这个问题仍然有很多点击,所以我想我会添加两个(我所知道的)开源项目,为单元测试提供Fake CRM实例:
查看我创建的视频,比较和对比差异.
我假设对于Update插件,它指定了一个属性列表,如果被更改,则导致插件触发.
因此,如果我每次更新实体时Foo只针对一个过滤属性注册一个插件,CRM会执行检查以查看是否已更新,如果有,则运行我的插件.因此,使用下面的代码,我希望我的插件执行一次.BarFooBar
Foo foo = new Foo();
foo.Bar = 0;
foo.Id = service.Create(foo);
foo.Bar = 1;
service.Update(foo.Bar); // My plugin would execute
service.Update(foo.Bar); // Bar hasn't changed, I would assume the plugin will not execute
Run Code Online (Sandbox Code Playgroud)
我在这个假设中是对的吗?
有没有办法创建该查询?

我需要来自Adress和Contact Adress的数据,通常我可以将它们组合在一起Combine OR但不是在这种情况下.
我想我必须用PreExecute()方法编写新的插件,获取我的查询,解析数据然后手动获得相同的地址或者还有其他方法吗?
我是crm 2011的新手.我找到了有关如何在功能区中添加新按钮的文档.以及如何分组按钮.但我需要功能区中的下拉菜单按钮.我怎样才能做到这一点?我没有找到任何关于此的信息.
谢谢!
我正在使用crmsvcutil生成早期绑定类型.在crm 4.0天中,只需点击entity.ChildEntities属性即可加载相关的entites.
//Winvs.Next.Entities.CrmDataContext dc = new Entities.CrmDataContext(new Microsoft.Xrm.Sdk.Client.OrganizationServiceContext(
var cred = new System.ServiceModel.Description.ClientCredentials();
cred.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
//
using (var organizationServiceProxy = new Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy(new Uri(System.Configuration.ConfigurationManager.ConnectionStrings["CrmConnection"].ConnectionString), null, cred, null))
using (Winvs.Next.Entities.CrmDataContext dc = new Entities.CrmDataContext(organizationServiceProxy))
{
// This statement is required to enable early-bound type support.
organizationServiceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new Microsoft.Xrm.Sdk.Client.ProxyTypesBehavior());
//
foreach (var a in dc.AccountSet)
{
foreach (var c in a.contact_customer_accounts)
{
c.FullName.ToString();
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用最新的CRM 2011 SDK版本执行此操作而不是加载已实现的实体时,我得到一个NullReferenceException,它没有提供有关该问题的进一步信息.
foreach (var c in a.contact_customer_accounts)
Run Code Online (Sandbox Code Playgroud)
我想念什么?如何使用CRM2011 Linq加载相关实体?
我正在Microsoft Dynamics CRM 2011中创建一个工作流程.我有一个步骤,然后有几个条件.我意外地将应该在第三个条件下的步骤放在与主步骤相同的级别.有没有办法将步骤移动到主要步骤条件而不删除并重新创建步骤?
想知道你是否有任何关于我遇到的以下问题的想法.
这是一些超级简单的插件代码.
namespace Demo.DebugTraceBlog
{
public class TraceAndDebugDemo : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
Trace.WriteLine("Started Plugin");
Trace.WriteLine("Plugin Working");
Trace.WriteLine("Ending Plugin");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用DebugView(http://goo.gl/YRfus)来查看正在写入的跟踪消息.当我执行这个代码作为一个插件在沙箱中运行,我得到我预期的结果:三线出现在DebugView中,如果我附上VS沙盒工作进程我看到写入到输出窗口三行.现在,当我改变隔离模式无法比拟的,并且让它在W3WP.EXE过程来看,我没有得到任何输出到DebugView中,当我连接到我的w3wp.exe可以设置断点以验证它正在运行,但我不知道获取任何输出到输出窗口.
知道为什么会发生这种情况以及如何重写原因并强制非沙盒执行按预期工作的任何想法.我可以猜测它与运行CRM IIS进程内部有关,而CRM正在抑制Trace写入 - 我专门使用Trace而不是Debug来试图避免这个问题,但没有运气.
我知道我可以使用ITracingService,但这不符合我当前的要求.
c# ×4
dynamics-crm ×4
crm ×2
.net ×1
asp.net ×1
dynamic ×1
fetchxml ×1
iis-7 ×1
javascript ×1
linq ×1
unit-testing ×1
xml ×1