title: "Predefined type System.ValueTuple is not defined or imported" after upgrading to .NET 4.7
body: <p>I'm upgrading an existing solution from .NET 4.6.2 to .NET 4.7. This solution depends on several nuget packages that target .NET 4.6.2 and hence depend on the nuget <a href="https://www.nuget.org/packages/System.ValueTuple/" rel="noreferrer">System.ValueTuple</a> package.</p>
  
  <p>But after upgrading, I'm getting a whole bunch of these build errors:</p>
  
  <p><code>Error CS8179 Predefined type 'System.ValueTuple`2' is not defined or imported
  </code></p>
  
  <p>I can't remove the <code>System.ValueTuple</code> package, as suggested in the comments <a href="https://stackoverflow.com/a/43264775/68231">here</a>, because other packages depend on it. (And if I force it, they seem to blow up.)</p>
  
  <p>Any suggestions?</p>
  
  <p><strong>Update 8/8/17</strong></p>
  
  <p>I've figured out that I <em>can</em> remove the <code>System.ValueTuple</code> package, and I can get the solution to compile that way. However, I've got a dozen NuGet packages in the solution which appear to be targeting .NET 4.6.2, and hence require <code>System.ValueTuple</code> as a dependency. I can install those, and then force remove the <code>System.ValueTuple</code> package, but if any of those packages have an update, and I install the update - then the <code>System.ValueTuple</code> package gets installed again, and the system stops building until I remove the package all over again.</p>
  
  <p>In other words, I can make it all work - but it seems awkward and kludgy. Surely there's a better way to approach this?</p>