Gary
Gary

Reputation: 1774

Dynamics CRM 2011 - Does each plugin that related to a different entity have to have it's own assembly?

I am creating a series of related plugins. Each plugin is for a different entity. Does each plugin have to have it's own assembly? I'm using Visual Studio and I created a second project within the same solution but I can't see the new step in registration tool.

Thanks

Upvotes: 1

Views: 916

Answers (4)

glosrob
glosrob

Reputation: 6715

It can do, but doesn't have to. That is pretty much your design decision. Consider if you had several classes all implementing IPlugin

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

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

If you were to register that DLL in the plugin registration tool, you would see the following structure:

- Server
    - DLL
        - MyFirdtPlugin
        - MySecondPlugin

You can then add steps to each plugin as desired.

The alternative would be to have one plugin per DLL, which would give you

- Server
    - DLL1
        - MyFirstPlugin
    - DLL2
        - MySecondPlugin

I must admit it seems like overkill - but it can also depend on how you are using your solutions.

Upvotes: 4

Konrad Viltersten
Konrad Viltersten

Reputation: 39268

To answer the question - no, each new plugin doesn't have to be contained in a new assembly.

To elaborate - it's technically possible to put in all the plugin code in just one project and a single file.

To warn - the above would be a nightmare to manage with all the ifs and buts, so it's a good example of can-but-shouldn't.

To suggest - I usually have a separate project for each entity's plugin and handle all the messages using a switch. On occasion, I might have two or three assemblies but you'll know when it's time to do so as you get there. Usually, one DLL is just enough.

Upvotes: 1

Daryl
Daryl

Reputation: 18895

In addition to glosrob's answer, I'm guessing that you're using the plugin registration tool to register your plugin. If so, you'll need to make sure that after you add your new plugin to the same dll, that you update the plugin dll itself with the registration tool, so you can register the new plugin method that you've created.

Upvotes: 2

Anwar
Anwar

Reputation: 4508

Yes, you can create each plugin in a different class library project but this is not a good practice. I'd prefer to collect all plugins into one class library.

Note that after selecting your assembly from the File Dialog you have to click on Load Assembly button to load all classes which implement the IPlugin interface.

Upvotes: 1

Related Questions