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>
26 <!-- Nuspec files to pack -->
28 <NuspecFiles Include="$(ProjectRootDir)pkg\*.nuspec" />
35 including the Artifacts/ directory and the obj/ directories for all projects.
40 <ProjectIntermediateAllFiles Include="$(ProjectSrcDir)**\obj\*" />
41 <ProjectIntermediateAllFiles Include="$(InternalProjectSrcDir)**\obj\*" />
42 <ProjectIntermediateDir Include="@(ProjectIntermediateAllFiles->'%(RootDir)%(Directory)'->Distinct())" />
46 <DirToRemove Include="$(OutputBaseDir)" />
47 <DirToRemove Include="@(ProjectIntermediateDir)" />
48 <DirToRemove Include="$(PublicDummyProjectDir)" />
49 <DirToRemove Include="$(InternalDummyProjectDir)" />
52 <RemoveDir Directories="@(DirToRemove)" />
61 <Target Name="Restore">
63 <MSBuild Projects="@(ProjectToBuild)"
64 Properties="Configuration=$(Configuration);RestoreSources=$(RestoreSources)"
65 BuildInParallel="false"
77 <MSBuild Projects="@(ProjectToBuild)"
78 Properties="Configuration=$(Configuration)"
79 BuildInParallel="true"
80 UseResultsCache="true"
83 <MSBuild Projects="@(ProjectToBuild)"
84 Properties="Configuration=$(Configuration)"
85 BuildInParallel="false"
86 Targets="CopyToArtifactsDirectory" />
93 Generate nuget packages.
97 <MSBuild Projects="$(MSBuildThisFileDirectory)pack.csproj"
98 Properties="NoBuild=True"
101 <MSBuild Projects="$(MSBuildThisFileDirectory)pack.csproj"
102 Properties="NoBuild=True;Version=$(Version);NuspecFile=%(NuspecFiles.Identity)"
110 Generate dummy assemblies of all projects.
112 <Target Name="Dummy" DependsOnTargets="GenerateDummyProject">
115 <DummyProjectToBuild Include="$(PublicDummyProjectDir)**\*.csproj" />
116 <DummyProjectToBuild Include="$(InternalDummyProjectDir)**\*.csproj" />
119 <MSBuild Projects="@(DummyProjectToBuild)"
120 Properties="Configuration=$(Configuration);RestoreSources=$(RestoreSources)"
121 BuildInParallel="false"
124 <MSBuild Projects="@(DummyProjectToBuild)"
125 Properties="Configuration=$(Configuration);WarningLevel=0;OutDir=$(OutputDummyDir);ProduceReferenceAssembly=False"
126 BuildInParallel="true"
127 UseResultsCache="true"
133 <Target Name="GenerateDummyProject" Inputs="@(ProjectToBuild)" Outputs="%(Filename)" >
136 <GeneratedDummyAssembly>$(OutputDummyDir)%(ProjectToBuild.Filename).dll</GeneratedDummyAssembly>
137 <ClonedProjectsDir Condition="'%(ProjectToBuild.Visibility)' == 'Public'" >$(PublicDummyProjectDir)</ClonedProjectsDir>
138 <ClonedProjectsDir Condition="'%(ProjectToBuild.Visibility)' == 'Internal'" >$(InternalDummyProjectDir)</ClonedProjectsDir>
141 <Message Text="[GenDummy] %(ProjectToBuild.Filename)" Importance="High" />
142 <Message Text="Directory = %(ProjectToBuild.Directory)" Importance="High" />
144 <Exec Command='$(GenDummyCommand) -project %(ProjectToBuild.Filename) -source %(ProjectToBuild.RootDir)%(ProjectToBuild.Directory).. -clonePath $(ClonedProjectsDir)' />
148 <Target Name="AfterDummy">
149 <Message Text="Clean Directory" Importance="High" />
150 <RemoveDir Directories="$(PublicDummyProjectDir);$(InternalDummyProjectDir)" />