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 14:09:34 +0300
committerMatt Ward <matt.ward@xamarin.com>2016-10-25 14:09:34 +0300
commitc448fd6a81dcf2983a98468553d8df54eb4677d5 (patch)
tree0c81fe516320d30df72949c6159391fb4104e1df /main/src/addins/MonoDevelop.Packaging
parent975e574ca612eafde53774d94b3bd08f3bf9750a (diff)
[Packaging] Fix NuGet projects not building referenced projects
When using the Create NuGet Package command on a NuGet packaging project (.nuproj) the referenced projects would not be built. One way to reproduce this is to create a new multiplatform project for iOS and Android and then use the Create NuGet Package command on the NuGet packaging project. The build will fail since the iOS and Android projects are not compiled. This is because the Pack MSBuild target is used which will only build the project it is being run on. Now for NuGet packaging projects when the Create NuGet Package command is selected a normal build is run for the project which ensures referenced projects are built.
Diffstat (limited to 'main/src/addins/MonoDevelop.Packaging')
-rw-r--r--main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.csproj2
-rw-r--r--main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageBuildTarget.cs (renamed from main/src/addins/MonoDevelop.Packaging/CreateNuGetPackageBuildTarget.cs)12
-rw-r--r--main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageHandler.cs6
3 files changed, 13 insertions, 7 deletions
diff --git a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.csproj b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.csproj
index 27ca0879a8..b022204a36 100644
--- a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.csproj
+++ b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.csproj
@@ -108,8 +108,8 @@
<Compile Include="MonoDevelop.Packaging\ReferenceAssemblyFramework.cs" />
<Compile Include="MonoDevelop.Packaging\NuGetProjectReferencePropertyProvider.cs" />
<Compile Include="MonoDevelop.Packaging\NuGetProjectReferencePropertyDescriptor.cs" />
- <Compile Include="CreateNuGetPackageBuildTarget.cs" />
<Compile Include="MonoDevelop.Packaging\DotNetProjectPackagingExtension.cs" />
+ <Compile Include="MonoDevelop.Packaging\CreateNuGetPackageBuildTarget.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\core\MonoDevelop.Core\MonoDevelop.Core.csproj">
diff --git a/main/src/addins/MonoDevelop.Packaging/CreateNuGetPackageBuildTarget.cs b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageBuildTarget.cs
index c6c9d0374e..ff63fba864 100644
--- a/main/src/addins/MonoDevelop.Packaging/CreateNuGetPackageBuildTarget.cs
+++ b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageBuildTarget.cs
@@ -45,9 +45,19 @@ namespace MonoDevelop.Packaging
get { return project.Name; }
}
+ /// <summary>
+ /// If the project is a NuGet packaging project then just use the normal build target.
+ /// This ensures that the dependent projects are built.
+ ///
+ /// Otherwise the Pack target is called.
+ /// </summary>
public async Task<BuildResult> Build (ProgressMonitor monitor, ConfigurationSelector configuration, bool buildReferencedTargets = false, OperationContext operationContext = null)
{
- return (await project.RunTarget (monitor, "Pack", configuration, new TargetEvaluationContext (operationContext))).BuildResult;
+ if (project is PackagingProject) {
+ return (await project.Build (monitor, configuration, buildReferencedTargets, new TargetEvaluationContext (operationContext)));
+ } else {
+ return (await project.RunTarget (monitor, "Pack", configuration, new TargetEvaluationContext (operationContext))).BuildResult;
+ }
}
public bool CanBuild (ConfigurationSelector configuration)
diff --git a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageHandler.cs b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageHandler.cs
index 1e692c91e4..0b80f3d346 100644
--- a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageHandler.cs
+++ b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/CreateNuGetPackageHandler.cs
@@ -38,12 +38,8 @@ namespace MonoDevelop.Packaging
if (project == null)
return;
- // Setting PackOnBuild as a global property does not work since instead
- // a dummy build target is created that calls the Pack target instead.
- var context = new ProjectOperationContext ();
- context.GlobalProperties.SetValue ("PackOnBuild", "true");
var buildTarget = new CreateNuGetPackageBuildTarget (project);
- IdeApp.ProjectOperations.Build (buildTarget, operationContext: context);
+ IdeApp.ProjectOperations.Build (buildTarget);
}
}
}