private UploadSolution ListupTargetFiles(DTE2 dte, OutputWindowPane pane) { ThreadHelper.ThrowIfNotOnUIThread(); var currCursor = Cursor.Current; Cursor.Current = Cursors.WaitCursor; // ソリューションアイテムへのアクセスはCOMベースになるため、UIスレッドで行うことにした(同期じゃないと面倒なため) var solution = dte.Solution; var solutionPath = solution.FullName; if (solution == null || solution.Count == 0 || string.IsNullOrWhiteSpace(solutionPath) || !File.Exists(solutionPath) || solution.Projects.Kind != EnvDTE.Constants.vsProjectsKindSolution) { pane.WriteLine($"ソリューションを開いていません。dte.Solution.FullName=\"{solutionPath}\""); return(null); } pane.WriteLine("すべてのファイルを保存しています。"); // すべて保存のコマンドを発行することで保存を行う dte.ExecuteCommand("File.SaveAll", ""); // ソリューションファイルを含むすべてのコピー対象アイテムをリストアップ var uploadSln = new UploadSolution(dte, pane); uploadSln.ListupUploadFiles(); Cursor.Current = currCursor; return(uploadSln); }
private void UploadSolution(UploadSolution uploadSln) { if (uploadSln.IsExecute) { // 非同期に処理するけど待たない var task = Task.Run(uploadSln.UploadAllFilesAsync); } }