<!-- Build Properties -->
<PropertyGroup>
- <Configuration>Release</Configuration>
- <GenDummyCommand>dotnet $(GenDummyDir)\GenDummy.dll</GenDummyCommand>
- <PublicDummyProjectDir>$(ProjectRootDir).dummy\</PublicDummyProjectDir>
- <InternalDummyProjectDir>$(ProjectRootDir)internal\.dummy\</InternalDummyProjectDir>
+ <Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
+ <BuildWithAnalyzer Condition="'$(BuildWithAnalyzer)' == ''">False</BuildWithAnalyzer>
</PropertyGroup>
<!-- Projects to build -->
<ItemGroup>
- <ProjectToBuild Include="$(ProjectSrcDir)\$(Project)\$(Project).csproj" Condition="'$(Project)' != ''">
- <Visibility>Public</Visibility>
- </ProjectToBuild>
- <ProjectToBuild Include="$(ProjectSrcDir)**\*.csproj" Condition="'$(Project)' == ''">
- <Visibility>Public</Visibility>
- </ProjectToBuild>
- <ProjectToBuild Include="$(InternalProjectSrcDir)**\*.csproj" Condition="'$(Project)' == ''">
- <Visibility>Internal</Visibility>
- </ProjectToBuild>
+ <ProjectToBuild Include="$(ProjectSrcDir)\$(Project)\$(Project).csproj" Condition="'$(Project)' != ''" />
+ <ProjectToBuild Include="$(ProjectSrcDir)**\*.csproj" Condition="'$(Project)' == ''" />
+ <ProjectToBuild Include="$(InternalProjectSrcDir)**\*.csproj" Condition="'$(Project)' == ''" />
+ </ItemGroup>
+
+ <!-- Nuspec files to pack -->
+ <ItemGroup>
+ <NuspecFiles Include="$(ProjectRootDir)pkg\**\*.nuspec" />
</ItemGroup>
<!--
Target : Clean
==============
Delete all artifacts,
- including the Artifacts/ directory and the obj/ directories for all projects.
+ including the Artifacts/ directory and the obj and bin directories of all projects.
-->
<Target Name="Clean">
<ItemGroup>
- <ProjectIntermediateAllFiles Include="$(ProjectSrcDir)**\obj\*" />
- <ProjectIntermediateAllFiles Include="$(InternalProjectSrcDir)**\obj\*" />
+ <ProjectIntermediateAllFiles Include="$(ProjectSrcDir)**\obj\**" />
+ <ProjectIntermediateAllFiles Include="$(ProjectSrcDir)**\bin\**" />
+ <ProjectIntermediateAllFiles Include="$(InternalProjectSrcDir)**\obj\**" />
+ <ProjectIntermediateAllFiles Include="$(InternalProjectSrcDir)**\bin\**" />
<ProjectIntermediateDir Include="@(ProjectIntermediateAllFiles->'%(RootDir)%(Directory)'->Distinct())" />
</ItemGroup>
<ItemGroup>
<DirToRemove Include="$(OutputBaseDir)" />
<DirToRemove Include="@(ProjectIntermediateDir)" />
- <DirToRemove Include="$(PublicDummyProjectDir)" />
- <DirToRemove Include="$(InternalDummyProjectDir)" />
</ItemGroup>
<RemoveDir Directories="@(DirToRemove)" />
<Target Name="Restore">
<MSBuild Projects="@(ProjectToBuild)"
- Properties="Configuration=$(Configuration);RestoreSources=$(RestoreSources)"
+ Properties="Configuration=$(Configuration);RestoreSources=$(RestoreSources);BuildWithAnalyzer=$(BuildWithAnalyzer)"
BuildInParallel="false"
Targets="Restore" />
<Target Name="Build">
<MSBuild Projects="@(ProjectToBuild)"
- Properties="Configuration=$(Configuration)"
+ Properties="Configuration=$(Configuration);BuildWithAnalyzer=$(BuildWithAnalyzer)"
BuildInParallel="true"
UseResultsCache="true"
- Targets="Build" />
+ Targets="Rebuild" />
<MSBuild Projects="@(ProjectToBuild)"
Properties="Configuration=$(Configuration)"
</Target>
<!--
- Target : Dummy
+ Target : Pack
==============
- Generate dummy assemblies of all projects.
+ Generate nuget packages.
-->
- <Target Name="Dummy" DependsOnTargets="GenerateDummyProject">
+ <Target Name="Pack">
- <ItemGroup>
- <DummyProjectToBuild Include="$(PublicDummyProjectDir)**\*.csproj" />
- <DummyProjectToBuild Include="$(InternalDummyProjectDir)**\*.csproj" />
- </ItemGroup>
-
- <MSBuild Projects="@(DummyProjectToBuild)"
- Properties="Configuration=$(Configuration);RestoreSources=$(RestoreSources)"
- BuildInParallel="false"
+ <MSBuild Projects="$(MSBuildThisFileDirectory)pack.csproj"
+ Properties="NoBuild=True"
Targets="Restore" />
- <MSBuild Projects="@(DummyProjectToBuild)"
- Properties="Configuration=$(Configuration);WarningLevel=0;OutDir=$(OutputDummyDir);ProduceReferenceAssembly=False"
- BuildInParallel="true"
- UseResultsCache="true"
- Targets="Build" />
+ <MSBuild Projects="$(MSBuildThisFileDirectory)pack.csproj"
+ Properties="NoBuild=True;Version=$(Version);NuspecFile=%(NuspecFiles.Identity)"
+ Targets="Pack" />
</Target>
-
- <Target Name="GenerateDummyProject" Inputs="@(ProjectToBuild)" Outputs="%(Filename)" >
+ <!--
+ Target : Dummy
+ ==============
+ Generate dummy assemblies of all projects.
+ -->
+ <Target Name="Dummy">
<PropertyGroup>
- <GeneratedDummyAssembly>$(OutputDummyDir)%(ProjectToBuild.Filename).dll</GeneratedDummyAssembly>
- <ClonedProjectsDir Condition="'%(ProjectToBuild.Visibility)' == 'Public'" >$(PublicDummyProjectDir)</ClonedProjectsDir>
- <ClonedProjectsDir Condition="'%(ProjectToBuild.Visibility)' == 'Internal'" >$(InternalDummyProjectDir)</ClonedProjectsDir>
+ <APIToolPath>$(MSBuildThisFileDirectory)..\tools\bin\APITool.dll</APIToolPath>
</PropertyGroup>
- <Message Text="[GenDummy] %(ProjectToBuild.Filename)" Importance="High" />
- <Message Text="Directory = %(ProjectToBuild.Directory)" Importance="High" />
-
- <Exec Command='$(GenDummyCommand) -project %(ProjectToBuild.Filename) -source %(ProjectToBuild.RootDir)%(ProjectToBuild.Directory).. -clonePath $(ClonedProjectsDir)' />
-
- </Target>
+ <MakeDir Directories="$(OutputDummyDir)" />
+ <Exec Command="dotnet $([System.IO.Path]::GetFullPath('$(APIToolPath)')) dummy $(OutputPublicDir)ref $(OutputDummyDir) " />
- <Target Name="AfterDummy">
- <Message Text="Clean Directory" Importance="High" />
- <RemoveDir Directories="$(PublicDummyProjectDir);$(InternalDummyProjectDir)" />
</Target>
</Project>