diff options
author | Matt Ward <matt.ward@xamarin.com> | 2016-10-25 14:09:34 +0300 |
---|---|---|
committer | Matt Ward <matt.ward@xamarin.com> | 2016-10-25 14:09:34 +0300 |
commit | c448fd6a81dcf2983a98468553d8df54eb4677d5 (patch) | |
tree | 0c81fe516320d30df72949c6159391fb4104e1df /main/src/addins/MonoDevelop.Packaging | |
parent | 975e574ca612eafde53774d94b3bd08f3bf9750a (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.csproj | 2 | ||||
-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.cs | 6 |
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); } } } |