Dataverse | Plugins | ILMerge Alternative | Shared Project
Role of ILMerge in Plugin Development:
If you are familiar with writing Plugins in Dataverse, chances are that you would have used ILMerge to merge the Assemblies.
In a typical Dynamics Plug-in development, we will have following .Net Class Library Projects.
- Plugins.csproj
- Plugins.Helper.csproj
When you compile above projects, you get two .dlls (i.e., Plugins.dll and Plugins.Helper.dll). As we can only deploy one .dll to Dataverse, we use ILMerge to merge both Plugins.dll and Plugins.Helper.dll in to one.
Is it recommended to use ILMerge in Plugin development? Answer is No. As per this Microsoft article ILMerge is not supported in Plugins development.
Now whats the alternative? Answer is Shared Projects.
Steps to use Shared Projects in Plug-in Development:
To explain the Shared Projects, I am going to build a simple Plugin project ‘Plugins.csproj’ with ‘PreAccountCreate’ class, which refers a ‘Shared’ Helper project ‘Plugins.Helper’.
- Create a new C# class library project and add ‘PreAccountCreate’ class as below.
- You can copy the code I’ve used from here.
- Now lets add a ‘Shared’ Helper project which our Plugin project would refer.
- Right click your Solution and click ‘New Project’.
- Select a Project template of type C# ‘Shared Project’.
- Give a Name to your ‘Shared Project’.
- I’ve named it as ‘Plugins.Helper’.
- ‘Plugins.Helper’ Shared Project, looks as below in the Solution Explorer.
- Now add a Class file ‘AccountHelper.cs’ to the ‘Shared Project’.
- I’ve added a simple function ‘GetAccountName()’ which returns ‘Microsoft India’.
- To use the ‘Shared Project’ in our Plug-in project, right click ‘Plugins’ project and add ‘Reference’.
- From ‘Shared Projects’, choose your project (i.e., Plugins.Helper in my case).
- Once you referred the ‘Shared Project’ in your Plugin project, it looks as below.
- Now its time to call ‘GetAccountName()’ from our ‘PreAccountCreate’ class.
- Sign the Assembly.
- Build the Plug-in project and you would get the ‘Plugins.dll’ in bin/Debug folder.
- Go ahead and deploy the ‘Plugins.dll’ to Dataverse and register step using Plugin Registration Tool.
🙂