public async Task DeployApp(int debugPort, CancellationToken cancellationToken)
        {
            DeploymentTargetsManager.StopPollingForDevices();

            cleanedup = false;
            meadow?.Dispose();

            var target = this.Target as MeadowDeviceExecutionTarget;
            var device = await MeadowDeviceManager.GetMeadowForSerialPort(target.Port, logger : logger);

            meadow = new MeadowDeviceHelper(device, device.Logger);

            var fileNameExe = System.IO.Path.Combine(OutputDirectory, "App.dll");

            var debug = debugPort > 1000;

            await meadow.DeployAppAsync(fileNameExe, debug, cancellationToken);

            if (debug)
            {
                meadowDebugServer = await meadow.StartDebuggingSessionAsync(debugPort, cancellationToken);
            }
            else
            {
                // sleep until cancel since this is a normal deploy without debug
                while (!cancellationToken.IsCancellationRequested)
                {
                    await Task.Delay(1000);
                }

                Cleanup();
            }
        }
        public static async Task Deploy()
        {
            var cts = new CancellationTokenSource();

            logger = new OutputLogger();

            try
            {
                meadow = await MeadowDeviceManager.GetMeadowForSerialPort(SerialPortName, logger : logger).ConfigureAwait(false);

                var meadowDH = new MeadowDeviceHelper(meadow, logger);

                await meadowDH.MonoDisableAsync(false, cts.Token);

                //meadowDH.DeployAppAsync();

                var items = await meadowDH.GetFilesAndFoldersAsync(new TimeSpan(0, 0, 10), cts.Token);

                bool   isRoot     = false;
                bool   isFolder   = false;
                string folderName = string.Empty;

                var filesToDelete = new List <string>();

                for (int i = 0; i < items.Count; i++)
                {   //start of folders in root
                    if (isRoot == false && items[i].Contains("meadow0/"))
                    {
                        isRoot = true;
                    } //next root folder - break out
                    else if (isRoot && items[i].Contains(" ") == false)
                    {
                        break;
                    } //item under meadow0
                    else if (isRoot &&
                             items[i].Contains("/") &&
                             items[i].Contains("./") == false)
                    {
                        folderName = items[i].Substring(1);
                        isFolder   = true;
                    }
                    else if (isFolder == true &&
                             items[i].Contains("  ") &&
                             items[i].Contains("[file]"))
                    {
                        var end = items[i].IndexOf(" [file]");
                        filesToDelete.Add(Path.Combine(folderName, items[i].Substring(2, end - 2)));
                    }
                    else
                    {
                        continue;
                    }
                }

                foreach (var item in filesToDelete)
                {
                    if (item.Contains("Data/") ||
                        item.Contains("Documents/"))
                    {
                        continue;
                    }

                    Console.WriteLine($"Deleting {item}");
                    await meadow.DeleteFileAsync(item, 0, cts.Token);
                }



                /*
                 * await meadowDH.DeployAppAsync("//Users//adrianstevens//Projects//Blink51Standard//Blink51Standard//bin//Debug//netstandard2.1//App.exe",
                 *  true, cts.Token);
                 *
                 * await meadowDH.MonoEnableAsync(cts.Token);
                 *
                 * meadow = meadowDH.MeadowDevice; //reference to keep alive
                 */
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Exception: {ex.Message}");
            }
        }