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/src
diff options
context:
space:
mode:
authorMatt Ward <matt.ward@xamarin.com>2017-07-04 17:32:25 +0300
committerMatt Ward <matt.ward@xamarin.com>2017-07-05 13:15:50 +0300
commit3789c4f826874150d04af34d4fc20b51daa246d8 (patch)
tree2fb2bd768300edbda996fc1033539ab71c5ffa30 /main/src
parenta44a77088471cc14e159b687117711191ecd7802 (diff)
[NuGet] Update to NuGet 4.3.0.4199
Diffstat (limited to 'main/src')
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetSettings.cs12
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableMonoDevelopProjectSystem.cs10
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj13
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopProjectSystemTests.cs109
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageSpecCreatorTests.cs27
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml1
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj31
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs13
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopBuildIntegratedRestorer.cs31
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProject.cs51
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProjectSystem.cs73
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopNuGetProjectFactory.cs6
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopSolutionManager.cs11
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/NuGetProjectExtensions.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageCompatibilityNuGetProject.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementLogger.cs47
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageReferenceNuGetProject.cs13
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSpecCreator.cs15
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectJsonBuildIntegratedNuGetProject.cs134
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectJsonBuildIntegratedProjectSystem.cs258
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/NuGet.Commands/MSBuildRestoreResult.cs16
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/NuGet.Credentials/CredentialService.cs47
-rw-r--r--main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests.csproj8
-rw-r--r--main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests/AddPlatformImplementationTests.cs7
-rw-r--r--main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests/ProjectTemplateTests.cs7
-rw-r--r--main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.csproj16
26 files changed, 458 insertions, 502 deletions
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetSettings.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetSettings.cs
index 86d485ad5b..725ea709ef 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetSettings.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetSettings.cs
@@ -77,8 +77,13 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
throw new NotImplementedException ();
}
+ public Dictionary<string, string> Values = new Dictionary<string, string> ();
+
public string GetValue (string section, string key, bool isPath = false)
{
+ string value = null;
+ if (Values.TryGetValue (GetKey (section, key), out value))
+ return value;
return null;
}
@@ -89,7 +94,7 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
public void SetValue (string section, string key, string value)
{
- throw new NotImplementedException ();
+ Values [GetKey (section, key)] = value;
}
public void SetValues (string section, IReadOnlyList<SettingValue> values)
@@ -101,6 +106,11 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
{
throw new NotImplementedException ();
}
+
+ static string GetKey (string section, string key)
+ {
+ return $"{section}-{key}";
+ }
}
}
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 cd658a6425..35e7b56720 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
@@ -49,6 +49,7 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
public static Action<Action> GuiSyncDispatcher = handler => handler.Invoke ();
public static Func<Func<Task>,Task> GuiSyncDispatcherFunc = handler => handler.Invoke();
+ public static Func<Func<Task<bool>>,Task<bool>> GuiSyncDispatcherReturnBoolFunc = handler => handler.Invoke ();
public TestableMonoDevelopProjectSystem (IDotNetProject project)
: this (
@@ -64,7 +65,14 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
FakeNuGetProjectContext context,
IPackageManagementFileService fileService,
PackageManagementEvents packageManagementEvents)
- : base (project, context, fileService, packageManagementEvents, GuiSyncDispatcher, GuiSyncDispatcherFunc)
+ : base (
+ project,
+ context,
+ fileService,
+ packageManagementEvents,
+ GuiSyncDispatcher,
+ GuiSyncDispatcherFunc,
+ GuiSyncDispatcherReturnBoolFunc)
{
FakeNuGetProjectContext = context;
FakeFileService = (FakeFileService)fileService;
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj
index 6d12c04bbb..6f3cee0b9a 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj
@@ -60,9 +60,6 @@
<Reference Include="NuGet.Frameworks">
<HintPath>..\..\..\..\external\nuget-binary\NuGet.Frameworks.dll</HintPath>
</Reference>
- <Reference Include="NuGet.Packaging.Core.Types">
- <HintPath>..\..\..\..\external\nuget-binary\NuGet.Packaging.Core.Types.dll</HintPath>
- </Reference>
<Reference Include="NuGet.Packaging.Core">
<HintPath>..\..\..\..\external\nuget-binary\NuGet.Packaging.Core.dll</HintPath>
</Reference>
@@ -78,11 +75,8 @@
<Reference Include="NuGet.PackageManagement">
<HintPath>..\..\..\..\external\nuget-binary\NuGet.PackageManagement.dll</HintPath>
</Reference>
- <Reference Include="NuGet.Protocol.Core.Types">
- <HintPath>..\..\..\..\external\nuget-binary\NuGet.Protocol.Core.Types.dll</HintPath>
- </Reference>
- <Reference Include="NuGet.ProjectManagement">
- <HintPath>..\..\..\..\external\nuget-binary\NuGet.ProjectManagement.dll</HintPath>
+ <Reference Include="NuGet.Protocol">
+ <HintPath>..\..\..\..\external\nuget-binary\NuGet.Protocol.dll</HintPath>
</Reference>
<Reference Include="NuGet.Common">
<HintPath>..\..\..\..\external\nuget-binary\NuGet.Common.dll</HintPath>
@@ -103,9 +97,6 @@
<HintPath>..\..\..\..\build\bin\System.Collections.Immutable.dll</HintPath>
<Private>False</Private>
</Reference>
- <Reference Include="NuGet.RuntimeModel">
- <HintPath>..\..\..\..\external\nuget-binary\NuGet.RuntimeModel.dll</HintPath>
- </Reference>
<Reference Include="NuGet.Commands">
<HintPath>..\..\..\..\external\nuget-binary\NuGet.Commands.dll</HintPath>
</Reference>
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopProjectSystemTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopProjectSystemTests.cs
index 968957adb0..3ca4f1b314 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopProjectSystemTests.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopProjectSystemTests.cs
@@ -34,9 +34,7 @@ using MonoDevelop.Core.Assemblies;
using MonoDevelop.PackageManagement.Tests.Helpers;
using MonoDevelop.Projects;
using MonoDevelop.Projects.MSBuild;
-using NuGet.Packaging.Core;
using NuGet.ProjectManagement;
-using NuGet.Versioning;
using NUnit.Framework;
namespace MonoDevelop.PackageManagement.Tests
@@ -315,104 +313,104 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public void ReferenceExists_ProjectHasReferenceAndFullPathToAssemblyPassedToMethod_ReturnsTrue ()
+ public async Task ReferenceExists_ProjectHasReferenceAndFullPathToAssemblyPassedToMethod_ReturnsTrue ()
{
CreateTestProject (@"D:\Projects\Test\MyProject.csproj");
ProjectHelper.AddReference (project, "MyAssembly", @"d:\Projects\Test\MyAssembly.dll".ToNativePath ());
CreateProjectSystem (project);
string fileName = @"D:\Projects\Test\MyAssembly.dll".ToNativePath ();
- bool result = projectSystem.ReferenceExists (fileName);
+ bool result = await projectSystem.ReferenceExistsAsync (fileName);
Assert.IsTrue (result);
}
[Test]
- public void ReferenceExists_ProjectHasNoReferences_ReturnsFalse ()
+ public async Task ReferenceExists_ProjectHasNoReferences_ReturnsFalse ()
{
CreateTestProject ();
CreateProjectSystem (project);
string fileName = @"D:\Projects\Test\MyAssembly.dll".ToNativePath ();
- bool result = projectSystem.ReferenceExists (fileName);
+ bool result = await projectSystem.ReferenceExistsAsync (fileName);
Assert.IsFalse (result);
}
[Test]
- public void ReferenceExists_ProjectReferenceNameHasDifferentCase_ReturnsTrue ()
+ public async Task ReferenceExistsAsync_ProjectReferenceNameHasDifferentCase_ReturnsTrue ()
{
CreateTestProject (@"D:\Projects\Test\MyProject.csproj");
ProjectHelper.AddReference (project, "myassembly", @"d:\Projects\Test\myassembly.dll".ToNativePath ());
CreateProjectSystem (project);
string fileName = @"D:\Projects\Test\MYASSEMBLY.dll".ToNativePath ();
- bool result = projectSystem.ReferenceExists (fileName);
+ bool result = await projectSystem.ReferenceExistsAsync (fileName);
Assert.IsTrue (result);
}
[Test]
- public void ReferenceExists_ReferenceNamePassedIsInProjectAndIsReferenceNameWithNoFileExtension_ReturnsTrue ()
+ public async Task ReferenceExistsAsync_ReferenceNamePassedIsInProjectAndIsReferenceNameWithNoFileExtension_ReturnsTrue ()
{
CreateTestProject ();
ProjectHelper.AddGacReference (project, "System.ComponentModel.Composition");
CreateProjectSystem (project);
string referenceName = "System.ComponentModel.Composition";
- bool result = projectSystem.ReferenceExists (referenceName);
+ bool result = await projectSystem.ReferenceExistsAsync (referenceName);
Assert.IsTrue (result);
}
[Test]
- public void ReferenceExists_ReferenceIsInProjectAndProjectReferenceSearchedForHasExeFileExtension_ReturnsTrue ()
+ public async Task ReferenceExistsAsync_ReferenceIsInProjectAndProjectReferenceSearchedForHasExeFileExtension_ReturnsTrue ()
{
CreateTestProject (@"D:\Projects\Test\MyProject.csproj");
ProjectHelper.AddReference (project, "myassembly", @"d:\Projects\Test\myassembly.exe".ToNativePath ());
CreateProjectSystem (project);
string fileName = @"D:\Projects\Test\myassembly.exe".ToNativePath ();
- bool result = projectSystem.ReferenceExists (fileName);
+ bool result = await projectSystem.ReferenceExistsAsync (fileName);
Assert.IsTrue (result);
}
[Test]
- public void ReferenceExists_ReferenceIsInProjectAndProjectReferenceSearchedForHasExeFileExtensionInUpperCase_ReturnsTrue ()
+ public async Task ReferenceExistsAsync_ReferenceIsInProjectAndProjectReferenceSearchedForHasExeFileExtensionInUpperCase_ReturnsTrue ()
{
CreateTestProject (@"D:\Projects\Test\MyProject.csproj");
ProjectHelper.AddReference (project, "myassembly", @"d:\Projects\Test\myassembly.exe".ToNativePath ());
CreateProjectSystem (project);
string fileName = @"D:\Projects\Test\MYASSEMBLY.EXE".ToNativePath ();
- bool result = projectSystem.ReferenceExists (fileName);
+ bool result = await projectSystem.ReferenceExistsAsync (fileName);
Assert.IsTrue (result);
}
[Test]
- public void AddReference_AddReferenceToNUnitFramework_ProjectIsSavedAfterAddingReference ()
+ public async Task AddReferenceAsync_AddReferenceToNUnitFramework_ProjectIsSavedAfterAddingReference ()
{
CreateTestProject ();
CreateProjectSystem (project);
project.IsSaved = false;
string fileName = @"d:\projects\packages\nunit\nunit.framework.dll".ToNativePath ();
- projectSystem.AddReference (fileName);
+ await projectSystem.AddReferenceAsync (fileName);
Assert.AreEqual (1, project.ReferencesWhenSavedCount);
}
[Test]
- public void AddReference_AddReferenceToNUnitFramework_ReferenceAddedToProject ()
+ public async Task AddReferenceAsync_AddReferenceToNUnitFramework_ReferenceAddedToProject ()
{
CreateTestProject ();
CreateProjectSystem (project);
project.IsSaved = false;
string fileName = @"d:\projects\packages\nunit\nunit.framework.dll".ToNativePath ();
- projectSystem.AddReference (fileName);
+ await projectSystem.AddReferenceAsync (fileName);
ProjectReference actualReference = project.References [0];
Assert.AreEqual ("nunit.framework", actualReference.Reference);
@@ -420,14 +418,14 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public void AddReference_ReferenceFileNameIsRelativePath_ReferenceAddedToProject ()
+ public async Task AddReferenceAsync_ReferenceFileNameIsRelativePath_ReferenceAddedToProject ()
{
CreateTestProject (@"d:\projects\MyProject\MyProject.csproj");
CreateProjectSystem (project);
project.IsSaved = false;
string relativeFileName = @"packages\nunit\nunit.framework.dll".ToNativePath ();
string fullFileName = @"d:\projects\MyProject\packages\nunit\nunit.framework.dll".ToNativePath ();
- projectSystem.AddReference (relativeFileName);
+ await projectSystem.AddReferenceAsync (relativeFileName);
ProjectReference actualReference = project.References [0];
Assert.AreEqual ("nunit.framework", actualReference.Reference);
@@ -435,14 +433,14 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public void AddReference_AddReferenceToNUnitFramework_AddingReferenceIsLogged ()
+ public async Task AddReferenceAsync_AddReferenceToNUnitFramework_AddingReferenceIsLogged ()
{
CreateTestProject ();
CreateProjectSystem (project);
project.Name = "MyTestProject";
string fileName = @"d:\projects\packages\nunit\nunit.framework.dll".ToNativePath ();
- projectSystem.AddReference (fileName);
+ await projectSystem.AddReferenceAsync (fileName);
var expectedReferenceAndProjectName = new ReferenceAndProjectName () {
Reference = "nunit.framework",
@@ -453,14 +451,14 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public void RemoveReference_ReferenceBeingRemovedHasFileExtension_ReferenceRemovedFromProject ()
+ public async Task RemoveReferenceAsync_ReferenceBeingRemovedHasFileExtension_ReferenceRemovedFromProject ()
{
CreateTestProject (@"d:\projects\MyProject\MyProject.csproj");
string fileName = @"d:\projects\MyProject\packages\nunit\nunit.framework.dll".ToNativePath ();
ProjectHelper.AddReference (project, fileName);
CreateProjectSystem (project);
- projectSystem.RemoveReference (fileName);
+ await projectSystem.RemoveReferenceAsync (fileName);
ProjectReference referenceItem = ProjectHelper.GetReference (project, "nunit.framework");
@@ -468,14 +466,14 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public void RemoveReference_ReferenceCaseAddedToProjectDifferentToReferenceNameBeingRemoved_ReferenceRemovedFromProject ()
+ public async Task RemoveReferenceAsync_ReferenceCaseAddedToProjectDifferentToReferenceNameBeingRemoved_ReferenceRemovedFromProject ()
{
CreateTestProject (@"d:\projects\MyProject\MyProject.csproj");
ProjectHelper.AddReference (project, @"d:\projects\MyProject\packages\nunit\nunit.framework.dll".ToNativePath ());
CreateProjectSystem (project);
string fileName = @"NUNIT.FRAMEWORK.DLL";
- projectSystem.RemoveReference (fileName);
+ await projectSystem.RemoveReferenceAsync (fileName);
ProjectReference referenceItem = ProjectHelper.GetReference (project, "nunit.framework");
@@ -483,30 +481,34 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public void RemoveReference_ProjectHasNoReference_ArgumentNullExceptionNotThrown ()
+ public async Task RemoveReferenceAsync_ProjectHasNoReference_ArgumentNullExceptionNotThrown ()
{
CreateTestProject ();
CreateProjectSystem (project);
string fileName = @"NUNIT.FRAMEWORK.DLL";
- Assert.DoesNotThrow (() => projectSystem.RemoveReference (fileName));
+ try {
+ await projectSystem.RemoveReferenceAsync (fileName);
+ } catch (Exception ex) {
+ Assert.Fail ("Exception thrown: {0}", ex);
+ }
}
[Test]
- public void RemoveReference_ReferenceExistsInProject_ProjectIsSavedAfterReferenceRemoved ()
+ public async Task RemoveReferenceAsync_ReferenceExistsInProject_ProjectIsSavedAfterReferenceRemoved ()
{
CreateTestProject (@"d:\projects\MyProject\MyProject.csproj");
string fileName = @"d:\projects\packages\nunit\nunit.framework.dll".ToNativePath ();
ProjectHelper.AddReference (project, fileName);
CreateProjectSystem (project);
- projectSystem.RemoveReference (fileName);
+ await projectSystem.RemoveReferenceAsync (fileName);
Assert.AreEqual (0, project.ReferencesWhenSavedCount);
}
[Test]
- public void RemoveReference_ReferenceBeingRemovedHasFileExtension_ReferenceRemovalIsLogged ()
+ public async Task RemoveReferenceAsync_ReferenceBeingRemovedHasFileExtension_ReferenceRemovalIsLogged ()
{
CreateTestProject (@"d:\projects\MyProject\MyProject.csproj");
project.Name = "MyTestProject";
@@ -514,7 +516,7 @@ namespace MonoDevelop.PackageManagement.Tests
ProjectHelper.AddReference (project, fileName);
CreateProjectSystem (project);
- projectSystem.RemoveReference (fileName);
+ await projectSystem.RemoveReferenceAsync (fileName);
var expectedReferenceAndProjectName = new ReferenceAndProjectName {
Reference = "nunit.framework",
@@ -813,12 +815,12 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public void AddFrameworkReference_SystemXmlToBeAdded_ReferenceAddedToProject ()
+ public async Task AddFrameworkReferenceAsync_SystemXmlToBeAdded_ReferenceAddedToProject ()
{
CreateTestProject ();
CreateProjectSystem (project);
- projectSystem.AddFrameworkReference ("System.Xml", "MyPackage");
+ await projectSystem.AddFrameworkReferenceAsync ("System.Xml", "MyPackage");
ProjectReference referenceItem = ProjectHelper.GetReference (project, "System.Xml");
@@ -827,12 +829,12 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public void AddFrameworkReference_SystemXmlToBeAdded_ProjectIsSaved ()
+ public async Task AddFrameworkReferenceAsync_SystemXmlToBeAdded_ProjectIsSaved ()
{
CreateTestProject ();
CreateProjectSystem (project);
- projectSystem.AddFrameworkReference ("System.Xml", "MyPackage");
+ await projectSystem.AddFrameworkReferenceAsync ("System.Xml", "MyPackage");
bool saved = project.IsSaved;
@@ -840,13 +842,13 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public void AddFrameworkReference_SystemXmlToBeAdded_AddedReferenceIsLogged ()
+ public async Task AddFrameworkReferenceAsync_SystemXmlToBeAdded_AddedReferenceIsLogged ()
{
CreateTestProject ();
CreateProjectSystem (project);
project.Name = "MyTestProject";
- projectSystem.AddFrameworkReference ("System.Xml", "MyPackage");
+ await projectSystem.AddFrameworkReferenceAsync ("System.Xml", "MyPackage");
var expectedReferenceAndProjectName = new ReferenceAndProjectName () {
Reference = "System.Xml",
@@ -1064,7 +1066,7 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public void ReferenceExists_ReferenceIsInProjectButIncludesAssemblyVersion_ReturnsTrue ()
+ public async Task ReferenceExistsAsync_ReferenceIsInProjectButIncludesAssemblyVersion_ReturnsTrue ()
{
CreateTestProject ();
string include = "MyAssembly, Version=0.1.0.0, Culture=neutral, PublicKeyToken=8cc8392e8503e009";
@@ -1072,13 +1074,13 @@ namespace MonoDevelop.PackageManagement.Tests
CreateProjectSystem (project);
string fileName = @"D:\Projects\Test\myassembly.dll".ToNativePath ();
- bool result = projectSystem.ReferenceExists (fileName);
+ bool result = await projectSystem.ReferenceExistsAsync (fileName);
Assert.IsTrue (result);
}
[Test]
- public void RemoveReference_ReferenceBeingRemovedHasFileExtensionAndProjectHasReferenceIncludingAssemblyVersion_ReferenceRemovedFromProject ()
+ public async Task RemoveReferenceAsync_ReferenceBeingRemovedHasFileExtensionAndProjectHasReferenceIncludingAssemblyVersion_ReferenceRemovedFromProject ()
{
CreateTestProject ();
string include = "nunit.framework, Version=2.6.2.0, Culture=neutral, PublicKeyToken=8cc8392e8503e009";
@@ -1086,7 +1088,7 @@ namespace MonoDevelop.PackageManagement.Tests
CreateProjectSystem (project);
string fileName = @"d:\projects\packages\nunit\nunit.framework.dll".ToNativePath ();
- projectSystem.RemoveReference (fileName);
+ await projectSystem.RemoveReferenceAsync (fileName);
ProjectReference referenceItem = ProjectHelper.GetReference (project, "nunit.framework");
Assert.IsNull (referenceItem);
@@ -1172,7 +1174,7 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public void AddReference_AddReferenceToNUnitFramework_ReferenceAddingEventIsFired ()
+ public async Task AddReferenceAsync_AddReferenceToNUnitFramework_ReferenceAddingEventIsFired ()
{
CreateTestProject ();
CreateProjectSystem (project);
@@ -1182,14 +1184,14 @@ namespace MonoDevelop.PackageManagement.Tests
};
string fileName = @"d:\projects\packages\nunit\nunit.framework.dll".ToNativePath ();
- projectSystem.AddReference (fileName);
+ await projectSystem.AddReferenceAsync (fileName);
Assert.AreEqual (fileName, referenceBeingAdded.HintPath.ToString ());
Assert.IsTrue (referenceBeingAdded.LocalCopy);
}
[Test]
- public void RemoveReference_RemoveReferenceToNUnitFramework_ReferenceRemovingEventIsFired ()
+ public async Task RemoveReferenceAsync_RemoveReferenceToNUnitFramework_ReferenceRemovingEventIsFired ()
{
CreateTestProject ();
CreateProjectSystem (project);
@@ -1202,7 +1204,7 @@ namespace MonoDevelop.PackageManagement.Tests
projectIsSaved = project.IsSaved;
};
- projectSystem.RemoveReference (fileName);
+ await projectSystem.RemoveReferenceAsync (fileName);
Assert.AreEqual (fileName, referenceBeingRemoved.HintPath.ToString ());
Assert.IsFalse (projectIsSaved);
@@ -1240,21 +1242,6 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public async Task ExecuteScriptAsync_InitPowerShellScript_WarningLogged ()
- {
- CreateTestProject ();
- CreateProjectSystem (project);
- string scriptPath = @"init.ps1".ToNativePath ();
- var package = new PackageIdentity ("Test", new NuGetVersion ("1.2"));
- string expectedLogMessage = "WARNING: Test Package contains PowerShell script 'init.ps1' which will not be run.";
-
- await projectSystem.ExecuteScriptAsync (package, null, scriptPath, false);
-
- Assert.AreEqual (MessageLevel.Info, projectSystem.FakeNuGetProjectContext.LastLogLevel);
- Assert.AreEqual (expectedLogMessage, projectSystem.FakeNuGetProjectContext.LastMessageLogged);
- }
-
- [Test]
public void GetDirectories_TwoDirectories_ReturnsTwoDirectories ()
{
CreateTestProject (@"d:\projects\MyProject\MyProject.csproj");
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageSpecCreatorTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageSpecCreatorTests.cs
index 767884bbab..bd2e4c9fe1 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageSpecCreatorTests.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageSpecCreatorTests.cs
@@ -28,11 +28,12 @@ using System.Linq;
using MonoDevelop.Core.Assemblies;
using MonoDevelop.PackageManagement.Tests.Helpers;
using MonoDevelop.Projects;
+using NuGet.Configuration;
+using NUnit.Framework;
using NuGet.Frameworks;
using NuGet.LibraryModel;
using NuGet.ProjectManagement;
using NuGet.ProjectModel;
-using NUnit.Framework;
namespace MonoDevelop.PackageManagement.Tests
{
@@ -44,11 +45,13 @@ namespace MonoDevelop.PackageManagement.Tests
FakeSolution solution;
PackageManagementEvents packageManagementEvents;
PackageManagementLogger logger;
+ FakeNuGetSettings settings;
void CreateProject (string name, string fileName = @"d:\projects\MyProject\MyProject.csproj")
{
packageManagementEvents = new PackageManagementEvents ();
logger = new PackageManagementLogger (packageManagementEvents);
+ settings = new FakeNuGetSettings ();
solution = new FakeSolution ();
project = new FakeDotNetProject (fileName.ToNativePath ());
project.ParentSolution = solution;
@@ -62,7 +65,8 @@ namespace MonoDevelop.PackageManagement.Tests
void CreatePackageSpec ()
{
- spec = PackageSpecCreator.CreatePackageSpec (project, logger);
+ var context = new DependencyGraphCacheContext (logger, settings);
+ spec = PackageSpecCreator.CreatePackageSpec (project, context);
}
void AddPackageReference (string id, string version)
@@ -90,6 +94,11 @@ namespace MonoDevelop.PackageManagement.Tests
project.AddPackageTargetFallback (packageTargetFallback);
}
+ void AddPackagesPath (string path)
+ {
+ settings.SetValue (SettingsUtility.ConfigSection, "globalPackagesFolder", path);
+ }
+
[Test]
public void CreatePackageSpec_NewProject_BaseIntermediatePathUsedForProjectAssetsJsonFile ()
{
@@ -297,5 +306,19 @@ namespace MonoDevelop.PackageManagement.Tests
Assert.AreEqual (".NETCoreApp,Version=v1.0", targetFramework.FrameworkName.ToString ());
Assert.AreEqual (0, targetFramework.ProjectReferences.Count);
}
+
+ [Test]
+ public void CreatePackageSpec_NewProject_RestoreMetadataHasPackagesPathTakenFromSettings ()
+ {
+ CreateProject ("MyProject", @"d:\projects\MyProject\MyProject.csproj");
+ project.BaseIntermediateOutputPath = @"d:\projects\MyProject\obj".ToNativePath ();
+ AddTargetFramework ("netcoreapp1.0");
+ string packagesPath = @"c:\users\test\packages".ToNativePath ();
+ AddPackagesPath (packagesPath);
+
+ CreatePackageSpec ();
+
+ Assert.AreEqual (packagesPath, spec.RestoreMetadata.PackagesPath);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml
index 58f649a2c4..3b548d5dcf 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml
@@ -3,7 +3,6 @@
<Runtime>
<Import assembly="MonoDevelop.PackageManagement.dll" />
<Import assembly="Microsoft.Web.XmlTransform.dll" />
- <Import assembly="NuGet.Packaging.Core.Types.dll" />
<Import assembly="NuGet.Packaging.dll" />
<Import assembly="NuGet.Frameworks.dll" />
</Runtime>
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
index c14285774d..ecc1b8ec8f 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
@@ -75,9 +75,6 @@
<Reference Include="NuGet.Frameworks">
<HintPath>..\..\..\external\nuget-binary\NuGet.Frameworks.dll</HintPath>
</Reference>
- <Reference Include="NuGet.Packaging.Core.Types">
- <HintPath>..\..\..\external\nuget-binary\NuGet.Packaging.Core.Types.dll</HintPath>
- </Reference>
<Reference Include="NuGet.Packaging.Core">
<HintPath>..\..\..\external\nuget-binary\NuGet.Packaging.Core.dll</HintPath>
</Reference>
@@ -89,38 +86,17 @@
<Reference Include="NuGet.Configuration">
<HintPath>..\..\..\external\nuget-binary\NuGet.Configuration.dll</HintPath>
</Reference>
- <Reference Include="NuGet.Protocol.Core.Types">
- <HintPath>..\..\..\external\nuget-binary\NuGet.Protocol.Core.Types.dll</HintPath>
- </Reference>
<Reference Include="System.Net.Http" />
- <Reference Include="NuGet.Protocol.Core.v3">
- <HintPath>..\..\..\external\nuget-binary\NuGet.Protocol.Core.v3.dll</HintPath>
- </Reference>
<Reference Include="System.IdentityModel" />
<Reference Include="System.Net.Http.WebRequest" />
<Reference Include="System.ServiceModel" />
- <Reference Include="NuGet.Repositories">
- <HintPath>..\..\..\external\nuget-binary\NuGet.Repositories.dll</HintPath>
- </Reference>
- <Reference Include="NuGet.RuntimeModel">
- <HintPath>..\..\..\external\nuget-binary\NuGet.RuntimeModel.dll</HintPath>
- </Reference>
<Reference Include="NuGet.DependencyResolver.Core">
<HintPath>..\..\..\external\nuget-binary\NuGet.DependencyResolver.Core.dll</HintPath>
</Reference>
<Reference Include="NuGet.ProjectModel">
<HintPath>..\..\..\external\nuget-binary\NuGet.ProjectModel.dll</HintPath>
</Reference>
- <Reference Include="NuGet.ProjectManagement">
- <HintPath>..\..\..\external\nuget-binary\NuGet.ProjectManagement.dll</HintPath>
- </Reference>
<Reference Include="System.ComponentModel.Composition" />
- <Reference Include="NuGet.ContentModel">
- <HintPath>..\..\..\external\nuget-binary\NuGet.ContentModel.dll</HintPath>
- </Reference>
- <Reference Include="NuGet.Client">
- <HintPath>..\..\..\external\nuget-binary\NuGet.Client.dll</HintPath>
- </Reference>
<Reference Include="NuGet.Commands">
<HintPath>..\..\..\external\nuget-binary\NuGet.Commands.dll</HintPath>
</Reference>
@@ -135,8 +111,8 @@
<Reference Include="NuGet.Common">
<HintPath>..\..\..\external\nuget-binary\NuGet.Common.dll</HintPath>
</Reference>
- <Reference Include="NuGet.Protocol.VisualStudio">
- <HintPath>..\..\..\external\nuget-binary\NuGet.Protocol.VisualStudio.dll</HintPath>
+ <Reference Include="NuGet.Protocol">
+ <HintPath>..\..\..\external\nuget-binary\NuGet.Protocol.dll</HintPath>
</Reference>
<Reference Include="NuGet.Indexing">
<HintPath>..\..\..\external\nuget-binary\NuGet.Indexing.dll</HintPath>
@@ -315,7 +291,7 @@
<Compile Include="MonoDevelop.PackageManagement\MonoDevelopCommonOperations.cs" />
<Compile Include="MonoDevelop.PackageManagement\MonoDevelopNuGetProjectFactory.cs" />
<Compile Include="MonoDevelop.PackageManagement\MonoDevelopMSBuildNuGetProjectSystem.cs" />
- <Compile Include="MonoDevelop.PackageManagement\ProjectJsonBuildIntegratedProjectSystem.cs" />
+ <Compile Include="MonoDevelop.PackageManagement\ProjectJsonBuildIntegratedNuGetProject.cs" />
<Compile Include="MonoDevelop.PackageManagement\INuGetPackageAction.cs" />
<Compile Include="MonoDevelop.PackageManagement\UninstallNuGetPackageAction.cs" />
<Compile Include="MonoDevelop.PackageManagement\UpdateNuGetPackageAction.cs" />
@@ -425,6 +401,7 @@
<Compile Include="MonoDevelop.PackageManagement\PendingPackageActionsInformation.cs" />
<Compile Include="MonoDevelop.PackageManagement\PackageActionType.cs" />
<Compile Include="MonoDevelop.PackageManagement\PendingPackageActionsHandler.cs" />
+ <Compile Include="MonoDevelop.PackageManagement\MonoDevelopMSBuildNuGetProject.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="MonoDevelop.PackageManagement.addin.xml" />
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs
index 701ea37597..d4cdbb10fa 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs
@@ -240,7 +240,7 @@ namespace MonoDevelop.PackageManagement
static PackageSpec CreateProjectPackageSpec (DotNetProject project, DependencyGraphCacheContext context)
{
- PackageSpec packageSpec = PackageSpecCreator.CreatePackageSpec (project, context.Logger);
+ PackageSpec packageSpec = PackageSpecCreator.CreatePackageSpec (project, context);
return packageSpec;
}
@@ -263,17 +263,6 @@ namespace MonoDevelop.PackageManagement
out ignore);
}
- public override Task<bool> ExecuteInitScriptAsync (
- PackageIdentity identity,
- string packageInstallPath,
- INuGetProjectContext projectContext,
- bool throwOnFailure)
- {
- // Not supported. This gets called for every NuGet package
- // even if they do not have an init.ps1 so do not report this.
- return Task.FromResult (false);
- }
-
public override Task PostProcessAsync (INuGetProjectContext nuGetProjectContext, CancellationToken token)
{
if (restoreRequired) {
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopBuildIntegratedRestorer.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopBuildIntegratedRestorer.cs
index f11a4b1082..c59a3bdb82 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopBuildIntegratedRestorer.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopBuildIntegratedRestorer.cs
@@ -139,7 +139,6 @@ namespace MonoDevelop.PackageManagement
new RestoreCommandProvidersCache (),
cacheContextModifier,
sourceRepositories,
- settings,
context.Logger,
cancellationToken);
@@ -168,7 +167,7 @@ namespace MonoDevelop.PackageManagement
DependencyGraphCacheContext CreateRestoreContext ()
{
- return new DependencyGraphCacheContext (CreateLogger ());
+ return new DependencyGraphCacheContext (CreateLogger (), settings);
}
void ReportRestoreError (RestoreResult restoreResult)
@@ -182,34 +181,6 @@ namespace MonoDevelop.PackageManagement
throw new ApplicationException (GettextCatalog.GetString ("Restore failed."));
}
- public Task<bool> IsRestoreRequired (BuildIntegratedNuGetProject project)
- {
- var pathContext = NuGetPathContext.Create (settings);
- var packageFolderPaths = new List<string> ();
- packageFolderPaths.Add (pathContext.UserPackageFolder);
- packageFolderPaths.AddRange (pathContext.FallbackPackageFolders);
- var pathResolvers = packageFolderPaths.Select (path => new VersionFolderPathResolver (path));
-
- var packagesChecked = new HashSet<PackageIdentity> ();
-
- return project.IsRestoreRequired (pathResolvers, packagesChecked, context);
- }
-
- public async Task<IEnumerable<BuildIntegratedNuGetProject>> GetProjectsRequiringRestore (
- IEnumerable<BuildIntegratedNuGetProject> projects)
- {
- var projectsToBeRestored = new List<BuildIntegratedNuGetProject> ();
-
- foreach (BuildIntegratedNuGetProject project in projects) {
- bool restoreRequired = await IsRestoreRequired (project);
- if (restoreRequired) {
- projectsToBeRestored.Add (project);
- }
- }
-
- return projectsToBeRestored;
- }
-
DotNetProject GetProjectToReloadAfterRestore (BuildIntegratedNuGetProject project)
{
var dotNetCoreNuGetProject = project as DotNetCoreNuGetProject;
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProject.cs
new file mode 100644
index 0000000000..a2288b50db
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProject.cs
@@ -0,0 +1,51 @@
+//
+// MonoDevelopMSBuildNuGetProject.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2017 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Threading.Tasks;
+using NuGet.ProjectManagement;
+
+namespace MonoDevelop.PackageManagement
+{
+ class MonoDevelopMSBuildNuGetProject : MSBuildNuGetProject, IHasDotNetProject
+ {
+ MonoDevelopMSBuildNuGetProjectSystem projectSystem;
+
+ public MonoDevelopMSBuildNuGetProject (
+ MonoDevelopMSBuildNuGetProjectSystem projectSystem,
+ string folderNuGetProjectFullPath,
+ string packagesConfigFolderPath)
+ : base (projectSystem, folderNuGetProjectFullPath, packagesConfigFolderPath)
+ {
+ this.projectSystem = projectSystem;
+ }
+
+ public Task SaveProject ()
+ {
+ return projectSystem.SaveProject ();
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProjectSystem.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProjectSystem.cs
index e3e94db5e9..86fcdea4bd 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProjectSystem.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProjectSystem.cs
@@ -32,12 +32,11 @@ using MonoDevelop.Core;
using MonoDevelop.Projects;
using MonoDevelop.Projects.MSBuild;
using NuGet.Frameworks;
-using NuGet.Packaging.Core;
using NuGet.ProjectManagement;
namespace MonoDevelop.PackageManagement
{
- internal class MonoDevelopMSBuildNuGetProjectSystem : IMSBuildNuGetProjectSystem, IHasDotNetProject
+ internal class MonoDevelopMSBuildNuGetProjectSystem : IMSBuildProjectSystem
{
IDotNetProject project;
NuGetFramework targetFramework;
@@ -47,6 +46,7 @@ namespace MonoDevelop.PackageManagement
IPackageManagementFileService fileService;
Action<Action> guiSyncDispatcher;
Func<Func<Task>,Task> guiSyncDispatcherFunc;
+ Func<Func<Task<bool>>, Task<bool>> guiSyncDispatcherFuncReturnBool;
public MonoDevelopMSBuildNuGetProjectSystem (DotNetProject project, INuGetProjectContext context)
: this (
@@ -55,7 +55,8 @@ namespace MonoDevelop.PackageManagement
new PackageManagementFileService (),
PackageManagementServices.PackageManagementEvents,
DefaultGuiSyncDispatcher,
- GuiSyncDispatchWithException)
+ GuiSyncDispatchWithException,
+ GuiSyncDispatchReturnBoolWithException)
{
}
@@ -65,7 +66,8 @@ namespace MonoDevelop.PackageManagement
IPackageManagementFileService fileService,
IPackageManagementEvents packageManagementEvents,
Action<Action> guiSyncDispatcher,
- Func<Func<Task>, Task> guiSyncDispatcherFunc)
+ Func<Func<Task>, Task> guiSyncDispatcherFunc,
+ Func<Func<Task<bool>>, Task<bool>> guiSyncDispatcherFuncReturnBool)
{
this.project = project;
NuGetProjectContext = context;
@@ -73,9 +75,10 @@ namespace MonoDevelop.PackageManagement
this.packageManagementEvents = packageManagementEvents;
this.guiSyncDispatcher = guiSyncDispatcher;
this.guiSyncDispatcherFunc = guiSyncDispatcherFunc;
+ this.guiSyncDispatcherFuncReturnBool = guiSyncDispatcherFuncReturnBool;
}
- public INuGetProjectContext NuGetProjectContext { get; private set; }
+ public INuGetProjectContext NuGetProjectContext { get; set; }
public string ProjectFullPath {
get {
@@ -197,9 +200,9 @@ namespace MonoDevelop.PackageManagement
DebugLogFormat("Added file '{0}' to project '{1}'.", fileName, projectName);
}
- public void AddFrameworkReference (string name, string packageId)
+ public Task AddFrameworkReferenceAsync (string name, string packageId)
{
- GuiSyncDispatch (async () => {
+ return GuiSyncDispatchAsync (async () => {
ProjectReference assemblyReference = CreateGacReference (name);
await AddReferenceToProject (assemblyReference);
});
@@ -237,9 +240,9 @@ namespace MonoDevelop.PackageManagement
return MSBuildProjectService.ToMSBuildPath (project.BaseDirectory, path);
}
- public void AddReference (string referencePath)
+ public Task AddReferenceAsync (string referencePath)
{
- GuiSyncDispatch (async () => {
+ return GuiSyncDispatchAsync (async () => {
ProjectReference assemblyReference = CreateReference (referencePath);
packageManagementEvents.OnReferenceAdding (assemblyReference);
await AddReferenceToProject (assemblyReference);
@@ -279,8 +282,9 @@ namespace MonoDevelop.PackageManagement
NuGetProjectContext.Log (MessageLevel.Debug, format, args);
}
- public void BeginProcessing ()
+ public Task BeginProcessingAsync ()
{
+ return Task.FromResult (true);
}
// TODO: Support recursive.
@@ -299,20 +303,9 @@ namespace MonoDevelop.PackageManagement
DebugLogFormat ("Removed folder '{0}'.", folder);
}
- public void EndProcessing ()
- {
- }
-
- public Task ExecuteScriptAsync (PackageIdentity identity, string packageInstallPath, string scriptRelativePath, bool throwOnFailure)
+ public Task EndProcessingAsync ()
{
- string message = GettextCatalog.GetString (
- "WARNING: {0} Package contains PowerShell script '{1}' which will not be run.",
- identity.Id,
- scriptRelativePath);
-
- NuGetProjectContext.Log (MessageLevel.Info, message);
-
- return Task.FromResult (0);
+ return Task.FromResult (true);
}
public bool FileExistsInProject (string path)
@@ -395,14 +388,14 @@ namespace MonoDevelop.PackageManagement
return IsMatchIgnoringCase (fileName1, fileName2);
}
- public bool ReferenceExists (string name)
+ public Task<bool> ReferenceExistsAsync (string name)
{
- return GuiSyncDispatch (() => {
+ return GuiSyncDispatchAsync (() => {
ProjectReference referenceProjectItem = FindReference (name);
if (referenceProjectItem != null) {
- return true;
+ return Task.FromResult (true);
}
- return false;
+ return Task.FromResult (false);
});
}
@@ -512,9 +505,9 @@ namespace MonoDevelop.PackageManagement
project.RemoveImport (relativeTargetPath);
}
- public void RemoveReference (string name)
+ public Task RemoveReferenceAsync (string name)
{
- GuiSyncDispatch (async () => {
+ return GuiSyncDispatchAsync (async () => {
ProjectReference referenceProjectItem = FindReference (name);
if (referenceProjectItem != null) {
packageManagementEvents.OnReferenceRemoving (referenceProjectItem);
@@ -540,11 +533,6 @@ namespace MonoDevelop.PackageManagement
return path;
}
- public void SetNuGetProjectContext (INuGetProjectContext nuGetProjectContext)
- {
- NuGetProjectContext = nuGetProjectContext;
- }
-
T GuiSyncDispatch<T> (Func<T> action)
{
T result = default(T);
@@ -564,6 +552,13 @@ namespace MonoDevelop.PackageManagement
return Runtime.RunInMainThread (func);
}
+ static Task<T> GuiSyncDispatchReturnBoolWithException<T> (Func<Task<T>> func)
+ {
+ if (Runtime.IsMainThread)
+ throw new InvalidOperationException ("GuiSyncDispatch called from GUI thread");
+ return Runtime.RunInMainThread (func);
+ }
+
public static void DefaultGuiSyncDispatcher (Action action)
{
Runtime.RunInMainThread (action).Wait ();
@@ -574,6 +569,16 @@ namespace MonoDevelop.PackageManagement
guiSyncDispatcherFunc (func).Wait ();
}
+ Task GuiSyncDispatchAsync (Func<Task> func)
+ {
+ return guiSyncDispatcherFunc (func);
+ }
+
+ Task<bool> GuiSyncDispatchAsync (Func<Task<bool>> func)
+ {
+ return guiSyncDispatcherFuncReturnBool (func);
+ }
+
public dynamic VSProject4 { get; private set; }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopNuGetProjectFactory.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopNuGetProjectFactory.cs
index 4b8c25e210..6fab76d0f4 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopNuGetProjectFactory.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopNuGetProjectFactory.cs
@@ -85,12 +85,10 @@ namespace MonoDevelop.PackageManagement
string projectJsonPath = ProjectJsonPathUtilities.GetProjectConfigPath (project.BaseDirectory, project.Name);
if (File.Exists (projectJsonPath)) {
- return new ProjectJsonBuildIntegratedProjectSystem (
+ return new ProjectJsonBuildIntegratedNuGetProject (
projectJsonPath,
project.FileName,
project,
- projectSystem,
- project.Name,
settings);
}
@@ -99,7 +97,7 @@ namespace MonoDevelop.PackageManagement
string packagesConfigFolderPath = project.BaseDirectory;
- return new MSBuildNuGetProject (
+ return new MonoDevelopMSBuildNuGetProject (
projectSystem,
folderNuGetProjectFullPath,
packagesConfigFolderPath);
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopSolutionManager.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopSolutionManager.cs
index 5d2c75eec6..c73b4b7215 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopSolutionManager.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopSolutionManager.cs
@@ -151,16 +151,7 @@ namespace MonoDevelop.PackageManagement
public void SaveProject (NuGetProject nuGetProject)
{
- IHasDotNetProject hasProject = null;
-
- var msbuildProject = nuGetProject as MSBuildNuGetProject;
- if (msbuildProject != null) {
- hasProject = msbuildProject.MSBuildNuGetProjectSystem as IHasDotNetProject;
- }
-
- if (hasProject == null) {
- hasProject = nuGetProject as IHasDotNetProject;
- }
+ var hasProject = nuGetProject as IHasDotNetProject;
if (hasProject != null) {
hasProject.SaveProject ().Wait ();
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/NuGetProjectExtensions.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/NuGetProjectExtensions.cs
index c760f899b1..36a24f05b4 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/NuGetProjectExtensions.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/NuGetProjectExtensions.cs
@@ -39,7 +39,7 @@ namespace MonoDevelop.PackageManagement
{
public static FilePath GetPackagesFolderPath (this NuGetProject project, IMonoDevelopSolutionManager solutionManager)
{
- if (project is ProjectJsonBuildIntegratedProjectSystem ) {
+ if (project is ProjectJsonBuildIntegratedNuGetProject) {
string globalPackagesPath = SettingsUtility.GetGlobalPackagesFolder (solutionManager.Settings);
return new FilePath (globalPackagesPath).FullPath;
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageCompatibilityNuGetProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageCompatibilityNuGetProject.cs
index 4d4e6d6d3f..f9cf706b8c 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageCompatibilityNuGetProject.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageCompatibilityNuGetProject.cs
@@ -45,7 +45,7 @@ namespace MonoDevelop.PackageManagement
public NuGetFramework TargetFramework {
get {
- return nugetProject.MSBuildNuGetProjectSystem.TargetFramework;
+ return nugetProject.GetMetadata<NuGetFramework> (NuGetProjectMetadataKeys.TargetFramework);
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementLogger.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementLogger.cs
index 3e5b35f63e..e7236d6928 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementLogger.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementLogger.cs
@@ -26,6 +26,7 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
+using System.Threading.Tasks;
using NuGet.Common;
using NuGet.ProjectManagement;
@@ -84,5 +85,51 @@ namespace MonoDevelop.PackageManagement
{
LogDebug (data);
}
+
+ public void Log (ILogMessage message)
+ {
+ Log (message.Level, message.Message);
+ }
+
+ public Task LogAsync (LogLevel level, string data)
+ {
+ Log (level, data);
+ return Task.FromResult (true);
+ }
+
+ public Task LogAsync (ILogMessage message)
+ {
+ Log (message);
+ return Task.FromResult (true);
+ }
+
+ public void Log (LogLevel level, string data)
+ {
+ switch (level) {
+ case LogLevel.Debug:
+ LogDebug (data);
+ break;
+
+ case LogLevel.Error:
+ LogError(data);
+ break;
+
+ case LogLevel.Information:
+ LogInformation (data);
+ break;
+
+ case LogLevel.Minimal:
+ LogMinimal (data);
+ break;
+
+ case LogLevel.Verbose:
+ LogVerbose (data);
+ break;
+
+ case LogLevel.Warning:
+ LogWarning (data);
+ break;
+ }
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageReferenceNuGetProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageReferenceNuGetProject.cs
index 5caaec2673..5e5f23db73 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageReferenceNuGetProject.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageReferenceNuGetProject.cs
@@ -231,7 +231,7 @@ namespace MonoDevelop.PackageManagement
static PackageSpec CreateProjectPackageSpec (DotNetProject project, DependencyGraphCacheContext context)
{
- PackageSpec packageSpec = PackageSpecCreator.CreatePackageSpec (project, context.Logger);
+ PackageSpec packageSpec = PackageSpecCreator.CreatePackageSpec (project, context);
return packageSpec;
}
@@ -254,17 +254,6 @@ namespace MonoDevelop.PackageManagement
out ignore);
}
- public override Task<bool> ExecuteInitScriptAsync (
- PackageIdentity identity,
- string packageInstallPath,
- INuGetProjectContext projectContext,
- bool throwOnFailure)
- {
- // Not supported. This gets called for every NuGet package
- // even if they do not have an init.ps1 so do not report this.
- return Task.FromResult (false);
- }
-
public override Task PostProcessAsync (INuGetProjectContext nuGetProjectContext, CancellationToken token)
{
Runtime.RunInMainThread (() => {
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSpecCreator.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSpecCreator.cs
index 7a50afe3b0..2b23939bee 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSpecCreator.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSpecCreator.cs
@@ -28,8 +28,10 @@ using MonoDevelop.Core;
using MonoDevelop.Projects;
using NuGet.Commands;
using NuGet.Common;
+using NuGet.Configuration;
using NuGet.Frameworks;
using NuGet.LibraryModel;
+using NuGet.ProjectManagement;
using NuGet.ProjectModel;
using NuGet.RuntimeModel;
using NuGet.Versioning;
@@ -38,21 +40,21 @@ namespace MonoDevelop.PackageManagement
{
static class PackageSpecCreator
{
- public static PackageSpec CreatePackageSpec (DotNetProject project, ILogger logger)
+ public static PackageSpec CreatePackageSpec (DotNetProject project, DependencyGraphCacheContext context)
{
- return CreatePackageSpec (new DotNetProjectProxy (project), logger);
+ return CreatePackageSpec (new DotNetProjectProxy (project), context);
}
- public static PackageSpec CreatePackageSpec (IDotNetProject project, ILogger logger)
+ public static PackageSpec CreatePackageSpec (IDotNetProject project, DependencyGraphCacheContext context)
{
var packageSpec = new PackageSpec (GetTargetFrameworks (project));
packageSpec.FilePath = project.FileName;
packageSpec.Name = project.Name;
packageSpec.Version = GetVersion (project);
- packageSpec.RestoreMetadata = CreateRestoreMetadata (packageSpec, project);
+ packageSpec.RestoreMetadata = CreateRestoreMetadata (packageSpec, project, context.Settings);
packageSpec.RuntimeGraph = GetRuntimeGraph (project);
- AddProjectReferences (packageSpec, project, logger);
+ AddProjectReferences (packageSpec, project, context.Logger);
AddPackageReferences (packageSpec, project);
AddPackageTargetFallbacks (packageSpec, project);
@@ -90,9 +92,10 @@ namespace MonoDevelop.PackageManagement
return NuGetVersion.Parse (versionString);
}
- static ProjectRestoreMetadata CreateRestoreMetadata (PackageSpec packageSpec, IDotNetProject project)
+ static ProjectRestoreMetadata CreateRestoreMetadata (PackageSpec packageSpec, IDotNetProject project, ISettings settings)
{
return new ProjectRestoreMetadata {
+ PackagesPath = SettingsUtility.GetGlobalPackagesFolder (settings),
ProjectStyle = ProjectStyle.PackageReference,
ProjectPath = project.FileName,
ProjectName = packageSpec.Name,
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectJsonBuildIntegratedNuGetProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectJsonBuildIntegratedNuGetProject.cs
new file mode 100644
index 0000000000..02ef5caddd
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectJsonBuildIntegratedNuGetProject.cs
@@ -0,0 +1,134 @@
+//
+// ProjectJsonBuildIntegratedNuGetProject.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using MonoDevelop.Core;
+using MonoDevelop.Projects;
+using NuGet.Configuration;
+using NuGet.PackageManagement;
+using NuGet.Packaging;
+using NuGet.Packaging.Core;
+using NuGet.ProjectManagement;
+using NuGet.ProjectManagement.Projects;
+
+namespace MonoDevelop.PackageManagement
+{
+ internal class ProjectJsonBuildIntegratedNuGetProject
+ : ProjectJsonNuGetProject, IBuildIntegratedNuGetProject, IHasDotNetProject
+ {
+ DotNetProjectProxy dotNetProject;
+ PackageManagementEvents packageManagementEvents;
+ VersionFolderPathResolver packagePathResolver;
+
+ public ProjectJsonBuildIntegratedNuGetProject (
+ string jsonConfigPath,
+ string msbuildProjectFilePath,
+ DotNetProject dotNetProject,
+ ISettings settings)
+ : base (jsonConfigPath, msbuildProjectFilePath)
+ {
+ this.dotNetProject = new DotNetProjectProxy (dotNetProject);
+ packageManagementEvents = (PackageManagementEvents)PackageManagementServices.PackageManagementEvents;
+
+ string path = SettingsUtility.GetGlobalPackagesFolder (settings);
+ packagePathResolver = new VersionFolderPathResolver (path);
+ }
+
+ public Task SaveProject ()
+ {
+ return dotNetProject.SaveAsync ();
+ }
+
+ public DotNetProjectProxy Project {
+ get { return dotNetProject; }
+ }
+
+ public override Task PostProcessAsync (INuGetProjectContext nuGetProjectContext, CancellationToken token)
+ {
+ Runtime.RunInMainThread (() => {
+ dotNetProject.DotNetProject.NotifyModified ("References");
+ });
+
+ packageManagementEvents.OnFileChanged (JsonConfigPath);
+
+ return base.PostProcessAsync (nuGetProjectContext, token);
+ }
+
+ public void OnAfterExecuteActions (IEnumerable<NuGetProjectAction> actions)
+ {
+ ProcessActions (actions, OnPackageInstalled, OnPackageUninstalled);
+ }
+
+ public void OnBeforeUninstall (IEnumerable<NuGetProjectAction> actions)
+ {
+ ProcessActions (actions, identity => {}, OnPackageUninstalling);
+ }
+
+ void ProcessActions (
+ IEnumerable<NuGetProjectAction> actions,
+ Action<PackageIdentity> installAction,
+ Action<PackageIdentity> uninstallAction)
+ {
+ foreach (var action in actions) {
+ if (action.NuGetProjectActionType == NuGetProjectActionType.Install) {
+ installAction (action.PackageIdentity);
+ } else if (action.NuGetProjectActionType == NuGetProjectActionType.Uninstall) {
+ uninstallAction (action.PackageIdentity);
+ }
+ }
+ }
+
+ void OnPackageInstalled (PackageIdentity identity)
+ {
+ var eventArgs = CreatePackageEventArgs (identity);
+ packageManagementEvents.OnPackageInstalled (dotNetProject, eventArgs);
+ }
+
+ PackageEventArgs CreatePackageEventArgs (PackageIdentity identity)
+ {
+ string installPath = packagePathResolver.GetInstallPath (identity.Id, identity.Version);
+ return new PackageEventArgs (this, identity, installPath);
+ }
+
+ void OnPackageUninstalling (PackageIdentity identity)
+ {
+ var eventArgs = CreatePackageEventArgs (identity);
+ packageManagementEvents.OnPackageUninstalling (dotNetProject, eventArgs);
+ }
+
+ void OnPackageUninstalled (PackageIdentity identity)
+ {
+ var eventArgs = CreatePackageEventArgs (identity);
+ packageManagementEvents.OnPackageUninstalled (dotNetProject, eventArgs);
+ }
+
+ public void NotifyProjectReferencesChanged ()
+ {
+ Runtime.AssertMainThread ();
+
+ dotNetProject.RefreshProjectBuilder ();
+ dotNetProject.DotNetProject.NotifyModified ("References");
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectJsonBuildIntegratedProjectSystem.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectJsonBuildIntegratedProjectSystem.cs
deleted file mode 100644
index 36f92f4490..0000000000
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectJsonBuildIntegratedProjectSystem.cs
+++ /dev/null
@@ -1,258 +0,0 @@
-//
-// BuildIntegratedProjectSystem.cs
-//
-// Author:
-// Matt Ward <matt.ward@xamarin.com>
-//
-// based on NuGet.Clients
-// src/NuGet.Clients/PackageManagement.VisualStudio/ProjectSystems/BuildIntegratedProjectSystem.cs
-//
-// Copyright (c) 2016 Xamarin Inc.
-// Copyright (c) .NET Foundation. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Threading.Tasks;
-using MonoDevelop.Core;
-using MonoDevelop.Projects;
-using NuGet.Common;
-using NuGet.Configuration;
-using NuGet.PackageManagement;
-using NuGet.Packaging;
-using NuGet.Packaging.Core;
-using NuGet.ProjectManagement;
-using NuGet.ProjectManagement.Projects;
-using NuGet.ProjectModel;
-
-namespace MonoDevelop.PackageManagement
-{
- internal class ProjectJsonBuildIntegratedProjectSystem
- : ProjectJsonBuildIntegratedNuGetProject, IBuildIntegratedNuGetProject, IHasDotNetProject
- {
- DotNetProjectProxy dotNetProject;
- PackageManagementEvents packageManagementEvents;
- VersionFolderPathResolver packagePathResolver;
-
- public ProjectJsonBuildIntegratedProjectSystem (
- string jsonConfigPath,
- string msbuildProjectFilePath,
- DotNetProject dotNetProject,
- IMSBuildNuGetProjectSystem msbuildProjectSystem,
- string uniqueName,
- ISettings settings)
- : base (jsonConfigPath, msbuildProjectFilePath, msbuildProjectSystem)
- {
- this.dotNetProject = new DotNetProjectProxy (dotNetProject);
- packageManagementEvents = (PackageManagementEvents)PackageManagementServices.PackageManagementEvents;
-
- string path = SettingsUtility.GetGlobalPackagesFolder (settings);
- packagePathResolver = new VersionFolderPathResolver (path);
- }
-
- public Task SaveProject ()
- {
- return dotNetProject.SaveAsync ();
- }
-
- public DotNetProjectProxy Project {
- get { return dotNetProject; }
- }
-
- public override Task<bool> ExecuteInitScriptAsync (PackageIdentity identity, string packageInstallPath, INuGetProjectContext projectContext, bool throwOnFailure)
- {
- // Not supported. This gets called for every NuGet package
- // even if they do not have an init.ps1 so do not report this.
- return Task.FromResult (false);
- }
-
- public override Task PostProcessAsync (INuGetProjectContext nuGetProjectContext, System.Threading.CancellationToken token)
- {
- Runtime.RunInMainThread (() => {
- dotNetProject.DotNetProject.NotifyModified ("References");
- });
-
- packageManagementEvents.OnFileChanged (JsonConfigPath);
-
- return base.PostProcessAsync (nuGetProjectContext, token);
- }
-
- public void OnAfterExecuteActions (IEnumerable<NuGetProjectAction> actions)
- {
- ProcessActions (actions, OnPackageInstalled, OnPackageUninstalled);
- }
-
- public void OnBeforeUninstall (IEnumerable<NuGetProjectAction> actions)
- {
- ProcessActions (actions, identity => {}, OnPackageUninstalling);
- }
-
- void ProcessActions (
- IEnumerable<NuGetProjectAction> actions,
- Action<PackageIdentity> installAction,
- Action<PackageIdentity> uninstallAction)
- {
- foreach (var action in actions) {
- if (action.NuGetProjectActionType == NuGetProjectActionType.Install) {
- installAction (action.PackageIdentity);
- } else if (action.NuGetProjectActionType == NuGetProjectActionType.Uninstall) {
- uninstallAction (action.PackageIdentity);
- }
- }
- }
-
- void OnPackageInstalled (PackageIdentity identity)
- {
- var eventArgs = CreatePackageEventArgs (identity);
- packageManagementEvents.OnPackageInstalled (dotNetProject, eventArgs);
- }
-
- PackageEventArgs CreatePackageEventArgs (PackageIdentity identity)
- {
- string installPath = packagePathResolver.GetInstallPath (identity.Id, identity.Version);
- return new PackageEventArgs (this, identity, installPath);
- }
-
- void OnPackageUninstalling (PackageIdentity identity)
- {
- var eventArgs = CreatePackageEventArgs (identity);
- packageManagementEvents.OnPackageUninstalling (dotNetProject, eventArgs);
- }
-
- void OnPackageUninstalled (PackageIdentity identity)
- {
- var eventArgs = CreatePackageEventArgs (identity);
- packageManagementEvents.OnPackageUninstalled (dotNetProject, eventArgs);
- }
-
- public override Task<IReadOnlyList<ProjectRestoreReference>> GetDirectProjectReferencesAsync (DependencyGraphCacheContext context)
- {
- return Runtime.RunInMainThread (() => {
- return GetDirectProjectReferences (dotNetProject.DotNetProject, context.Logger);
- });
- }
-
- /// <summary>
- /// Returns the closure of all project to project references below this project.
- /// The code is a port of src/NuGet.Clients/PackageManagement.VisualStudio/IDE/VSProjectReferenceUtility.cs
- /// </summary>
- static IReadOnlyList<ProjectRestoreReference> GetDirectProjectReferences (
- DotNetProject project,
- ILogger log)
- {
- var results = new List<ProjectRestoreReference>();
-
- // Verify ReferenceOutputAssembly
- var excludedProjects = GetExcludedReferences (project);
- bool hasMissingReferences = false;
-
- // find all references in the project
- foreach (var childReference in project.References) {
- try {
- if (!childReference.IsValid) {
- // Skip missing references and show a warning
- hasMissingReferences = true;
- continue;
- }
-
- // Skip missing references
- DotNetProject sourceProject = null;
- if (childReference.ReferenceType == ReferenceType.Project) {
- sourceProject = childReference.ResolveProject (project.ParentSolution) as DotNetProject;
- }
-
- // Skip missing references
- if (sourceProject != null) {
- if (sourceProject.IsShared) {
- // Skip this shared project
- continue;
- }
-
- string childProjectPath = sourceProject.FileName;
-
- // Skip projects which have ReferenceOutputAssembly=false
- if (!string.IsNullOrEmpty (childProjectPath) &&
- !excludedProjects.Contains (childProjectPath, StringComparer.OrdinalIgnoreCase)) {
- var restoreReference = new ProjectRestoreReference () {
- ProjectPath = childProjectPath,
- ProjectUniqueName = childProjectPath
- };
-
- results.Add(restoreReference);
- }
- }
- } catch (Exception ex) {
- // Exceptions are expected in some scenarios for native projects,
- // ignore them and show a warning
- hasMissingReferences = true;
-
- log.LogDebug (ex.ToString ());
-
- LoggingService.LogError ("Unable to find project dependencies.", ex);
- }
- }
-
- if (hasMissingReferences) {
- // Log a warning message once per project
- // This warning contains only the names of the root project and the project with the
- // broken reference. Attempting to display more details on the actual reference
- // that has the problem may lead to another exception being thrown.
- var warning = string.Format (
- "Failed to resolve all project references. The package restore result for '{0}' or a dependant project may be incomplete.",
- project.Name);
-
- log.LogWarning (warning);
- }
-
- return results;
- }
-
- /// <summary>
- /// Get the unique names of all references which have ReferenceOutputAssembly set to false.
- /// </summary>
- static List<string> GetExcludedReferences (DotNetProject project)
- {
- var excludedReferences = new List<string> ();
-
- foreach (var reference in project.References) {
- // 1. Verify that this is a project reference
- // 2. Check that it is valid and resolved
- // 3. Follow the reference to the DotNetProject and get the unique name
- if (!reference.ReferenceOutputAssembly &&
- reference.IsValid &&
- reference.ReferenceType == ReferenceType.Project) {
-
- var sourceProject = reference.ResolveProject (project.ParentSolution);
- if (sourceProject != null) {
- string childPath = sourceProject.FileName;
- excludedReferences.Add (childPath);
- }
- }
- }
-
- return excludedReferences;
- }
-
- public void NotifyProjectReferencesChanged ()
- {
- Runtime.AssertMainThread ();
-
- dotNetProject.RefreshProjectBuilder ();
- dotNetProject.DotNetProject.NotifyModified ("References");
- }
- }
-}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/NuGet.Commands/MSBuildRestoreResult.cs b/main/src/addins/MonoDevelop.PackageManagement/NuGet.Commands/MSBuildRestoreResult.cs
index 96d81eba98..91f3f10b6e 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/NuGet.Commands/MSBuildRestoreResult.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/NuGet.Commands/MSBuildRestoreResult.cs
@@ -3,15 +3,16 @@
using System;
using System.Collections.Generic;
-using System.Globalization;
using System.IO;
using System.Linq;
-using System.Threading.Tasks;
using System.Xml.Linq;
-using NuGet.Common;
+using MonoDevelop.Core;
namespace NuGet.Commands
{
+ /// <summary>
+ /// TODO: Look at removing this class and instead just using the existing PackageReference support.
+ /// </summary>
class MSBuildRestoreResult
{
/// <summary>
@@ -76,7 +77,7 @@ namespace NuGet.Commands
var name = $"{ProjectName}.nuget.targets";
var path = Path.Combine(ProjectDirectory, name);
- log.LogMinimal(string.Format(CultureInfo.CurrentCulture, Strings.Log_GeneratingMsBuildFile, name));
+ log.LogMinimal(GettextCatalog.GetString ("Generating MSBuild file {0}.", name));
GenerateMSBuildErrorFile(path);
}
else
@@ -89,7 +90,7 @@ namespace NuGet.Commands
if (Targets.Any())
{
- log.LogMinimal(string.Format(CultureInfo.CurrentCulture, Strings.Log_GeneratingMsBuildFile, targetsName));
+ log.LogMinimal(GettextCatalog.GetString ("Generating MSBuild file {0}.", targetsName));
GenerateImportsFile(targetsPath, Targets);
}
@@ -100,7 +101,7 @@ namespace NuGet.Commands
if (Props.Any())
{
- log.LogMinimal(string.Format(CultureInfo.CurrentCulture, Strings.Log_GeneratingMsBuildFile, propsName));
+ log.LogMinimal(GettextCatalog.GetString ("Generating MSBuild file {0}.", propsName));
GenerateImportsFile(propsPath, Props);
}
@@ -130,6 +131,7 @@ namespace NuGet.Commands
private void GenerateMSBuildErrorFile(string path)
{
+ string warning = GettextCatalog.GetString ("Packages containing MSBuild targets and props files cannot be fully installed in projects targeting multiple frameworks. The MSBuild targets and props files have been ignored.");
var ns = XNamespace.Get("http://schemas.microsoft.com/developer/msbuild/2003");
var doc = new XDocument(
new XDeclaration("1.0", "utf-8", "no"),
@@ -142,7 +144,7 @@ namespace NuGet.Commands
new XAttribute("BeforeTargets", "Build"),
new XElement(ns + "Warning",
- new XAttribute("Text", Strings.MSBuildWarning_MultiTarget)))));
+ new XAttribute("Text", warning)))));
using (var output = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None))
{
diff --git a/main/src/addins/MonoDevelop.PackageManagement/NuGet.Credentials/CredentialService.cs b/main/src/addins/MonoDevelop.PackageManagement/NuGet.Credentials/CredentialService.cs
index 58235f3607..aaea21d787 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/NuGet.Credentials/CredentialService.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/NuGet.Credentials/CredentialService.cs
@@ -142,6 +142,44 @@ namespace NuGet.Credentials
}
/// <summary>
+ /// Attempts to retrieve last known good credentials for a URI from a credentials cache.
+ /// </summary>
+ /// <remarks>
+ /// When the return value is <c>true</c>, <paramref name="credentials" /> will have last known
+ /// good credentials from the credentials cache. These credentials may have become invalid
+ /// since their last use, so there is no guarantee that the credentials are currently valid.
+ /// </remarks>
+ /// <param name="uri">The URI for which cached credentials should be retrieved.</param>
+ /// <param name="isProxy"><c>true</c> for proxy credentials; otherwise, <c>false</c>.</param>
+ /// <param name="credentials">Cached credentials or <c>null</c>.</param>
+ /// <returns><c>true</c> if a result is returned from the cache; otherwise, false.</returns>
+ /// <exception cref="ArgumentNullException">Thrown if <paramref name="uri" /> is <c>null</c>.</exception>
+ public bool TryGetLastKnownGoodCredentialsFromCache (
+ Uri uri,
+ bool isProxy,
+ out ICredentials credentials)
+ {
+ if (uri == null) {
+ throw new ArgumentNullException (nameof (uri));
+ }
+
+ credentials = null;
+
+ var rootUri = GetRootUri (uri);
+ var ending = $"_{isProxy}_{rootUri}";
+
+ foreach (var entry in _providerCredentialCache) {
+ if (entry.Value.Status == CredentialStatus.Success && entry.Key.EndsWith (ending)) {
+ credentials = entry.Value.Credentials;
+
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /// <summary>
/// Gets the currently configured providers.
/// </summary>
IEnumerable<ICredentialProvider> Providers { get; }
@@ -172,12 +210,17 @@ namespace NuGet.Credentials
return GetUriKey (uri, type, provider);
}
- static string CredentialCacheKey (Uri uri, CredentialRequestType type, ICredentialProvider provider)
+ static string CredentialCacheKey(Uri uri, CredentialRequestType type, ICredentialProvider provider)
{
- var rootUri = new Uri (uri.GetComponents (UriComponents.SchemeAndServer, UriFormat.SafeUnescaped));
+ var rootUri = GetRootUri (uri);
return GetUriKey (rootUri, type, provider);
}
+ static Uri GetRootUri (Uri uri)
+ {
+ return new Uri (uri.GetComponents (UriComponents.SchemeAndServer, UriFormat.SafeUnescaped));
+ }
+
static string GetUriKey (Uri uri, CredentialRequestType type, ICredentialProvider provider)
{
return $"{provider.Id}_{type == CredentialRequestType.Proxy}_{uri}";
diff --git a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests.csproj b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests.csproj
index 75445da365..faffa334d2 100644
--- a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests.csproj
+++ b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests.csproj
@@ -33,9 +33,6 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
- <Reference Include="NuGet.ProjectManagement">
- <HintPath>..\..\..\..\external\nuget-binary\NuGet.ProjectManagement.dll</HintPath>
- </Reference>
<Reference Include="System.Collections.Immutable">
<HintPath>..\..\..\..\build\bin\System.Collections.Immutable.dll</HintPath>
<Private>False</Private>
@@ -82,6 +79,11 @@
<Project>{2645C9F3-9ED5-4806-AB09-DAD9BE90C67B}</Project>
<Name>MonoDevelop.PackageManagement.Tests</Name>
</ProjectReference>
+ <ProjectReference Include="..\..\MonoDevelop.DotNetCore\MonoDevelop.DotNetCore.csproj">
+ <Project>{6868153E-41EA-43A4-A81A-C1E7256373F7}</Project>
+ <Name>MonoDevelop.DotNetCore</Name>
+ <Private>False</Private>
+ </ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="MonoDevelop.Packaging.Tests\" />
diff --git a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests/AddPlatformImplementationTests.cs b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests/AddPlatformImplementationTests.cs
index 072e4ad340..0438bc825d 100644
--- a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests/AddPlatformImplementationTests.cs
+++ b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests/AddPlatformImplementationTests.cs
@@ -32,7 +32,6 @@ using MonoDevelop.Projects;
using NUnit.Framework;
using UnitTests;
using MonoDevelop.Projects.SharedAssetsProjects;
-using MonoDevelop.Projects.MSBuild;
namespace MonoDevelop.Packaging.Tests
{
@@ -44,9 +43,9 @@ namespace MonoDevelop.Packaging.Tests
Simulate ();
#pragma warning disable 219
- // Ensure NuGet.ProjectManagement assembly is loaded otherwise creating
- // a PackagingProject will fail.
- string binDirectory = NuGet.ProjectManagement.Constants.BinDirectory;
+ // Ensure MSBuildSdksPath is registered otherwise the project builders are recycled
+ // when we try to build the packaging project which breaks the tests.
+ string directory = DotNetCore.DotNetCoreSdk.MSBuildSDKsPath;
#pragma warning restore 219
}
diff --git a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests/ProjectTemplateTests.cs b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests/ProjectTemplateTests.cs
index ebe7f9fa11..573adfe06b 100644
--- a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests/ProjectTemplateTests.cs
+++ b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Tests/MonoDevelop.Packaging.Tests/ProjectTemplateTests.cs
@@ -29,7 +29,6 @@ using System.Linq;
using System.Threading.Tasks;
using MonoDevelop.Ide.Templates;
using MonoDevelop.PackageManagement.Tests.Helpers;
-using MonoDevelop.Packaging.Templating;
using MonoDevelop.Projects;
using MonoDevelop.Projects.MSBuild;
using MonoDevelop.Projects.SharedAssetsProjects;
@@ -46,9 +45,9 @@ namespace MonoDevelop.Packaging.Tests
Simulate ();
#pragma warning disable 219
- // Ensure NuGet.ProjectManagement assembly is loaded otherwise creating
- // a PackagingProject will fail.
- string binDirectory = NuGet.ProjectManagement.Constants.BinDirectory;
+ // Ensure MSBuildSdksPath is registered otherwise the project builders are recycled
+ // when we try to build the packaging project which breaks the tests.
+ string directory = DotNetCore.DotNetCoreSdk.MSBuildSDKsPath;
#pragma warning restore 219
}
diff --git a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.csproj b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.csproj
index 2a08c604f2..2e5599a863 100644
--- a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.csproj
+++ b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.csproj
@@ -37,22 +37,18 @@
<Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="Mono.Posix" />
- <Reference Include="NuGet.ProjectManagement">
- <HintPath>..\..\..\external\nuget-binary\NuGet.ProjectManagement.dll</HintPath>
- <Private>False</Private>
- </Reference>
- <Reference Include="NuGet.Protocol.Core.Types">
- <HintPath>..\..\..\external\nuget-binary\NuGet.Protocol.Core.Types.dll</HintPath>
- <Private>False</Private>
- </Reference>
- <Reference Include="NuGet.Packaging.Core.Types">
- <HintPath>..\..\..\external\nuget-binary\NuGet.Packaging.Core.Types.dll</HintPath>
+ <Reference Include="NuGet.Protocol">
+ <HintPath>..\..\..\external\nuget-binary\NuGet.Protocol.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="NuGet.Packaging">
<HintPath>..\..\..\external\nuget-binary\NuGet.Packaging.dll</HintPath>
<Private>False</Private>
</Reference>
+ <Reference Include="NuGet.Packaging.Core">
+ <HintPath>..\..\..\external\nuget-binary\NuGet.Packaging.Core.dll</HintPath>
+ <Private>False</Private>
+ </Reference>
<Reference Include="NuGet.Frameworks">
<HintPath>..\..\..\external\nuget-binary\NuGet.Frameworks.dll</HintPath>
<Private>False</Private>