我正在 Visual Studio 2010 中现有的 Microsoft Dynamics CRM 4 解决方案的新项目中创建一个新插件。该解决方案已包含已使用插件注册工具成功部署的其他项目/DLL。
但是,当我构建项目并将 .dll 文件加载到插件注册工具中时,加载的程序集中没有拾取任何插件!
我的插件类包含 IPlugin 接口(interface)并已签名。我不知道我还需要做什么?有人有什么建议吗?
更新:我的类(class) -
正如您所看到的,我在第一次测试部署中保持了简单。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.Sdk.Query;
using Microsoft.Crm.SdkTypeProxy;
using System.Web;
using System.Xml;
using System.Runtime.InteropServices;
namespace RI.CRM.Plugins2
{
class SupportAutoNumber : IPlugin
{
public void Execute(IPluginExecutionContext context)
{
if (context == null) throw new InvalidPluginExecutionException("Context is null.", new ArgumentNullException("context"));
// Verify that there is an entity in the target
if (context.InputParameters.Properties.Contains(ParameterName.Target)
&& context.InputParameters.Properties[ParameterName.Target] is DynamicEntity)
{
ICrmService crmService = context.CreateCrmService(true);
DynamicEntity theAutonumber = RetrieveDynamicEntitiesByProperty(crmService, "ri_autonumber", "ri_name", "Support Ticket Numberer");
throw new InvalidPluginExecutionException(string.Format("Retrieved Autonumber: {0}", theAutonumber.Name));
}
}
public static DynamicEntity RetrieveDynamicEntitiesByProperty(ICrmService service, string Entity, string Column, string Value)
{
ConditionExpression con = new ConditionExpression();
con.AttributeName = Column;
con.Operator = ConditionOperator.Equal;
con.Values = new string[] { Value };
FilterExpression filter = new FilterExpression();
filter.FilterOperator = LogicalOperator.And;
filter.AddCondition(con);
QueryExpression query = new QueryExpression();
query.EntityName = Entity;
query.ColumnSet = new AllColumns();
query.Criteria = filter;
RetrieveMultipleRequest retrieve = new RetrieveMultipleRequest();
retrieve.Query = query;
retrieve.ReturnDynamicEntities = true;
RetrieveMultipleResponse retrieved = (RetrieveMultipleResponse)service.Execute(retrieve);
//I prefer Lists to BusinessEntityCollection objects
IList<DynamicEntity> Entities = new List<DynamicEntity>();
foreach (DynamicEntity de in retrieved.BusinessEntityCollection.BusinessEntities)
Entities.Add(de);
if (retrieved.BusinessEntityCollection.BusinessEntities.Count == 0)
return null;
DynamicEntity entity = (DynamicEntity)retrieved.BusinessEntityCollection.BusinessEntities[0];
return entity;
}
}
}
最佳答案
您需要将您的类公开,否则在程序集外部无法看到它。
例如公共(public)类SupportAutoNumber:IPlugin
关于visual-studio-2010 - 注册工具中未找到 CRM 4 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16935627/