Skip to content

Commit 9b983cd

Browse files
committed
Adding necessary targets for solution support
Design and Target Graph not final — WIP
1 parent 8877810 commit 9b983cd

4 files changed

Lines changed: 505 additions & 0 deletions

File tree

Sources/MSBuild.Common.Sdk/Core/MSBuild.Core.targets

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,193 @@
66

77
<Import Project="MSBuild.OutputPaths.targets"/>
88

9+
<!--
10+
========================================================================================================================
11+
TARGETS
12+
========================================================================================================================
13+
-->
14+
15+
<!-- Graph Build with ProjectReference -->
16+
<ItemGroup>
17+
<ProjectReferenceTargets Include="Restore" Targets="Restore"/>
18+
<ProjectReferenceTargets Include="Build" Targets="Build"/>
19+
<ProjectReferenceTargets Include="Clean" Targets="Clean"/>
20+
<ProjectReferenceTargets Include="Rebuild" Targets="Rebuild"/>
21+
<ProjectReferenceTargets Include="Test" Targets="Test"/>
22+
<ProjectReferenceTargets Include="Pack" Targets="Pack"/>
23+
<ProjectReferenceTargets Include="Publish" Targets="Publish"/>
24+
</ItemGroup>
25+
26+
<!-- Common Targets for the Project Context -->
27+
28+
<PropertyGroup>
29+
<!-- CollectReferences -->
30+
<CollectReferencesDependsOn>CollectProjectReferences;CollectPackageReferences</CollectReferencesDependsOn>
31+
<!-- PrepareReferences -->
32+
<PrepareReferencesDependsOn>PrepareProjectReferences;PreparePackageReferences</PrepareReferencesDependsOn>
33+
<!-- ResolveReferences -->
34+
<ResolveReferencesDependsOn>ResolveProjectReferences;ResolvePackageReferences</ResolveReferencesDependsOn>
35+
</PropertyGroup>
36+
37+
<PropertyGroup>
38+
<!-- Restore -->
39+
<RestoreDependsOn>RestoreCheck;ResolveReferences</RestoreDependsOn>
40+
<!-- Build -->
41+
<BuildDependsOn>BuildCheck;BuildOnlySettings;ResolveReferences</BuildDependsOn>
42+
<!-- Clean -->
43+
<CleanDependsOn>BuildCheck;CleanBuildFolder;PublishCheck;CleanPublishFolder;PrepareReferences</CleanDependsOn>
44+
</PropertyGroup>
45+
46+
<PropertyGroup Condition="'$(NoBuild)' != 'true'">
47+
<!-- Test -->
48+
<TestDependsOn>BuildCheck;Build</TestDependsOn>
49+
<!-- Pack -->
50+
<PackDependsOn>BuildCheck;Build</PackDependsOn>
51+
<!-- Publish -->
52+
<PublishDependsOn>BuildCheck;Build</PublishDependsOn>
53+
</PropertyGroup>
54+
55+
<PropertyGroup Condition="'$(NoBuild)' == 'true'">
56+
<!-- Test -->
57+
<TestDependsOn>ResolveReferences</TestDependsOn>
58+
<!-- Pack -->
59+
<PackDependsOn>ResolveReferences</PackDependsOn>
60+
<!-- Publish -->
61+
<PublishDependsOn>ResolveReferences</PublishDependsOn>
62+
</PropertyGroup>
63+
64+
<!-- Targets for PackageReference protocol -->
65+
66+
<Target Name="CollectPackageReferences" Returns="@(PackageReference)"/>
67+
68+
<Target Name="PreparePackageReferences">
69+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'PreparePackageReferences' operation."/>
70+
</Target>
71+
72+
<Target Name="ResolvePackageReferences" Returns="@(_ResolvedPackage)">
73+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'ResolvePackageReferences' operation."/>
74+
</Target>
75+
76+
<!-- Targets for ProjectReference protocol -->
77+
78+
<Target Name="CollectProjectReferences" Returns="@(ProjectReference)"/>
79+
80+
<Target Name="PrepareProjectReferences">
81+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'PrepareProjectReferences' operation."/>
82+
</Target>
83+
84+
<Target Name="ResolveProjectReferences" Returns="@(_ResolvedProject)">
85+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'ResolveProjectReferences' operation."/>
86+
</Target>
87+
88+
<Target Name="CollectReferences" DependsOnTargets="$(CollectReferencesDependsOn)" Returns="@(ProjectReference);@(PackageReference)"/>
89+
90+
<Target Name="PrepareReferences" DependsOnTargets="$(PrepareReferencesDependsOn)">
91+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'PrepareReferences' operation."/>
92+
</Target>
93+
94+
<Target Name="ResolveReferences" DependsOnTargets="$(ResolveReferencesDependsOn)" Returns="@(_ResolvedProject);@(_ResolvedPackage)">
95+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'ResolveReferences' operation."/>
96+
</Target>
97+
98+
<Target Name="RestoreCheck">
99+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'RestoreCheck' operation."/>
100+
</Target>
101+
102+
<Target Name="Restore" DependsOnTargets="$(RestoreDependsOn)">
103+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'Restore' operation."/>
104+
</Target>
105+
106+
<PropertyGroup>
107+
<BuildingProject>false</BuildingProject>
108+
<BuildingSolution>false</BuildingSolution>
109+
<BuildingSolutionFile>false</BuildingSolutionFile>
110+
</PropertyGroup>
111+
112+
<Target Name="BuildOnlySettings">
113+
<PropertyGroup>
114+
<BuildingProject>true</BuildingProject>
115+
<BuildingSolution>true</BuildingSolution>
116+
<BuildingSolutionFile>true</BuildingSolutionFile>
117+
</PropertyGroup>
118+
</Target>
119+
120+
<Target Name="BuildCheck">
121+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'BuildCheck' operation."/>
122+
</Target>
123+
124+
<Target Name="Build" DependsOnTargets="$(BuildDependsOn)" Returns="@(CollectedBuildOutput)">
125+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'Build' operation."/>
126+
</Target>
127+
128+
<Target Name="CleanBuildFolder">
129+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'CleanBuildFolder' operation."/>
130+
</Target>
131+
132+
<Target Name="CleanPublishFolder">
133+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'CleanPublishFolder' operation."/>
134+
</Target>
135+
136+
<Target Name="Clean" DependsOnTargets="$(CleanDependsOn)">
137+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'Clean' operation."/>
138+
</Target>
139+
140+
<Target Name="Rebuild" DependsOnTargets="$(RebuildDependsOn)" Returns="@(CollectedBuildOutput)">
141+
<Message Importance="High" Text="Rebuilding the project..."/>
142+
</Target>
143+
144+
<Target Name="MSTest" Condition="'$(BuildingInsideVisualStudio)' != 'true'">
145+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'MSTest' operation."/>
146+
</Target>
147+
148+
<Target Name="VSTest" Condition="'$(BuildingInsideVisualStudio)' == 'true'">
149+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'VSTest' operation."/>
150+
</Target>
151+
152+
<Target Name="Test" DependsOnTargets="$(TestDependsOn)">
153+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'Test' operation."/>
154+
</Target>
155+
156+
<Target Name="Pack" DependsOnTargets="$(PackDependsOn)">
157+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'Pack' operation."/>
158+
</Target>
159+
160+
<Target Name="PublishCheck">
161+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'PublishCheck' operation."/>
162+
</Target>
163+
164+
<Target Name="Publish" DependsOnTargets="$(PublishDependsOn)">
165+
<Warning Code="PROJ0000" File="[MSBuild.Project.Sdk]" Text="The Project does not implement 'Publish' operation."/>
166+
</Target>
167+
168+
<!-- Targets for the Solution Context -->
169+
170+
<Target Name="GetProjectMetadata" Returns="@(_ProjectMetadata)">
171+
172+
<!-- Resolve the current project directory. Make it relative if it is relative to the solution directory. -->
173+
<PropertyGroup>
174+
<_ProjectInSolution Condition="'$(MSBuildSolutionDirectory)' != ''">$(MSBuildProjectDirectory.StartsWith('$(MSBuildSolutionDirectory)'))</_ProjectInSolution>
175+
<_ProjectDirectory Condition="'$(MSBuildSolutionDirectory)' != '' AND '$(_ProjectInSolution)' == 'true'">$([MSBuild]::MakeRelative('$(MSBuildSolutionDirectory)', '$(MSBuildProjectDirectory)'))</_ProjectDirectory>
176+
<_ProjectDirectory Condition="'$(_ProjectDirectory)' == ''">$(MSBuildProjectDirectory)</_ProjectDirectory>
177+
</PropertyGroup>
178+
179+
<!-- Populate `_ProjectMetadata` with the currrent project information -->
180+
<ItemGroup>
181+
<_ProjectMetadata Include="$(MSBuildProjectName)">
182+
<ProjectType>$(MSBuildProjectType)</ProjectType>
183+
<ProjectDirectory>$(_ProjectDirectory)</ProjectDirectory>
184+
<ProjectInSolution>$(_ProjectInSolution)</ProjectInSolution>
185+
<UsingMSBuildSdk>$(UsingMSBuildSdk)</UsingMSBuildSdk>
186+
<Configurations>$(Configurations)</Configurations>
187+
<Platforms>$(Platforms)</Platforms>
188+
</_ProjectMetadata>
189+
</ItemGroup>
190+
191+
<!-- Clean-up temporary properties -->
192+
<PropertyGroup>
193+
<_ProjectDirectory/>
194+
<_ProjectInSolution/>
195+
</PropertyGroup>
196+
</Target>
197+
9198
</Project>

0 commit comments

Comments
 (0)