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}"); } }