Skip to content

PackageReference management

Nate McMaster edited this page Oct 21, 2017 · 10 revisions

To manage the complexity of keeping PackageReference versions consistent within a repo and between multiple repos, KoreBuild will enforce the following patterns for using PackageReference.

1. build/dependencies.props

Each repository should have this file, and it should look like this.

<Project>
  <PropertyGroup>
    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
  </PropertyGroup>
  <PropertyGroup Label="Package Versions">
    <NewtonsoftJsonPackageVersion>10.0.1</NewtonsoftJsonPackageVersion>
    <MicrosoftNETTestSdkPackageVersion>15.3.0</MicrosoftNETTestSdkPackageVersion>
    <MoqPackageVersion>4.7.49</MoqPackageVersion>
    <XunitPackageVersion>2.3.0</XunitPackageVersion>
  </PropertyGroup>
  <Import Project="$(DotNetPackageVersionPropsPath)" Condition=" '$(DotNetPackageVersionPropsPath)' != '' " />
</Project>

2. PackageReference's should use variables to set versions

All .csproj files should set the version of a package reference like this:

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
</ItemGroup>

Opt-out

To opt-out of these restrictions, projects should add this to the build/repo.props file in their repository.

<PropertyGroup>
  <DisablePackageReferenceRestrictions>true</DisablePackageReferenceRestrictions>
</PropertyGroup>
Clone this wiki locally