For a long time, Developers for Dataverse don’t have an official way to use third-party libraries when creating plugin(s). If we want to reuse existing code, the only official way to do it was use the Shared Project which is limited to the code that we own + the IntelliSense in Visual Studio not working as I would expect it to be. The unofficial way is using ILMerged/ILRepack to merge all the necessary DLL(s) into a single DLL (we can use any library that we want. But deploying/setting the project for the first time is kinda hard). And finally, for today’s topic, we will try the new official way + easier steps through Dataverse Dependent Assemblies for Plug-ins (PREVIEW)!
Plugin Registration Tools v9.1.0.155
To try this Preview, we need to update/download Plugin Registration Tools at least v9.1.0.155. The easiest way to do this is to go to the official NuGet Package of Plugin Registration Tools here, and then click the “Download Package” link:

Once downloaded, you need to rename the extensions to zip > right click > Properties > Unblock the file (I forget to do this and when clicking the Register New Assembly button, it will not work) > unzipped the files > go to tools folder to get all the Plugin Registration Tool.

Demonstration
For today’s demonstration, I’ll create a plugin that will use Niam.Xrm.Framework (Dynamics CRM Plugin framework). So without further ado, let’s create Plugin Project using Microsoft Power Platform CLI (if you haven’t installed it, you need to check this documentation)/run the command “pac install latest” to update the tools to version at least Microsoft.PowerApps.CLI.1.16.6.
First, you need to set up the working directory that you want. Once you do that, open command prompt > CD to your working directory > run the “pac plugin init” command:

Once created, you now can open the project (.csproj) > install Niam.Xrm.Framework using below Package Manager command:
Install-Package Niam.XRM.Framework -Version 9.0.2.451
Because of Niam.Xrm.Framework is a plugin framework, we can delete the generated files and create our custom Plugin directly. Below is the sample code that I use for this demonstration:
using System;
using Microsoft.Xrm.Sdk;
using Niam.XRM.Framework.Interfaces.Plugin;
using Niam.XRM.Framework.Plugin;
namespace TryDependentAssembly
{
public class SetContact : OperationBase
{
public SetContact(ITransactionContext<Entity> context) : base(context)
{
}
protected override void HandleExecute()
{
var jobtitle = $"CRM Developer '{Get<string>("firstname")} " +
$"{Get<string>("lastname")}'";
Set("jobtitle", jobtitle);
Set("firstname", "Temmy");
Set("lastname", "Raharjo");
}
}
public class DemoPlugin : PluginBase<Entity>, IPlugin
{
public DemoPlugin(string unsecure, string secure) : base(unsecure, secure)
{
}
protected override void ExecuteCrmPlugin(IPluginContext<Entity> context)
{
new SetContact(context).Execute();
}
}
}
From the above code, we will set the First Name as “Temmy”, and the Last Name as “Raharjo”. Then for the Job Title, we will set it as a combination of the “CRM Developer” + First Name + Last Name that we inputted from UI (for simplification purposes I choose this scenario).
Next, you need to open your .csproj and add property PrivateAssets=”All” to all references except Niam.Xrm.Framework (thanks to this Forum thread – shout out to user name eleung83):

If you don’t do the above step, you will get an error “PluginPackage can not contain Microsoft.CrmSdk.Core.Assemblies” when registering/updating the PluginPackage.
Now, we need to open the Plugin Registration Tool > connect to the environment you want > click Register > click Register New Package > set the Plugin package file to .nupkg file that is automatically generated inside bin/debug or bin/publish of your plugin project:

Set the Solution to the solution that you want it > click Import:

Once created, you can register your plugin step. For this demonstration, I use the below settings:

After registering, go to the Plugin > Register new step > for this demonstration I’ll use the below settings:

Demo:

Happy CRM-ing!