{"push_id":1019955932,"size":2,"distinct_size":2,"ref":"refs/heads/master","head":"d858d541fb3eda3cf9e4c93b732c5e15f0409229","before":"eaa930b62c456b075ecc29812bdc5839c4fc834c","commits":[{"sha":"98119a01a69bc3fd7438a5cccbb0f9153ab2f7b0","author":{"email":"965d3d046623a60422185e767b991f18e041ab54@microsoft.com","name":"Eric St. John"},"message":"Fix dependency projection\n\nFixes https://github.com/dotnet/corefx/issues/6813\n\nThe CreateTrimDependencyGroups task was incorrectly projecting\nimplementation dependencies to dependency groups that had a different\nimplementation assembly.\n\nFor example:\n\tNETStandard1.0 implementation dll\n\tNET45 facade dll\n\nWe were copying the portable implementation's dependencies into the\nfacade's dependency group.\n\nThis was happening because the task wasn't considering all existing\ndependency goups.  Instead it was just considering the placeholder\ngroups \"specially\" via the TrimFrameworks parameter.\n\nI removed this parameter and refactored the algorithm a bit to\nconsider any dependency group, which includes the placeholders\nas well as any dependency group created by harvesting the references.\n\nThis fixed the projection problem, but now we no longer were getting\ncompile references copied.  We need to preserve compile references\nbecause they are part of the package's compat contract.  If someone\nbuilds a portable library against one of our packages they may depend on\nthe packages transitive dependencies rather than directly referencing\nthose.\n\nFor example:\n - System.Data.SqlClient's reference assembly depends on S.Data.Common\n - Neither S.Data.SqlClient nor S.Data.Common are inbox on desktop.\n - S.Data.SqlClient's desktop implementation does not depend on\nS.Data.Common since it is a facade that only depends on S.Data and\nmscorlib\n - A PCL might reference just S.Data.SqlClient but will have assembly\nrefs to both S.Data.SqlClient and S.Data.Common.\n - We must deploy the S.Data.Common facade on desktop.\n\nTo fix this problem I made sure that PromoteReferenceDependencies always\ncopies the references, even for empty dependency groups (as would be the\ncase for a facade).  My previous change to add this task simply\noverlooked the fact that an empty dependency group needed to be treated\nas a supported framework to promote to as opposed to one to skip over.","distinct":true,"url":"https://api.github.com/repos/dotnet/buildtools/commits/98119a01a69bc3fd7438a5cccbb0f9153ab2f7b0"},{"sha":"d858d541fb3eda3cf9e4c93b732c5e15f0409229","author":{"email":"965d3d046623a60422185e767b991f18e041ab54@microsoft.com","name":"Eric StJohn"},"message":"Merge pull request #530 from ericstj/fixDependencyProjection\n\nFix dependency projection","distinct":true,"url":"https://api.github.com/repos/dotnet/buildtools/commits/d858d541fb3eda3cf9e4c93b732c5e15f0409229"}]}