2013-06-05 2 views
1

Я создаю новый плагин в новом проекте в рамках существующего решения Microsoft Dynamics CRM 4 в Visual Studio 2010. Это решение уже содержит другие проекты/библиотеки DLL, которые были успешно развернуты с использованием инструмент регистрации плагина.Плагины CRM 4 не найдены В инструменте регистрации

Однако, когда я создаю проект и загружаю DLL-файл в инструмент регистрации плагинов, в загруженной сборке не загружаются плагины!

Мой класс плагина содержит интерфейс IPlugin и был подписан. Я не знаю, что мне еще нужно делать? У кого-нибудь есть совет?

UPDATE: Мой класс -

Как вы можете видеть, я держал его простым для первого развертывания теста.

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; 
     } 

    } 
} 

ответ

2

Вы должны сделать свой класс общедоступным, иначе его нельзя увидеть вне сборки.

E.g. public class SupportAutoNumber : IPlugin

+1

Вы, сэр, герой. Большое спасибо. –

Смежные вопросы