private void AddReference() { var ofd = new SWF.OpenFileDialog { Filter = "DLL|*.dll", Multiselect = true }; if (ofd.ShowDialog() == SWF.DialogResult.OK) { if (Path.GetDirectoryName(ofd.FileName).Contains(AppDomain.CurrentDomain.BaseDirectory.Trim('\\'))) { _dialogService.ShowMessage("Please do not add files in the installation directory!", MessageButton.OK, MessageType.Warning); return; } foreach (var selectedName in ofd.FileNames) { var fileName = Path.GetFileName(selectedName); var targetFileName = AppDomain.CurrentDomain.BaseDirectory + fileName; var reference = References.FirstOrDefault(r => string.Equals(r.FileName, fileName, StringComparison.OrdinalIgnoreCase)); if (reference != null) { var result = ButtonResult.Yes; var msg = string.Format("{0}\n\nThis file already exists.\nDo you want to replace it?", fileName); _dialogService.ShowMessage(msg, MessageButton.YesNo, MessageType.Question, r => { result = r.Result; }); if (result != ButtonResult.Yes) { continue; } if (FileHelper.Exists(targetFileName)) { File.Delete(targetFileName); } References.Remove(reference); _appData.Config.References.Remove(fileName); } try { File.Copy(selectedName, targetFileName, true); References.Add(new ReferenceViewModel(fileName)); _appData.Config.References.Add(fileName); } catch (Exception ex) { var msg = string.Format("{0}\n\nAdd failed: {1}.\nPlease try again!", fileName, ex.Message); _dialogService.ShowMessage(msg, MessageButton.OK, MessageType.Error); } } RemoveRefCommand.RaiseCanExecuteChanged(); } }
private void RemoveReference() { for (int i = 0; i < References.Count; i++) { var r = References[i]; if (r.IsSelected) { References.RemoveAt(i); _appData.Config.References.RemoveAll(rf => rf == r.FileName); var filePath = AppDomain.CurrentDomain.BaseDirectory + r.FileName; if (FileHelper.Exists(filePath)) { File.Delete(filePath); } i--; } } RemoveRefCommand.RaiseCanExecuteChanged(); }
private void RefSelectionChanged() { RemoveRefCommand.RaiseCanExecuteChanged(); }