1 <Project DefaultTargets="Build">
3 <Import Project="$(MSBuildThisFileDirectory)directories.props" />
5 <!-- Build Properties -->
7 <Configuration>Release</Configuration>
8 <GenDummyCommand>dotnet $(GenDummyDir)\GenDummy.dll</GenDummyCommand>
9 <PublicDummyProjectDir>$(ProjectRootDir).dummy\</PublicDummyProjectDir>
10 <InternalDummyProjectDir>$(ProjectRootDir)internal\.dummy\</InternalDummyProjectDir>
13 <!-- Projects to build -->
15 <ProjectToBuild Include="$(ProjectSrcDir)\$(Project)\$(Project).csproj" Condition="'$(Project)' != ''">
16 <Visibility>Public</Visibility>
18 <ProjectToBuild Include="$(ProjectSrcDir)**\*.csproj" Condition="'$(Project)' == ''">
19 <Visibility>Public</Visibility>
21 <ProjectToBuild Include="$(InternalProjectSrcDir)**\*.csproj" Condition="'$(Project)' == ''">
22 <Visibility>Internal</Visibility>
30 including the Artifacts/ directory and the obj/ directories for all projects.
35 <ProjectIntermediateAllFiles Include="$(ProjectSrcDir)**\obj\*" />
36 <ProjectIntermediateAllFiles Include="$(InternalProjectSrcDir)**\obj\*" />
37 <ProjectIntermediateDir Include="@(ProjectIntermediateAllFiles->'%(RootDir)%(Directory)'->Distinct())" />
41 <DirToRemove Include="$(OutputBaseDir)" />
42 <DirToRemove Include="@(ProjectIntermediateDir)" />
43 <DirToRemove Include="$(PublicDummyProjectDir)" />
44 <DirToRemove Include="$(InternalDummyProjectDir)" />
47 <RemoveDir Directories="@(DirToRemove)" />
56 <Target Name="Restore">
58 <MSBuild Projects="@(ProjectToBuild)"
59 Properties="Configuration=$(Configuration);RestoreSources=$(RestoreSources)"
60 BuildInParallel="false"
72 <MSBuild Projects="@(ProjectToBuild)"
73 Properties="Configuration=$(Configuration)"
74 BuildInParallel="true"
75 UseResultsCache="true"
78 <MSBuild Projects="@(ProjectToBuild)"
79 Properties="Configuration=$(Configuration)"
80 BuildInParallel="false"
81 Targets="CopyToArtifactsDirectory" />
88 Generate dummy assemblies of all projects.
90 <Target Name="Dummy" DependsOnTargets="GenerateDummyProject">
93 <DummyProjectToBuild Include="$(PublicDummyProjectDir)**\*.csproj" />
94 <DummyProjectToBuild Include="$(InternalDummyProjectDir)**\*.csproj" />
97 <MSBuild Projects="@(DummyProjectToBuild)"
98 Properties="Configuration=$(Configuration);RestoreSources=$(RestoreSources)"
99 BuildInParallel="false"
102 <MSBuild Projects="@(DummyProjectToBuild)"
103 Properties="Configuration=$(Configuration);WarningLevel=0;OutDir=$(OutputDummyDir);ProduceReferenceAssembly=False"
104 BuildInParallel="true"
105 UseResultsCache="true"
111 <Target Name="GenerateDummyProject" Inputs="@(ProjectToBuild)" Outputs="%(Filename)" >
114 <GeneratedDummyAssembly>$(OutputDummyDir)%(ProjectToBuild.Filename).dll</GeneratedDummyAssembly>
115 <ClonedProjectsDir Condition="'%(ProjectToBuild.Visibility)' == 'Public'" >$(PublicDummyProjectDir)</ClonedProjectsDir>
116 <ClonedProjectsDir Condition="'%(ProjectToBuild.Visibility)' == 'Internal'" >$(InternalDummyProjectDir)</ClonedProjectsDir>
119 <Message Text="[GenDummy] %(ProjectToBuild.Filename)" Importance="High" />
120 <Message Text="Directory = %(ProjectToBuild.Directory)" Importance="High" />
122 <Exec Command='$(GenDummyCommand) -project %(ProjectToBuild.Filename) -source %(ProjectToBuild.RootDir)%(ProjectToBuild.Directory).. -clonePath $(ClonedProjectsDir)' />
126 <Target Name="AfterDummy">
127 <Message Text="Clean Directory" Importance="High" />
128 <RemoveDir Directories="$(PublicDummyProjectDir);$(InternalDummyProjectDir)" />