title: Dotnet/mono build is not reproducible
body: <p>Working on a Mac (same problem on Linux)</p>
  <pre><code>$ rm -rf packages
  $ git checkout upgrades-take2
  $ dotnet clean
  $ nuget restore Dggt.sln
  $ msbuild
  # Fails with one error
  (CoreCompile target) -&gt; Global.asax.cs(10,33): error CS0117: 'GlobalConfiguration' does not contain a definition for 'Configure' [./DggtApi/DggtApi.csproj]
  
  9 Warning(s)
  1 Error(s)
  
  $ rm -rf packages
  $ git checkout develop
  $ dotnet clean
  $ nuget restore Dggt.sln
  $ msbuild
    # Success (3 warnings)
  $ git checkout upgrades-take2
  $ dotnet clean
  $ nuget restore Dggt.sln
  $ msbuild
  # Success (14 warnings)
  </code></pre>
  <p>There are no changes to the code, just the <code>git</code> commands shown above and those packages just being present in the packages folder causes a different build to be produced.  Is .NET always this fragile?  How do we prevent this from happening?</p>
  <p>Branch <code>develop</code> projects are on a mixture of .net452 -&gt; .net472
  Branch <code>upgrade-take2</code> projects are all on .net461</p>
  <p>One of the dependent packages supports 4.6.1 and then jumps straight to .net5, that's why everything is standardized on 4.6.1</p>
  <hr />
  <p>Trying <code>dotnet restore</code> just doesn't work</p>
  <pre><code>$ rm -rf packages/
  $ dotnet restore Dggt.sln
  Determining projects to restore...
  Nothing to do. None of the projects specified contain packages to restore.
  </code></pre>
  <p>This project is not use PackageReferences because when I tried converting to that, all hell broke lose and it wasn't worth trying to fix it.  I just did a <code>git reset --hard</code> on that and that 1000s of build errors vanished.</p>
  <p>I'm using <code>NuGet Version: 5.6.0.6489</code></p>