Control Add-In dll’s files in Microsoft Dynamics NAV 2015


With Microsoft Dynamics NAV 2015 there comes one feature in Add-In files area – you do not need manually to copy add-in dll to client: when client doesn’t find it, NAV copies add-in from server.

It is very good: If you’ve installed NAV client on some computer, you don’t care about all add-ins, when user needs it, he will have it.

When NAV client can’t find add-in in client Add-ins folder, usually it is: c:\Program Files (x86)\Microsoft Dynamics NAV\71\RoleTailored Client\Add-ins\, then NAV copies whole add-ins folder from NST computer to client computer to folder C:\Users\[username]\AppData\Local\Temp\1\Microsoft Dynamics NAV\Add-Ins\

But here are few points you need to know when updating add-ins or have strange issues related to your updated add-in functionality.

  • NAV recognizes add-ins by:

    • Product Name (it could be not the same as file name and file properties in windows file explorer doesn’t show it. You can see it by run power cmdlet “(Get-ItemProperty [filename]).VersionInfo.ProductName”);

    • Product version (it is not the same as file version, you can see it in file properties in windows file explorer or run powershell “(Get-ItemProperty [filename]).VersionInfo.ProductVersion”);

    • Public key token (you’ve set it in VisualStudio project when compiled add-in. You can see it by run developer command prompt statement “sn –T [filename]”). Details at http://msdn.microsoft.com/en-us/library/dd983825.aspx.
      So if any of these fields are different, NAV will recognize dll as different add-in.

  • NAV fill in assembly list table with these 3 fields and when NAV looks for dll it uses these fields to recognize which dll need to be loaded. If for some reasons you have 2 files with different names, but the same mentioned properties then for NAV there is only one add-in.

  • When NAV is looking for add-in, it looks in NAV add-ins folder, then in Temp folder and if hasn’t found then download from server add-ins folder. If you updated add-in on server and deleted it in client folder, it could be that old add-in version still remains in temp folder and NAV client will use it for work.

  • If you recompiled your add-in and have changed something, but you haven’t modified add-in properties, then you need to replace add-in files on server and on client computer (in NAV folder). It is not enough to replace file on server only, because NAV doesn’t recognize that new add-in needed to use and do not download add-in file from server. But it is also not enough to delete add-in file on client computer in NAV folder, just because old version could remain in temp folder too. Of course you can delete add-in file in both folders (in NAV and in Temp). But if computer is used by few users, then you need to delete files from every user temp folder, then maybe easier way is replace add-in file only in NAV folder. As soon as add-in file exists in folder, NAV doesn’t look it in temp folder.

 

These postings are provided “AS IS” with no warranties and confer no rights. You assume all risk for your use.

Gedas Busniauskas

Microsoft Lithuania
Microsoft Customer Service and Support (CSS) EMEA

Comments (6)

  1. User Account / Click Once says:

    Hi I have 2 additional questions:

    1. Which account is used for copy the Folder/files? Usually the “program files” directory is protected by UAC in Windows?

    2. Does this also for work Click Once?

    Thx Rene

  2. Egidijus says:

    Use Administrator account. After open file properties and make sure add-in's dll file is not blocked by Windows security.

  3. Jake says:

    Just a further to this, I've found;

    – AssemblyFileName (VersionInfo.OriginalFileName) must be the same as the Product Name / Control Add-In Name

    – The actual assembly file name doesn't have to match the Product Name / Control Add-In Name

  4. Campl3r says:

    Hi,

    I have a question :

    – I have a ControllAddIn in it's own folder.

    – On the server I place a new version of the dll (e.g. 1.0.0.2) in the following path C:Program FilesMicrosoft Dynamics NAV80ServiceAdd-insMyFolder

    – On the client I have a folder C:Userscampl3rAppDataLocalTempMicrosoft Dynamics NavAdd-InsMyAddin_1.0.0.0

    As of my understanding the dll should be updated on the client, but it doesn't work.

  5. Gedas says:

    >> Campl3r

    Yes. It must to be copied.

    Look for reasons:

    1. Are you sure mentioned 3 properties (or one of it?) are updated on your new compilation?

    2. Add-ins are copied when we compile object or run it. Have you done that?

  6. Gedas B says:

    One point is missed:

    NAV service load add-in in cache when started and doesn't track add-in folder continuously. So if replaced add-in on server, you need to restart service to have new version used and published to clients.