Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorDavid Karlaš <david.karlas@xamarin.com>2015-10-12 22:07:36 +0300
committerDavid Karlaš <david.karlas@xamarin.com>2015-10-12 22:07:47 +0300
commitac0fb9e5c67daa602a8804c820cf3b71a37cbc43 (patch)
tree26759cb8abb92a12a2d91cd69900f2701491547a /main
parent3416775f406bcce53052b4ca88c7fa6f38cfdee6 (diff)
Bug 33395 - [Roslyn] NuGet package license warning not shown in status bar
Diffstat (limited to 'main')
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeDotNetProject.cs5
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeProject.cs4
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableMonoDevelopProjectSystem.cs4
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IProject.cs3
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectExtensions.cs8
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectProxy.cs6
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/SharpDevelopProjectSystem.cs65
7 files changed, 61 insertions, 34 deletions
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeDotNetProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeDotNetProject.cs
index 6f0aeca6d7..745d8b8e7f 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeDotNetProject.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeDotNetProject.cs
@@ -30,6 +30,7 @@ using MonoDevelop.Core;
using MonoDevelop.Core.Assemblies;
using MonoDevelop.Projects;
using System.Linq;
+using System.Threading.Tasks;
namespace MonoDevelop.PackageManagement.Tests.Helpers
{
@@ -81,10 +82,10 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
public Action SaveAction = () => { };
- public override void Save ()
+ public override async Task SaveAsync ()
{
SaveAction ();
- base.Save ();
+ await base.SaveAsync ();
ReferencesWhenSavedCount = References.Count;
FilesAddedWhenSavedCount = FilesAdded.Count;
FilesInProjectWhenSavedCount = Files.Count;
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeProject.cs
index cdab5a07b6..7688c84393 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeProject.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeProject.cs
@@ -28,6 +28,7 @@ using System;
using System.Collections;
using MonoDevelop.Core;
using System.Collections.Generic;
+using System.Threading.Tasks;
namespace MonoDevelop.PackageManagement.Tests.Helpers
{
@@ -58,9 +59,10 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
public bool IsSaved;
- public virtual void Save ()
+ public virtual Task SaveAsync ()
{
IsSaved = true;
+ return Task.FromResult (0);
}
public IEnumerable<string> FlavorGuids {
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableMonoDevelopProjectSystem.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableMonoDevelopProjectSystem.cs
index 708e46f146..3c0ff38bdf 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableMonoDevelopProjectSystem.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableMonoDevelopProjectSystem.cs
@@ -28,6 +28,7 @@ using System;
using System.IO;
using ICSharpCode.PackageManagement;
using MonoDevelop.Ide;
+using System.Threading.Tasks;
namespace MonoDevelop.PackageManagement.Tests.Helpers
{
@@ -48,6 +49,7 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
public FileNameAndProjectName FileNameAndProjectNamePassedToLogAddedFileToProject;
public static Action<MessageHandler> GuiSyncDispatcher = handler => handler.Invoke ();
+ public static Func<Func<Task>,Task> GuiSyncDispatcherFunc = handler => handler.Invoke();
public TestableMonoDevelopProjectSystem (IDotNetProject project)
: this (
@@ -65,7 +67,7 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
IPackageManagementProjectService projectService,
PackageManagementEvents packageManagementEvents,
FakeLogger logger)
- : base (project, fileService, projectService, packageManagementEvents, GuiSyncDispatcher)
+ : base (project, fileService, projectService, packageManagementEvents, GuiSyncDispatcher, GuiSyncDispatcherFunc)
{
FakeFileService = (FakeFileService)fileService;
FakeProjectService = (FakePackageManagementProjectService)projectService;
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IProject.cs
index 4455e85c76..fbee052c60 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IProject.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IProject.cs
@@ -28,6 +28,7 @@ using System;
using System.Collections;
using MonoDevelop.Core;
using System.Collections.Generic;
+using System.Threading.Tasks;
namespace MonoDevelop.PackageManagement
{
@@ -40,7 +41,7 @@ namespace MonoDevelop.PackageManagement
IDictionary ExtendedProperties { get; }
IEnumerable<string> FlavorGuids { get; }
- void Save ();
+ Task SaveAsync ();
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectExtensions.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectExtensions.cs
index a75fe987ca..da5947d0c0 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectExtensions.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectExtensions.cs
@@ -30,15 +30,17 @@ using System;
using MonoDevelop.Core.ProgressMonitoring;
using MonoDevelop.Projects;
using MonoDevelop.Ide;
+using MonoDevelop.Core;
+using System.Threading.Tasks;
namespace ICSharpCode.PackageManagement
{
public static class ProjectExtensions
{
- public static void Save(this Project project)
+ public static Task SaveAsync(this Project project)
{
- DispatchService.GuiSyncDispatch(() => {
- IdeApp.ProjectOperations.SaveAsync(project);
+ return Runtime.RunInMainThread (async () => {
+ await IdeApp.ProjectOperations.SaveAsync (project);
});
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectProxy.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectProxy.cs
index 763b683343..ad07b60d31 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectProxy.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectProxy.cs
@@ -30,6 +30,8 @@ using ICSharpCode.PackageManagement;
using MonoDevelop.Core;
using MonoDevelop.Projects;
using System.Collections.Generic;
+using MonoDevelop.Ide;
+using System.Threading.Tasks;
namespace MonoDevelop.PackageManagement
{
@@ -66,9 +68,9 @@ namespace MonoDevelop.PackageManagement
get { return project.FlavorGuids; }
}
- public void Save ()
+ public async Task SaveAsync ()
{
- project.Save ();
+ await project.SaveAsync ();
}
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/SharpDevelopProjectSystem.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/SharpDevelopProjectSystem.cs
index 5dc671f707..80ac36fa0b 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/SharpDevelopProjectSystem.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/SharpDevelopProjectSystem.cs
@@ -29,6 +29,7 @@
using System;
using System.IO;
using System.Runtime.Versioning;
+using System.Threading.Tasks;
using MonoDevelop.Core;
using MonoDevelop.Ide;
@@ -46,6 +47,7 @@ namespace ICSharpCode.PackageManagement
IPackageManagementFileService fileService;
IPackageManagementEvents packageManagementEvents;
Action<MessageHandler> guiSyncDispatcher;
+ Func<Func<Task>,Task> guiSyncDispatcherFunc;
public SharpDevelopProjectSystem(DotNetProject project)
: this (
@@ -53,7 +55,8 @@ namespace ICSharpCode.PackageManagement
new PackageManagementFileService (),
PackageManagementServices.ProjectService,
PackageManagementServices.PackageManagementEvents,
- DispatchService.GuiSyncDispatch)
+ DispatchService.GuiSyncDispatch,
+ GuiSyncDispatchWithException)
{
}
@@ -62,13 +65,15 @@ namespace ICSharpCode.PackageManagement
IPackageManagementFileService fileService,
IPackageManagementProjectService projectService,
IPackageManagementEvents packageManagementEvents,
- Action<MessageHandler> guiSyncDispatcher)
+ Action<MessageHandler> guiSyncDispatcher,
+ Func<Func<Task>,Task> guiSyncDispatcherFunc)
: base (AppendTrailingSlashToDirectory (project.BaseDirectory))
{
this.project = project;
this.fileService = fileService;
this.packageManagementEvents = packageManagementEvents;
this.guiSyncDispatcher = guiSyncDispatcher;
+ this.guiSyncDispatcherFunc = guiSyncDispatcherFunc;
}
static string AppendTrailingSlashToDirectory(string directory)
@@ -110,10 +115,10 @@ namespace ICSharpCode.PackageManagement
public void AddReference(string referencePath, Stream stream)
{
- GuiSyncDispatch (() => {
+ GuiSyncDispatch (async () => {
ProjectReference assemblyReference = CreateReference (referencePath);
packageManagementEvents.OnReferenceAdding (assemblyReference);
- AddReferenceToProject (assemblyReference);
+ await AddReferenceToProject (assemblyReference);
});
}
@@ -123,10 +128,10 @@ namespace ICSharpCode.PackageManagement
return ProjectReference.CreateAssemblyFileReference (fullPath);
}
- void AddReferenceToProject(ProjectReference assemblyReference)
+ async Task AddReferenceToProject(ProjectReference assemblyReference)
{
project.References.Add (assemblyReference);
- project.Save ();
+ await project.SaveAsync ();
LogAddedReferenceToProject(assemblyReference);
}
@@ -203,12 +208,12 @@ namespace ICSharpCode.PackageManagement
public void RemoveReference(string name)
{
- GuiSyncDispatch (() => {
+ GuiSyncDispatch (async () => {
ProjectReference referenceProjectItem = FindReference (name);
if (referenceProjectItem != null) {
packageManagementEvents.OnReferenceRemoving (referenceProjectItem);
project.References.Remove (referenceProjectItem);
- project.Save ();
+ await project.SaveAsync ();
LogRemovedReferenceFromProject (referenceProjectItem);
}
});
@@ -253,7 +258,7 @@ namespace ICSharpCode.PackageManagement
public override void AddFile(string path, Stream stream)
{
PhysicalFileSystemAddFile(path, stream);
- GuiSyncDispatch (() => AddFileToProject (path));
+ GuiSyncDispatch (async () => await AddFileToProject (path));
}
protected virtual void PhysicalFileSystemAddFile(string path, Stream stream)
@@ -264,7 +269,7 @@ namespace ICSharpCode.PackageManagement
public override void AddFile(string path, Action<Stream> writeToStream)
{
PhysicalFileSystemAddFile (path, writeToStream);
- GuiSyncDispatch (() => AddFileToProject (path));
+ GuiSyncDispatch (async () => await AddFileToProject (path));
}
protected virtual void PhysicalFileSystemAddFile (string path, Action<Stream> writeToStream)
@@ -272,10 +277,10 @@ namespace ICSharpCode.PackageManagement
base.AddFile(path, writeToStream);
}
- void AddFileToProject(string path)
+ async Task AddFileToProject(string path)
{
if (ShouldAddFileToProject(path)) {
- AddFileProjectItemToProject(path);
+ await AddFileProjectItemToProject(path);
}
OnFileChanged (path);
LogAddedFileToProject(path);
@@ -305,11 +310,11 @@ namespace ICSharpCode.PackageManagement
});
}
- void AddFileProjectItemToProject(string path)
+ async Task AddFileProjectItemToProject(string path)
{
ProjectFile fileItem = CreateFileProjectItem (path);
project.AddFile (fileItem);
- project.Save ();
+ await project.SaveAsync ();
}
ProjectFile CreateFileProjectItem(string path)
@@ -334,21 +339,21 @@ namespace ICSharpCode.PackageManagement
public override void DeleteDirectory(string path, bool recursive)
{
- GuiSyncDispatch (() => {
+ GuiSyncDispatch (async () => {
string directory = GetFullPath (path);
fileService.RemoveDirectory (directory);
- project.Save ();
+ await project.SaveAsync ();
LogDeletedDirectory (path);
});
}
public override void DeleteFile(string path)
{
- GuiSyncDispatch (() => {
+ GuiSyncDispatch (async () => {
string fileName = GetFullPath (path);
project.Files.Remove (fileName);
fileService.RemoveFile (fileName);
- project.Save ();
+ await project.SaveAsync ();
LogDeletedFileInfo (path);
});
}
@@ -381,9 +386,9 @@ namespace ICSharpCode.PackageManagement
public void AddFrameworkReference(string name)
{
- GuiSyncDispatch (() => {
+ GuiSyncDispatch (async () => {
ProjectReference assemblyReference = CreateGacReference (name);
- AddReferenceToProject (assemblyReference);
+ await AddReferenceToProject (assemblyReference);
});
}
@@ -399,11 +404,11 @@ namespace ICSharpCode.PackageManagement
public void AddImport(string targetPath, ProjectImportLocation location)
{
- GuiSyncDispatch (() => {
+ GuiSyncDispatch (async () => {
string relativeTargetPath = GetRelativePath (targetPath);
string condition = GetCondition (relativeTargetPath);
project.AddImportIfMissing (relativeTargetPath, condition);
- project.Save ();
+ await project.SaveAsync ();
});
}
@@ -419,14 +424,14 @@ namespace ICSharpCode.PackageManagement
public void RemoveImport(string targetPath)
{
- GuiSyncDispatch (() => {
+ GuiSyncDispatch (async () => {
string relativeTargetPath = GetRelativePath (targetPath);
project.RemoveImport (relativeTargetPath);
RemoveImportWithForwardSlashes (targetPath);
using (var updater = new EnsureNuGetPackageBuildImportsTargetUpdater ()) {
updater.RemoveImport (relativeTargetPath);
- project.Save ();
+ await project.SaveAsync ();
}
packageManagementEvents.OnImportRemoved (project, relativeTargetPath);
@@ -465,5 +470,17 @@ namespace ICSharpCode.PackageManagement
{
guiSyncDispatcher (() => action ());
}
+
+ static Task GuiSyncDispatchWithException (Func<Task> func)
+ {
+ if (DispatchService.IsGuiThread)
+ throw new InvalidOperationException ("GuiSyncDispatch called from GUI thread");
+ return Runtime.RunInMainThread (func);
+ }
+
+ void GuiSyncDispatch (Func<Task> func)
+ {
+ guiSyncDispatcherFunc (func).Wait ();
+ }
}
}