Visual Studio Control Add-in Project Template

If part of your daily job includes creating control add-ins for Microsoft Dynamics NAV, then you know that creating control add-ins that target all clients requires quite a lot manual work. There are a lot of small steps that you must do every time.

To avoid all that work that adds no value, only frustration, here’s a Visual Studio project template that you can use to automate the process of creating a new control add-in.

First, download the project template by clicking here.

Then, to install it on your machine, take the ZIP file you downloaded, and put it to:

Documents\Visual Studio 20xx\Templates\ProjectTemplates

Just place the ZIP there, no need to unpack anything.

To use it, (re)start Visual Studio, and then in your New Project window, select Templates > Visual C#, then scroll to the bottom and select this little guy:

image

Then set the name of the project, click OK, and you have your new shiny control add-in project structure in place.

To make full use of it:

  • Choose a strong name file to sign the project with. The PowerShell script that runs after building will remind you of this if you forget.
  • Edit the IControlAddIn.cs file to change the value of the ControlAddInExport attribute.

At this stage, you can already press F6 to build it, and it will immediately find its way into Control Add-ins page in NAV, together with the resource file.

After first build, PowerShell script will create the Resource subfolder and create a default resource file structure and a manifest file in there. The files are present inside the project folder, but are not part of the project. It’s a good idea to make them a part of the project, so do this:

  • In Solution Explorer, click the Show All Files icon
  • Right click the Resources folder
  • Click Include in Project

image

And that’s all. Inside your Resource Folder you’ll have a subfolder for every control add-in of interface type that you add to this project, and there you’ll find the Manifest file, subfolder for each resource type, jQuery 2.1.4, and the IControlAddIn.js script that should contain your JavaScript code.

Have fun creating your new control add-ins, and let me know if you find this little tool useful.

21 thoughts on “Visual Studio Control Add-in Project Template”

  1. Hi Vjeko,

    I’m trying to use the VS-Template but there is an error shown on compiling the solution: while executing the PostBuild.ps1 the following error (translated) shows up:
    “Error on calling method, because [System.Management.ManagementClass] contains no method with name “new”.
    In C:\…AddIn\_build\PostBuild.ps1:39 Zeichen:18″
    which is the line:
    “foreach ($mo in [System.Management.ManagementClass]::new(“Win32_Service”).GetInstances())”

    I’ve Nav2013 installed and OS is Win7Prof

    Thanks for the really great session on NavTechDays!!

    Oliver

    1. Thanks, Oliver! I can only suspect that you don’t have the right version of .NET installed here. I have developed this under Windows 10, with no special additional software installed. I don’t know how much of it will run under Windows 7. Can you try this under Windows 10?

      1. That’s logical. I’ll try it. Seems that W10 has added the method, because even in .NET 4.6 the new-method is missing.
        Thanks for your quick answer.

    2. Had the same problem, I think its Powershell version issue. Changing the fallowing lines worked for me:

      foreach ($mo in [System.Management.ManagementClass]::new(“Win32_Service”).GetInstances())
      {

      to

      $mc = New-Object System.Management.ManagementClass “Win32_Service”
      foreach ($mo in $mc.GetInstances())
      {

      and

      Import-Module -FullyQualifiedName $path

      to

      Import-Module -Name $path

      and

      $zip = [Ionic.Zip.ZipFile]::new()

      to

      $zip = New-Object Ionic.Zip.ZipFile;

          1. I already figured out that this command is part of 2016 only. We have 2013 active, so the script cannot be run errorfree. Beginning of next year we will get 2016 – so i wait with it until then 🙂

  2. I can’t seem to get the scroll bars to show on the addin page. My html just continues down below the border of the page. If I mark the text it scrolls down, but no scroll bars appear.

    Do you have a solution to that? I have tried several suggestions from other blogs, but I can’t seem to get it to show.

    1. Hi John,

      I’m facing the same issue, did you found a fix for it ?

      Ps, tx for the template Vjeko, It’s an awesome tool !!!

      1. I think this is how I got around it:

        function _stretchContainer() {
        var $iframe = $(window.frameElement);
        if ($iframe) {
        if ($iframe.length === 0) {
        alert(‘iFrame not found’);
        return;
        }
        }
        else {
        return;
        }

        var $scrollContainer = $iframe.closest(‘.ms-nav-scrollable’);
        if ($scrollContainer) {
        if ($scrollContainer.length !== 0) {
        var $addinContainer = $iframe.closest(‘.spa-container’);
        if ($addinContainer) {
        if ($addinContainer.length !== 0) {
        var containerHeight = $addinContainer[0].getBoundingClientRect().height;
        if (Microsoft.Dynamics.NAV.GetEnvironment().Platform == 1) {
        containerHeight = containerHeight – 150;
        }
        else {
        containerHeight = containerHeight – 350;
        }

        $iframe.css(‘height’, containerHeight + ‘px’);
        $iframe.css(‘max-height’, containerHeight + ‘px’);
        }
        }
        return;
        }
        }
        };

        $(window).bind(“resize”, function () {
        _stretchContainer();
        });

  3. Hey Vjeko,
    first of all: Thank you, this is really helpful.
    But i think the Line 45

    has to be
    $path = $path.Substring(0, $path.IndexOf(“$”)-3)
    because in my case the device Letter “C” was cut

    this line solved a lot of failures.
    Thanks Ben

  4. I am getting below error while loading the project. i am using VS 2010.

    This project is incompatible with the current version of Visual Studio.

  5. I got this error while compiling:

    “set nst=DynamicsNAV90
    powershell -ExecutionPolicy unrestricted -command “&’C:\KasaControlsAddin\KasaControlsAddin\_build\PostBuild.ps1′ -DllFile ‘C:\KasaControlsAddin\KasaControlsAddin\bin\Debug\KasaControlsAddin.dll’ -ServerInstance ‘%nst%’ -ProjectPath ‘C:\KasaControlsAddin\KasaControlsAddin\KasaControlsAddin.csproj’ -SolutionDir ‘C:\KasaControlsAddin\’ -Configuration ‘Debug'””

      1. I got the same error:

        Error The command “set nst=DynamicsNAV90
        powershell -ExecutionPolicy unrestricted -command “&’c:\users\jose.albertino\documents\visual studio 2015\Projects\Add-in Matrix\Add-in Matrix\_build\PostBuild.ps1′ -DllFile ‘c:\users\jose.albertino\documents\visual studio 2015\Projects\Add-in Matrix\Add-in Matrix\bin\Debug\Add-in Matrix.dll’ -ServerInstance ‘%nst%’ -ProjectPath ‘c:\users\jose.albertino\documents\visual studio 2015\Projects\Add-in Matrix\Add-in Matrix\Add-in Matrix.csproj’ -SolutionDir ‘c:\users\jose.albertino\documents\visual studio 2015\Projects\Add-in Matrix\’ -Configuration ‘Debug'”” exited with code 1. Add-in Matrix

        Could you help me?

        Thanks!

        1. You must run VS as Administrator. This is the most common cause of this error. If you do run it as Administrator and still get this, then you’ll have to troubleshoot yourself. Simply take the command it generated and try to run it from the Developer Command Prompt.

Leave a Reply