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
diff options
context:
space:
mode:
authorMatt Ward <matt.ward@xamarin.com>2016-10-25 15:25:36 +0300
committerMatt Ward <matt.ward@xamarin.com>2016-10-25 15:25:36 +0300
commitb20ad0a2a4e829947962bab6fe90704afb814e3a (patch)
tree2602bcf68b0d5f37130b97d9a536eb1a35eb2569 /main/src/addins/MonoDevelop.Packaging
parentc448fd6a81dcf2983a98468553d8df54eb4677d5 (diff)
[Packaging] Fix Create NuGet Package not building referenced projects
If a normal .NET project, not a NuGet packaging project, had NuGet package metadata and referenced another project then the Create NuGet Package command would not build the referenced projects before generating the NuGet package. Now the command ensures referenced projects are built before the NuGet package is generated.
Diffstat (limited to 'main/src/addins/MonoDevelop.Packaging')
-rw-r--r--main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageBuildTarget.cs21
1 files changed, 19 insertions, 2 deletions
diff --git a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageBuildTarget.cs b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageBuildTarget.cs
index ff63fba864..85df6eeaba 100644
--- a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageBuildTarget.cs
+++ b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageBuildTarget.cs
@@ -26,6 +26,7 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Threading.Tasks;
using MonoDevelop.Core;
using MonoDevelop.Projects;
@@ -54,12 +55,28 @@ namespace MonoDevelop.Packaging
public async Task<BuildResult> Build (ProgressMonitor monitor, ConfigurationSelector configuration, bool buildReferencedTargets = false, OperationContext operationContext = null)
{
if (project is PackagingProject) {
- return (await project.Build (monitor, configuration, buildReferencedTargets, new TargetEvaluationContext (operationContext)));
+ return await project.Build (monitor, configuration, buildReferencedTargets, new TargetEvaluationContext (operationContext));
} else {
- return (await project.RunTarget (monitor, "Pack", configuration, new TargetEvaluationContext (operationContext))).BuildResult;
+ return await Pack (monitor, configuration, buildReferencedTargets, operationContext);
}
}
+ async Task<BuildResult> Pack (ProgressMonitor monitor, ConfigurationSelector configuration, bool buildReferencedTargets, OperationContext operationContext)
+ {
+ var result = new BuildResult ();
+
+ // Build the project and any dependencies first.
+ if (buildReferencedTargets && project.GetReferencedItems (configuration).Any ()) {
+ result = await project.Build (monitor, configuration, buildReferencedTargets, operationContext);
+ if (result.Failed)
+ return result;
+ }
+
+ // Generate the NuGet package by calling the Pack target.
+ var packResult = (await project.RunTarget (monitor, "Pack", configuration, new TargetEvaluationContext (operationContext))).BuildResult;
+ return result.Append (packResult);
+ }
+
public bool CanBuild (ConfigurationSelector configuration)
{
throw new NotImplementedException ();