- 我们在本地crm 2011系统中运行了2个组织。
- 我们已经为这两个组织生成了早期绑定类。
- 当停用帐户时,其中一个插件会抛出“另一个程序集定义了名称为account的代理类型”的错误。
- 该插件仅引用早期绑定的dll之一。
我该如何让CRM系统尊重这些引用的命名空间。
我已经尝试了从Google中获得的一些方法,但都没有起作用。
由于您可以通过两个普通组织来复现此问题,我认为我们可以在不必返回并重构大量代码的情况下,在代码层外做一些事情。
谢谢,
Jon
我该如何让CRM系统尊重这些引用的命名空间。
我已经尝试了从Google中获得的一些方法,但都没有起作用。
由于您可以通过两个普通组织来复现此问题,我认为我们可以在不必返回并重构大量代码的情况下,在代码层外做一些事情。
谢谢,
Jon
using (serviceProxy = new OrganizationServiceProxy(config.OrganizationUri,
config.HomeRealmUri,
config.Credentials,
config.DeviceCredentials))
{
// This statement is required to enable early-bound type support.
serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior(Assembly.GetExecutingAssembly()));
}
var credentials = new ClientCredentials();
credentials.Windows.ClientCredential = new System.Net.NetworkCredential(userName, password, domain);
var proxy = new OrganizationServiceProxy(new Uri(discoveryUrl), null, credentials, null);
proxy.EnableProxyTypes(typeof(CrmServiceContext).Assembly);
var context = CrmServiceContext(proxy);
希望这可以帮助您。
问候, MH
这个问题可能已经被提出多年了。然而,我最近遇到了这个问题,并且一直非常担心需要改变成千上万行的代码。但是,我很幸运地找到了以下简单的更改方法来使自己摆脱困境:
假设您要处理两个上下文对象:
以及一个单一的OrganizationServiceProxy对象:service
如果在单个方法中,您使用相同的service对象但是用上述任何一个上下文对象执行多个CRUD操作,则高度可能会引发此错误。但是,通过以下操作,您可以预防此类情况的发生。
每次要使用context1时,您都要在service对象之前加上context对象,如下所示:
service.EnableProxyTypes(typeof(OrganizationServiceContext).Assembly);
using (var context1 = new OrganizationServiceContext(_service)){
// your classic code here
}
service.EnableProxyTypes(typeof(HiwebContext).Assembly);
using (var context = new XYZContext(this._service)){
// your CrmSvcUtil none-classic code here
}
加入 Assembly.GetExecutingAssembly() 解决了我的问题,你还需要添加 using System.Reflection;
谢谢
这通常意味着有一个或多个程序集具有相同的方法名或属性,为了解决这个问题,请使用程序集的完全限定名称。例如,在使用 System.IO 时,如果您在类代码中有一个同名的方法与 System.IO 冲突... 您应该像这样编写解决方案: thisObject.System.IO.Path( ---- ) = something for example.. 这讲得通吗?
ServiceClient serviceClient = new ServiceClient(new Uri(Environment.GetEnvironmentVariable("DataverseUrl")), Environment.GetEnvironmentVariable("DataverseClientId"), Environment.GetEnvironmentVariable("DataverseSecret"), false, log);
ServiceClient service = serviceClient.Clone(Assembly.GetExecutingAssembly(), log);