ProjectsAreNugetPackages 1.0.9

There is a newer version of this package available.
See the version list below for details.
dotnet add package ProjectsAreNugetPackages --version 1.0.9
NuGet\Install-Package ProjectsAreNugetPackages -Version 1.0.9
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ProjectsAreNugetPackages" Version="1.0.9">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ProjectsAreNugetPackages --version 1.0.9
#r "nuget: ProjectsAreNugetPackages, 1.0.9"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ProjectsAreNugetPackages as a Cake Addin
#addin nuget:?package=ProjectsAreNugetPackages&version=1.0.9

// Install ProjectsAreNugetPackages as a Cake Tool
#tool nuget:?package=ProjectsAreNugetPackages&version=1.0.9

ProjectsAreNugetPackages

  • Build a nuget package after having built the project.
  • Consume project dependencies as nuget packages after a one-time migration

Custom Properties

  • BuildNugetPackage: true/false. Whether or not to build a Nuget package after build
  • OfficialBuild: true/false. Helper property to resolve default values for other properties.
  • NugetToolPath: Folder path of Nuget.exe
  • NugetConfig: Path to Nuget.config
  • NuSpecPath: Path to project's nuspec file. If empty, defaults to built-in nuspec file.
  • NugetManufacturer: Package author field.
  • NuspecVersion: Package version (without suffix).
  • NuspecVersionSuffix: Package version suffix. Default to:
    • 'local' on non-official release builds
    • 'localdebug' on non-official debug builds
    • nothing on release official builds
  • NugetIdPrefix: Package prefix. Used to distinguish project dependencies from available packages on nuget.org
  • NugetBuildFolder: Tagret folder for Nuget packages. Expected to exist in nuget.config file.
  • NugetSource: URL to nuget source to add packages to on UploadNugetPackage target
  • NugetUpdatePreRelease: Whether or not to update/install pre-release nuget packages. Used on NugetInstallUpdate target.

Custom Items

  • NugetPackProperty: key=value pairs to pass as properties to Nuget pack command.
  • NugetUpdateSource: List of nuget URLs to update from. Defaults to NugetBuildFolder and NugetSource.

Tasks

  • ConvertProjectRefToNugetPackage: One-time task to convert project refrences and library inputs to Nuget dependencies
    • Inputs:
      • Projects [Required]: Item list with all projects to convert.
      • AllProjects [Required]: string list with all projects
      • PackageIdPrefix: Prefix to project names as Nuget dependencies. See property NugetIdPrefix.
  • ResolveDependants: Resolve build order according to Nuget dependants
    • Inputs:
      • DependecyProject [Required]: The target project to build.
      • AllProjects [Required]: Item list with all projects.
      • PackageIdPrefix: Prefix to project names as Nuget dependencies. See property NugetIdPrefix.
      • ProcessorCount: Maximal projects to build in parallel. Defaults to Environment.ParallelBuildLevel value. See output parameter DependantProjectsBuildOrdered.
    • Outputs:
      • DependantProjectsBuildOrdered: Item list- projects to build in order. Projects that do not depend on DependecyProject are not on the list. Contains metadata ParallelBuildLevel with numeric level order of projects that can be built in parallel.

Targets

  • ConvertProjectRefToNugetPackage: See ConvertProjectRefToNugetPackage task
  • ResolveDependants: See ResolveDependants task
  • NugetInstallUpdate: Install and update nuget packages
  • UploadNugetPackage: Nuget add built package to 'NugetSource' repository
  • CreateNugetPackage: Pack a project.

How to use

First time init

  1. Install the package to all projects
  2. Create a local nuget.config file
  • Add source with relative path to local nuget build folder.
  • [Optional] Add source to organization's nuget repository.
  1. Create a file 'ToduBuild.custom.props' with these properties:
  • NugetConfig
  • NugetIdPrefix
  • NuspecVersion
  • FullVersion (for TidyBuild)
  • [Optional] NugetSource
  1. Build all projects normally
  2. MSBuild all projects with target 'ConvertProjectRefToNugetPackage'
  3. Build again all projects.
  4. Create build.xml file. Sample code:
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildThisFileDirectory)\packages\ProjectsAreNugetPackages.1.0.9\build\ProjectsAreNugetPackages.tasks"/>

  <ItemGroup>
    <AllProjects Include=".\**\*.*proj"/>
  </ItemGroup>
  <ItemDefinitionGroup>
    <AllProjects>
      <Properties>Configuration=Release;Platform=Win32</Properties>
    </AllProjects>
  </ItemDefinitionGroup>

  <PropertyGroup>
    <TargetProject>NativeDll1\NativeDll1.vcxproj</TargetProject>
  </PropertyGroup>

  <Target Name="ResolveBuildOrder">
    <ResolveDependants DependecyProject="$(TargetProject)" AllProjects="@(AllProjects)" PackageIdPrefix="Local.">
      <Output TaskParameter="DependantProjectsBuildOrdered" ItemName="ProjectBuildOrder" />
    </ResolveDependants>
    <Message Text="Project parallel build in step %(ProjectBuildOrder.ParallelBuildLevel): @(ProjectBuildOrder)"/>
  </Target>

  
  <Target Name="Build" DependsOnTargets="ResolveBuildOrder" Inputs="@(ProjectBuildOrder)" Outputs="%(ParallelBuildLevel)\NeverExists">
    <Exec Command='"$(MSBuildBinPath)\MSBuild.exe" "%(ProjectBuildOrder.FullPath)" "/Property:%(ProjectBuildOrder.Properties)" /Target:NugetInstallUpdate' />
    <MSBuild Projects="@(ProjectBuildOrder)" Targets="Rebuild" UnloadProjectsOnCompletion="true" BuildInParallel="true"/>
  </Target>
</Project>

Routine builds

  1. MSBuild build.xml target 'Build'. Make sure to set 'TargetProject' property from command line.
There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.15 1,178 1/12/2018
1.0.14 962 1/10/2018
1.0.13 961 1/9/2018
1.0.11 854 1/9/2018
1.0.10 1,003 1/8/2018
1.0.9 1,137 1/3/2018
1.0.8 924 12/28/2017
1.0.6 955 12/26/2017
1.0.5 1,137 12/25/2017
1.0.4 952 12/24/2017
1.0.3 926 12/24/2017
1.0.0 974 12/20/2017