Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Double Evaluation Fix #2595

Merged
merged 13 commits into from
Oct 11, 2017
Merged

Double Evaluation Fix #2595

merged 13 commits into from
Oct 11, 2017

Commits on Oct 6, 2017

  1. Get properties for ProjectReference in parallel

    In order to avoid batching the
    _GetProjectReferenceTargetFrameworkProperties target for each reference,
    the ProjectReference protocol can be amended to return an item from
    GetTargetFrameworkProperties instead of a semicolon-delimited list of
    key-value pairs. This allows a single build request to be sent to the
    engine, and allows resolving references in parallel on multiprocess
    builds.
    rainersigwald authored and AndyGerlicher committed Oct 6, 2017
    Configuration menu
    Copy the full SHA
    ba8fca1 View commit details
    Browse the repository at this point in the history
  2. Backward compat for GetTargetFrameworkProperties

    The previous commit is a breaking change to the ProjectReference
    protocol, requiring a .NET Core SDK change to return the now-expected
    structured data rather than the old semicolon-delimited string.
    
    That means, for example, that MSBuild v15.5 couldn't build a solution
    containing a full framework project that referenced a .NET Core SDK
    2.0.0 project.
    
    To avoid this, reconstruct the new structured data from the old return
    value:
    * Allow the MSBuild engine to split the returned value on `;` and return
      multiple values.
    * Batch over metadata common to those values to reconstruct a single
      item with the complete string return value.
    * Parse that string into structured metadata on a single item, as though
      the project had returned a single item with metadata.
    * Remove the now-redundant individual-valued items.
    * Continue as before with adjusting the reference items based on the
      metadata.
    rainersigwald authored and AndyGerlicher committed Oct 6, 2017
    Configuration menu
    Copy the full SHA
    ff79ea2 View commit details
    Browse the repository at this point in the history
  3. Clarify existing ProjectReference protocol returns

    In preparation for describing the changes to return values I'd like to make, I need to document what the old ones were.
    rainersigwald authored and AndyGerlicher committed Oct 6, 2017
    Configuration menu
    Copy the full SHA
    8729689 View commit details
    Browse the repository at this point in the history
  4. Document new GetTargetFrameworkProperties return

    Document the more-succinct-but-compatibility-breaking single-item-with-metadata return possibility for GetTargetFrameworkProperties.
    rainersigwald authored and AndyGerlicher committed Oct 6, 2017
    Configuration menu
    Copy the full SHA
    984f381 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    c36bfb3 View commit details
    Browse the repository at this point in the history

Commits on Oct 7, 2017

  1. Identify inner-build in consuming project

    * Call GetTargetFrameworks target to identify target frameworks in
    referenced projects. Since TargetFrameworks is not set, this will avoid
    a 2nd evaluation when the project single targets.
    
    * Adds dependency on NuGet AssignReferenceProperties task.
    rainersigwald authored and AndyGerlicher committed Oct 7, 2017
    Configuration menu
    Copy the full SHA
    bb44739 View commit details
    Browse the repository at this point in the history

Commits on Oct 10, 2017

  1. Move logic out of NuGet

    Handle IsRidAgnostic
    AndyGerlicher committed Oct 10, 2017
    Configuration menu
    Copy the full SHA
    f066173 View commit details
    Browse the repository at this point in the history
  2. Update comments

    Fix MSBuildProjectName
    AndyGerlicher committed Oct 10, 2017
    Configuration menu
    Copy the full SHA
    caf92b2 View commit details
    Browse the repository at this point in the history

Commits on Oct 11, 2017

  1. Configuration menu
    Copy the full SHA
    62094fd View commit details
    Browse the repository at this point in the history
  2. Update NuGet.Build.Tasks

    Doesn't look like the package is signed so this likely won't work.
    AndyGerlicher committed Oct 11, 2017
    Configuration menu
    Copy the full SHA
    21b9a95 View commit details
    Browse the repository at this point in the history
  3. Add NuGet ImportAfter targets to bootstrapped build

    This is needed to get the import to get the automatic import of
    NuGet.targets.
    AndyGerlicher committed Oct 11, 2017
    Configuration menu
    Copy the full SHA
    15afc90 View commit details
    Browse the repository at this point in the history
  4. Comment cleanup

    AndyGerlicher committed Oct 11, 2017
    Configuration menu
    Copy the full SHA
    00e2059 View commit details
    Browse the repository at this point in the history
  5. Preserve project references that opt-out

    Projects that opt-out of GetTargetFrameworks must be preserved (e.g. C# -> C++ references).
    AndyGerlicher committed Oct 11, 2017
    Configuration menu
    Copy the full SHA
    e3ee36f View commit details
    Browse the repository at this point in the history