|
46 | 46 | <Message Text="Package Description: $(PackageDescription)" Importance="high" /> |
47 | 47 | </Target> |
48 | 48 |
|
| 49 | + <UsingTask TaskName="DetectProjectReferenceToProjectToBuild" |
| 50 | + TaskFactory="RoslynCodeTaskFactory" |
| 51 | + AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll" > |
| 52 | + <ParameterGroup> |
| 53 | + <ProjectReference ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" /> |
| 54 | + <ProjectToBuild ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" /> |
| 55 | + <ProjectReferenceFound ParameterType="System.Boolean" Output="true" /> |
| 56 | + </ParameterGroup> |
| 57 | + <Task> |
| 58 | + <!--<Using Namespace="System.Linq" />--> |
| 59 | + <Code Type="Fragment" Language="cs"> |
| 60 | + ProjectReferenceFound = false; |
| 61 | + foreach(var pr in ProjectReference) |
| 62 | + { |
| 63 | + Log.LogMessage(MessageImportance.Low, "Project Reference: {0}", pr.ItemSpec); |
| 64 | + foreach(var ptb in ProjectToBuild) |
| 65 | + { |
| 66 | + Log.LogMessage(MessageImportance.Low, "Project To Build: {0}", ptb.ItemSpec); |
| 67 | + if (pr.GetMetadata("Filename").Equals(ptb.ItemSpec, StringComparison.OrdinalIgnoreCase)) |
| 68 | + { |
| 69 | + Log.LogMessage(MessageImportance.High, "Found matching project reference: {0} {1}", pr.ItemSpec, ptb.ItemSpec); |
| 70 | + ProjectReferenceFound = true; |
| 71 | + foreach(string metadataName in pr.MetadataNames) |
| 72 | + { |
| 73 | + Log.LogMessage(MessageImportance.High, "Metadata: {0} = {1}", metadataName, pr.GetMetadata(metadataName)); |
| 74 | + } |
| 75 | + } |
| 76 | + } |
| 77 | + } |
| 78 | + </Code> |
| 79 | + </Task> |
| 80 | + </UsingTask> |
| 81 | + |
49 | 82 | <Target Name="PackIfChanged"> |
50 | 83 | <ItemGroup> |
51 | 84 | <_Temporary Remove="@(_Temporary)" /> |
|
84 | 117 | <Message Importance="high" Text="CommitIDFound: $(CommitIDFound)" /> |
85 | 118 | <ItemGroup> |
86 | 119 | <_Temporary Remove="@(_Temporary)" /> |
87 | | - <_Temporary Include="$(ProjectToBuild)" /> |
| 120 | + <_Temporary Include="$(ProjectToBuild)" Condition="'$(ProjectToBuild)'!=''" /> |
88 | 121 | </ItemGroup> |
89 | 122 | <Message Importance="high" Text="Projects To Build: %(_Temporary.Identity)" /> |
| 123 | + <DetectProjectReferenceToProjectToBuild Condition="'$(ProjectToBuild)'!=''" |
| 124 | + ProjectReference="@(ProjectReference)" |
| 125 | + ProjectToBuild="@(_Temporary)"> |
| 126 | + <Output TaskParameter="ProjectReferenceFound" PropertyName="ProjectReferenceFound" /> |
| 127 | + </DetectProjectReferenceToProjectToBuild> |
| 128 | + <Message Importance="high" Text="Project Reference Found to Build: $(ProjectReferenceFound)" /> |
90 | 129 | <PropertyGroup> |
91 | 130 | <BuildProject>$(CommitIDFound)</BuildProject> |
92 | | - <BuildProject Condition="'$(MSBuildProjectName)'=='%(_Temporary.Identity)'">true</BuildProject> |
| 131 | + <BuildProject Condition="'$(ProjectToBuild)'!='' and '$(MSBuildProjectName)'=='%(_Temporary.Identity)'">true</BuildProject> |
| 132 | + <BuildProject Condition="'$(ProjectToBuild)'!='' and $(ProjectReferenceFound)">true</BuildProject> |
93 | 133 | </PropertyGroup> |
| 134 | + |
94 | 135 | <Message Importance="high" Text="BuildProject: $(BuildProject)" /> |
95 | 136 |
|
96 | 137 | <ItemGroup> |
|
0 commit comments