Development Tips

Automatic Deployment of Microsoft .NET Framework Interoperability and Control Add-in Assemblies

Microsoft Dynamics NAV 2015 makes it easier for the system administrators to deploy client-side assemblies for .NET Framework interoperability and client control add-ins on computers that are running the Microsoft Dynamics NAV Windows client or Microsoft Dynamics NAV Development Environment.

You can now install the assemblies in the Add-ins folder on the computer that is running Microsoft Dynamics NAV Server. By default, this is the C:\Program Files\Microsoft Dynamics NAV\80\Service\Add-ins folder.

When an operation from the client requires an assembly, Microsoft Dynamics NAV Server automatically deploys the assembly to a temporary folder on the client computer.

For example, if Microsoft Dynamics NAV Windows client opens a page that contains a control add-in, Microsoft Dynamics NAV Server will find the control add-in assembly by name in the Add-ins folder. Then, it deploys the assembly to the client computer in the %TEMP%\Microsoft Dynamics NAV\Add-Ins folder of the user who is running the client. Subsequently, the deployed assembly will be used whenever the page is opened.

Similarly, if the development environment requires a control add-in, for example, when you compile an object, then the control add-in assembly will be deployed by the Microsoft Dynamics NAV Server to the local temporary folder for the current user on the computer that is running the development environment.


To be deployed, an assembly must comply with the following Microsoft Dynamics NAV Server configuration settings: Chunk Size, Max Upload Size, and Prohibited File Types.

If a .NET Framework interoperability or control add-in assembly is updated and its version number changes, Microsoft Dynamics NAV Server will deploy the updated assembly to the client computer the next time that the client requests the assembly. The updated assembly is put in a subfolder of the %TEMP%\Microsoft Dynamics NAV\Add-Ins folder, where the subfolder has the assembly’s version number as its name. This implementation means that you do have to remove the older versions of assemblies that are stored on the client computer.

To support compatibility with earlier version of Microsoft Dynamics NAV, before Microsoft Dynamics NAV Server deploys an assembly to a client, the client looks for the assembly in the local Add-ins folder (for example, C:\Program Files (x86)\Microsoft Dynamics NAV\80\RoleTailored Client\Add-ins). If the assembly is not found, then the client will request the assembly from Microsoft Dynamics NAV Server.

Javascript-based client add-ins have been using this deployment technique since Microsoft Dynamics NAV 2013 R2.

Development Tips

Learning .NET Framework interoperability by Example

Today we will discuss an example which uses .NET Framework interoperability to display headlines from the RSS feed of my site

This example accesses classes in the System.XML assembly that is found in Global Assembly Cache.

Today’s example uses .NET Framework interoperability to display headlines from an RSS feed from my blog site, which has the following URL:

We will use members of the System.XML assembly, which is part of the Microsoft .NET Framework class library and is installed in the global assembly cache.

Let’s start with creating a table to store the value of feeds as below:

Save your Table.

Next we will be creating a codeunit that has the following local variables:


Variable name DataType SubType
xml DotNet ‘System.Xml, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089’.System.Xml.XmlDocument
items DotNet ‘System.Xml, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089’.System.Xml.XmlNodeList
I Integer
title DotNet ‘System.Xml, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089’.System.Xml.XmlNode
FeedTable Record DotNetInteroperability

After you create the codeunit, add a function LoadFeed and add below code to it:

xml := xml.XmlDocument();


items := xml.SelectNodes(‘/rss/channel/item’);

FOR i := 0 TO items.Count – 1 DOBEGIN

title := items.Item(i).SelectSingleNode(‘title/text()’);

FeedTable.INIT;    FeedTable.”Topic ID” := i + 1;

FeedTable.”Topic Description” := title.Value;




MESSAGE(‘Loading of Feeds Done.’);

Save your codeunit.

To see the example in the Microsoft Dynamics NAV Windows client, you will now create an action on a page that opens the codeunit.

Create a Page as below:

Create below Variable of codeunit created above:

Create below Page Actions:

Write a code for Load Feed Action as:


Save your Page.

Now Run this Page:

Click the Action Load Feed created above.

Respond OK to see the feeds loaded. Make sure your internet connection is operational as it directly fetch the Live feed from Internet.

In this case it will Load 50 Posts headings as this feed provides 50 as output, different feeds may return different numbers mostly 10-20 posts.

Using above logic you can create any such functionality and add value to your customers.

Thanks for going through this post, hopefully you may have earned some fruitful Tips.

You can follow the blog or subscribe to the RSS feed to remain updated and keep getting such posts in future.

Your response to my posts will keep motivating me for helping the community.