{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/sdk/pulls/comments/156185225","pull_request_review_id":82622244,"id":156185225,"diff_hunk":"@@ -0,0 +1,233 @@\n+<!--\n+***********************************************************************************************\n+Microsoft.NET.DefaultPackageConflictOverrides.targets\n+\n+WARNING:  DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have\n+          created a backup copy.  Incorrect changes to this file will make it\n+          impossible to load or build your projects from the command-line or the IDE.\n+\n+Copyright (c) .NET Foundation. All rights reserved. \n+***********************************************************************************************\n+-->\n+<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n+\n+  <PropertyGroup>\n+    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>\n+  </PropertyGroup>\n+\n+  <ItemGroup Condition=\"'$(DisableDefaultPackageConflictOverrides)' != 'true'\">\n+    <PackageConflictOverrides Include=\"Microsoft.NETCore.App\">\n+      <OverridenPackages>\n+        Microsoft.CSharp|4.4.0;","path":"src/Tasks/Common/build/Microsoft.NET.DefaultPackageConflictOverrides.targets","position":21,"original_position":21,"commit_id":"28e32682fadcc49d6e5d813ff0d9e413cfa5651f","original_commit_id":"dd07581fe33a2eb6857cd4afff216785a1a741fe","user":{"login":"eerhardt","id":8291187,"avatar_url":"https://avatars3.githubusercontent.com/u/8291187?v=4","gravatar_id":"","url":"https://api.github.com/users/eerhardt","html_url":"https://github.com/eerhardt","followers_url":"https://api.github.com/users/eerhardt/followers","following_url":"https://api.github.com/users/eerhardt/following{/other_user}","gists_url":"https://api.github.com/users/eerhardt/gists{/gist_id}","starred_url":"https://api.github.com/users/eerhardt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eerhardt/subscriptions","organizations_url":"https://api.github.com/users/eerhardt/orgs","repos_url":"https://api.github.com/users/eerhardt/repos","events_url":"https://api.github.com/users/eerhardt/events{/privacy}","received_events_url":"https://api.github.com/users/eerhardt/received_events","type":"User","site_admin":false},"body":"My thinking is that these versions in the SDK won't change going forward.  They are the \"baseline\".\r\n\r\nWe can do the following going forward in future versions of Microsoft.NETCore.App and/or NETStandard.Library:\r\n\r\n1. Provide higher version numbers to the existing packages, and add new packages.  see [MergePackageOverrides](https://github.com/dotnet/sdk/pull/1805/files#diff-210154c344df4e4338c157d85a780a87R44)\r\n1. Set `DisableDefaultPackageConflictOverrides=true` and provide a whole new list of these packages and versions.  Or set that boolean to turn this functionality off all together.\r\n1. Choose to not update these packages/versions in Microsoft.NETCore.App or NETStandard.Library.  This won't cause any correctness issues, since this new check is only a performance optimization.  If a higher Microsoft.CSharp package (say `4.4.1`) conflicts with a future version of Microsoft.NETCore.App, then the existing AssemblyVersion and FileVersion checks will kick in and do the right thing.  They will just happen to be a bit slower than these NuGet version checks.\r\n\r\nI'm choosing to go with the last option for now, until we have data that proves we need to add those future versions to Microsoft.NETCore.App and/or NETStandard.Library.  `>90%` of the conflicts are caused by packages that we aren't shipping new versions for (System.Runtime/Console/Collections/IO/etc).  So even if we don't keep the OOB packages up-to-date, we still get a big perf win here.","created_at":"2017-12-11T20:09:01Z","updated_at":"2017-12-11T20:09:01Z","html_url":"https://github.com/dotnet/sdk/pull/1805#discussion_r156185225","pull_request_url":"https://api.github.com/repos/dotnet/sdk/pulls/1805","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/dotnet/sdk/pulls/comments/156185225"},"html":{"href":"https://github.com/dotnet/sdk/pull/1805#discussion_r156185225"},"pull_request":{"href":"https://api.github.com/repos/dotnet/sdk/pulls/1805"}},"in_reply_to_id":155704611},"pull_request":{"url":"https://api.github.com/repos/dotnet/sdk/pulls/1805","id":157164645,"html_url":"https://github.com/dotnet/sdk/pull/1805","diff_url":"https://github.com/dotnet/sdk/pull/1805.diff","patch_url":"https://github.com/dotnet/sdk/pull/1805.patch","issue_url":"https://api.github.com/repos/dotnet/sdk/issues/1805","number":1805,"state":"open","locked":false,"title":"ResolvePackageFileConflicts performance enhancements","user":{"login":"eerhardt","id":8291187,"avatar_url":"https://avatars3.githubusercontent.com/u/8291187?v=4","gravatar_id":"","url":"https://api.github.com/users/eerhardt","html_url":"https://github.com/eerhardt","followers_url":"https://api.github.com/users/eerhardt/followers","following_url":"https://api.github.com/users/eerhardt/following{/other_user}","gists_url":"https://api.github.com/users/eerhardt/gists{/gist_id}","starred_url":"https://api.github.com/users/eerhardt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eerhardt/subscriptions","organizations_url":"https://api.github.com/users/eerhardt/orgs","repos_url":"https://api.github.com/users/eerhardt/repos","events_url":"https://api.github.com/users/eerhardt/events{/privacy}","received_events_url":"https://api.github.com/users/eerhardt/received_events","type":"User","site_admin":false},"body":"Speed up ResolvePackageFileConflicts by avoiding reading files for their AssemblyVersion.\r\nAllow for packages to override other packages by default.\r\n\r\nHere are my timings before and after my changes on my win-x64 machine. Each scenario was fully built, and then a single \"warm up\" command, followed by 3 captured executions of \r\n```\r\nC:\\temp\\dotnet\\dotnet\\dotnet.exe C:\\temp\\dotnet\\dotnet\\sdk\\2.2.0-preview1-007739\\MSBuild.dll /v:m /m /clp:PerformanceSummary\r\n```\r\n\r\n### Scenario 1 https://github.com/OrchardCMS/OrchardCore\r\n\r\n| Without changes | With changes |\r\n|--------------------|--------------------|\r\n| 2667 ms  ResolvePackageFileConflicts 129 calls | 609 ms  ResolvePackageFileConflicts 129 calls |\r\n| 2630 ms  ResolvePackageFileConflicts 129 calls | 585 ms  ResolvePackageFileConflicts 129 calls |\r\n| 2418 ms  ResolvePackageFileConflicts 129 calls | 598 ms  ResolvePackageFileConflicts 129 calls |\r\n\r\n### Scenario 2 https://github.com/mikeharder/dotnet-cli-perf/tree/8d7493b26fd3a1b3d1ba3fb85fc7e60b0c19618e/scenarios/classlib/core\r\n\r\n| Without changes | With changes |\r\n|--------------------|--------------------|\r\n| 45 ms  ResolvePackageFileConflicts 2 calls | 29 ms  ResolvePackageFileConflicts 2 calls |\r\n| 46 ms  ResolvePackageFileConflicts 2 calls | 29 ms  ResolvePackageFileConflicts 2 calls |\r\n| 45 ms  ResolvePackageFileConflicts 2 calls | 31 ms  ResolvePackageFileConflicts 2 calls |\r\n\r\n### Scenario 3 https://github.com/mikeharder/dotnet-cli-perf/tree/8d7493b26fd3a1b3d1ba3fb85fc7e60b0c19618e/scenarios/web/core\r\n\r\n| Without changes | With changes |\r\n|--------------------|--------------------|\r\n| 78 ms  ResolvePackageFileConflicts 1 calls | 21 ms  ResolvePackageFileConflicts 1 calls |\r\n| 74 ms  ResolvePackageFileConflicts 1 calls | 21 ms  ResolvePackageFileConflicts 1 calls |\r\n| 56 ms  ResolvePackageFileConflicts 1 calls | 21 ms  ResolvePackageFileConflicts 1 calls |","created_at":"2017-12-08T05:04:44Z","updated_at":"2017-12-11T20:09:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"68eb7fb689ea1709e40f177996cd6ccc5fb20419","assignee":null,"assignees":[],"requested_reviewers":[{"login":"dsplaisted","id":145043,"avatar_url":"https://avatars3.githubusercontent.com/u/145043?v=4","gravatar_id":"","url":"https://api.github.com/users/dsplaisted","html_url":"https://github.com/dsplaisted","followers_url":"https://api.github.com/users/dsplaisted/followers","following_url":"https://api.github.com/users/dsplaisted/following{/other_user}","gists_url":"https://api.github.com/users/dsplaisted/gists{/gist_id}","starred_url":"https://api.github.com/users/dsplaisted/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dsplaisted/subscriptions","organizations_url":"https://api.github.com/users/dsplaisted/orgs","repos_url":"https://api.github.com/users/dsplaisted/repos","events_url":"https://api.github.com/users/dsplaisted/events{/privacy}","received_events_url":"https://api.github.com/users/dsplaisted/received_events","type":"User","site_admin":false},{"login":"ericstj","id":8918108,"avatar_url":"https://avatars3.githubusercontent.com/u/8918108?v=4","gravatar_id":"","url":"https://api.github.com/users/ericstj","html_url":"https://github.com/ericstj","followers_url":"https://api.github.com/users/ericstj/followers","following_url":"https://api.github.com/users/ericstj/following{/other_user}","gists_url":"https://api.github.com/users/ericstj/gists{/gist_id}","starred_url":"https://api.github.com/users/ericstj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ericstj/subscriptions","organizations_url":"https://api.github.com/users/ericstj/orgs","repos_url":"https://api.github.com/users/ericstj/repos","events_url":"https://api.github.com/users/ericstj/events{/privacy}","received_events_url":"https://api.github.com/users/ericstj/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/sdk/pulls/1805/commits","review_comments_url":"https://api.github.com/repos/dotnet/sdk/pulls/1805/comments","review_comment_url":"https://api.github.com/repos/dotnet/sdk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/sdk/issues/1805/comments","statuses_url":"https://api.github.com/repos/dotnet/sdk/statuses/28e32682fadcc49d6e5d813ff0d9e413cfa5651f","head":{"label":"eerhardt:FixConflictResolutionPerf","ref":"FixConflictResolutionPerf","sha":"28e32682fadcc49d6e5d813ff0d9e413cfa5651f","user":{"login":"eerhardt","id":8291187,"avatar_url":"https://avatars3.githubusercontent.com/u/8291187?v=4","gravatar_id":"","url":"https://api.github.com/users/eerhardt","html_url":"https://github.com/eerhardt","followers_url":"https://api.github.com/users/eerhardt/followers","following_url":"https://api.github.com/users/eerhardt/following{/other_user}","gists_url":"https://api.github.com/users/eerhardt/gists{/gist_id}","starred_url":"https://api.github.com/users/eerhardt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eerhardt/subscriptions","organizations_url":"https://api.github.com/users/eerhardt/orgs","repos_url":"https://api.github.com/users/eerhardt/repos","events_url":"https://api.github.com/users/eerhardt/events{/privacy}","received_events_url":"https://api.github.com/users/eerhardt/received_events","type":"User","site_admin":false},"repo":{"id":71504349,"name":"sdk","full_name":"eerhardt/sdk","owner":{"login":"eerhardt","id":8291187,"avatar_url":"https://avatars3.githubusercontent.com/u/8291187?v=4","gravatar_id":"","url":"https://api.github.com/users/eerhardt","html_url":"https://github.com/eerhardt","followers_url":"https://api.github.com/users/eerhardt/followers","following_url":"https://api.github.com/users/eerhardt/following{/other_user}","gists_url":"https://api.github.com/users/eerhardt/gists{/gist_id}","starred_url":"https://api.github.com/users/eerhardt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eerhardt/subscriptions","organizations_url":"https://api.github.com/users/eerhardt/orgs","repos_url":"https://api.github.com/users/eerhardt/repos","events_url":"https://api.github.com/users/eerhardt/events{/privacy}","received_events_url":"https://api.github.com/users/eerhardt/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/eerhardt/sdk","description":"Core functionality needed to create .NET Core projects, that is shared between VisualStudio and CLI","fork":true,"url":"https://api.github.com/repos/eerhardt/sdk","forks_url":"https://api.github.com/repos/eerhardt/sdk/forks","keys_url":"https://api.github.com/repos/eerhardt/sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/eerhardt/sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/eerhardt/sdk/teams","hooks_url":"https://api.github.com/repos/eerhardt/sdk/hooks","issue_events_url":"https://api.github.com/repos/eerhardt/sdk/issues/events{/number}","events_url":"https://api.github.com/repos/eerhardt/sdk/events","assignees_url":"https://api.github.com/repos/eerhardt/sdk/assignees{/user}","branches_url":"https://api.github.com/repos/eerhardt/sdk/branches{/branch}","tags_url":"https://api.github.com/repos/eerhardt/sdk/tags","blobs_url":"https://api.github.com/repos/eerhardt/sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/eerhardt/sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/eerhardt/sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/eerhardt/sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/eerhardt/sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/eerhardt/sdk/languages","stargazers_url":"https://api.github.com/repos/eerhardt/sdk/stargazers","contributors_url":"https://api.github.com/repos/eerhardt/sdk/contributors","subscribers_url":"https://api.github.com/repos/eerhardt/sdk/subscribers","subscription_url":"https://api.github.com/repos/eerhardt/sdk/subscription","commits_url":"https://api.github.com/repos/eerhardt/sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/eerhardt/sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/eerhardt/sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/eerhardt/sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/eerhardt/sdk/contents/{+path}","compare_url":"https://api.github.com/repos/eerhardt/sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/eerhardt/sdk/merges","archive_url":"https://api.github.com/repos/eerhardt/sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/eerhardt/sdk/downloads","issues_url":"https://api.github.com/repos/eerhardt/sdk/issues{/number}","pulls_url":"https://api.github.com/repos/eerhardt/sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/eerhardt/sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/eerhardt/sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/eerhardt/sdk/labels{/name}","releases_url":"https://api.github.com/repos/eerhardt/sdk/releases{/id}","deployments_url":"https://api.github.com/repos/eerhardt/sdk/deployments","created_at":"2016-10-20T21:04:59Z","updated_at":"2016-10-20T21:05:02Z","pushed_at":"2017-12-09T23:30:24Z","git_url":"git://github.com/eerhardt/sdk.git","ssh_url":"git@github.com:eerhardt/sdk.git","clone_url":"https://github.com/eerhardt/sdk.git","svn_url":"https://github.com/eerhardt/sdk","homepage":"","size":3314,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"cb20a5fb09b3ea65193a098ba5e770cc8b34ec1b","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":63984307,"name":"sdk","full_name":"dotnet/sdk","owner":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dotnet/sdk","description":"Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI","fork":false,"url":"https://api.github.com/repos/dotnet/sdk","forks_url":"https://api.github.com/repos/dotnet/sdk/forks","keys_url":"https://api.github.com/repos/dotnet/sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/sdk/teams","hooks_url":"https://api.github.com/repos/dotnet/sdk/hooks","issue_events_url":"https://api.github.com/repos/dotnet/sdk/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/sdk/events","assignees_url":"https://api.github.com/repos/dotnet/sdk/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/sdk/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/sdk/tags","blobs_url":"https://api.github.com/repos/dotnet/sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/sdk/languages","stargazers_url":"https://api.github.com/repos/dotnet/sdk/stargazers","contributors_url":"https://api.github.com/repos/dotnet/sdk/contributors","subscribers_url":"https://api.github.com/repos/dotnet/sdk/subscribers","subscription_url":"https://api.github.com/repos/dotnet/sdk/subscription","commits_url":"https://api.github.com/repos/dotnet/sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/sdk/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/sdk/merges","archive_url":"https://api.github.com/repos/dotnet/sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/sdk/downloads","issues_url":"https://api.github.com/repos/dotnet/sdk/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/sdk/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/sdk/releases{/id}","deployments_url":"https://api.github.com/repos/dotnet/sdk/deployments","created_at":"2016-07-22T21:26:02Z","updated_at":"2017-12-06T00:21:29Z","pushed_at":"2017-12-11T08:00:37Z","git_url":"git://github.com/dotnet/sdk.git","ssh_url":"git@github.com:dotnet/sdk.git","clone_url":"https://github.com/dotnet/sdk.git","svn_url":"https://github.com/dotnet/sdk","homepage":"https://dot.net/core","size":3348,"stargazers_count":180,"watchers_count":180,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":110,"mirror_url":null,"archived":false,"open_issues_count":282,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":110,"open_issues":282,"watchers":180,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/sdk/pulls/1805"},"html":{"href":"https://github.com/dotnet/sdk/pull/1805"},"issue":{"href":"https://api.github.com/repos/dotnet/sdk/issues/1805"},"comments":{"href":"https://api.github.com/repos/dotnet/sdk/issues/1805/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/sdk/pulls/1805/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/sdk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/sdk/pulls/1805/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/sdk/statuses/28e32682fadcc49d6e5d813ff0d9e413cfa5651f"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"eerhardt"}}