Dynamics CRM 2011 - 与不同实体相关的每个插件是否必须拥有自己的程序集?

时间:2013-03-18 18:51:07

标签: dynamics-crm-2011 crm microsoft-dynamics

我正在创建一系列相关的插件。每个插件用于不同的实体。每个插件都必须拥有自己的程序集吗?我正在使用Visual Studio,我在同一个解决方案中创建了第二个项目,但我看不到注册工具中的新步骤。

由于

4 个答案:

答案 0 :(得分:4)

它可以,但不必。这几乎是你的设计决定。考虑一下你是否有几个类都在实现IPlugin

public class MyFirstPlugin : IPlugin
{
    //implemented as per usual
}

public class MySecondPlugin : IPlugin
{
    //implemented as per usual
}

如果您要在插件注册工具中注册该DLL,您将看到以下结构:

- Server
    - DLL
        - MyFirdtPlugin
        - MySecondPlugin

然后,您可以根据需要为每个插件添加步骤。

替代方案是每个DLL有一个插件,它会给你

- Server
    - DLL1
        - MyFirstPlugin
    - DLL2
        - MySecondPlugin

我必须承认这似乎有些过分 - 但它也可能取决于你如何使用你的解决方案。

答案 1 :(得分:2)

除了glosrob的回答之外,我猜你正在使用插件注册工具来注册你的插件。如果是这样,您需要确保在将新插件添加到同一个dll之后,使用注册工具更新插件dll本身,这样您就可以注册新的插件方法了吗?创建

答案 2 :(得分:1)

是的,您可以在不同的类库项目中创建每个插件,但这不是一个好习惯。我更愿意将所有插件收集到一个类库中。

请注意,从“文件”对话框中选择程序集后,必须单击“加载程序集”按钮以加载实现IPlugin接口的所有类。

答案 3 :(得分:1)

要回答这个问题 - 不,每个新插件都不必包含在新程序集中。

详细说明 - 技术上可以将所有插件代码放在一个项目和一个文件中。

要警告 - 以上将是所有ifs和buts管理的噩梦,所以这是一个很好的例子,但不应该。

建议 - 我通常为每个实体的插件都有一个单独的项目,并使用开关处理所有消息。有时候,我可能会有两到三个装配,但是当你到达那里时,你会知道什么时候这样做。通常,一个DLL就足够了。