diff options
author | Matt Ward <matt.ward@xamarin.com> | 2016-10-25 15:25:36 +0300 |
---|---|---|
committer | Matt Ward <matt.ward@xamarin.com> | 2016-10-25 15:25:36 +0300 |
commit | b20ad0a2a4e829947962bab6fe90704afb814e3a (patch) | |
tree | 2602bcf68b0d5f37130b97d9a536eb1a35eb2569 /main/src/addins/MonoDevelop.Packaging | |
parent | c448fd6a81dcf2983a98468553d8df54eb4677d5 (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.cs | 21 |
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 ();
|