{"action":"opened","issue":{"url":"https://api.github.com/repos/Microsoft/msbuild/issues/1068","repository_url":"https://api.github.com/repos/Microsoft/msbuild","labels_url":"https://api.github.com/repos/Microsoft/msbuild/issues/1068/labels{/name}","comments_url":"https://api.github.com/repos/Microsoft/msbuild/issues/1068/comments","events_url":"https://api.github.com/repos/Microsoft/msbuild/issues/1068/events","html_url":"https://github.com/Microsoft/msbuild/issues/1068","id":178492493,"number":1068,"title":"Improve ProjectRootElementCache caching strategy","user":{"login":"dsplaisted","id":145043,"avatar_url":"https://avatars.githubusercontent.com/u/145043?v=3","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},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-09-22T00:13:31Z","updated_at":"2016-09-22T00:13:31Z","closed_at":null,"body":"`ProjectRootElementCache.DiscardImplicitReferences` is always called (directly or indirectly) from `BuildManager.BeginBuild`.  The implicit references will be all the `.props` and `.targets` files imported by a project.  These should be the project files that are most likely to be shared between different projects, so it seems counterproductive to force them to be ejected from the cache for each build.\r\n\r\nWith the Chromium solution (which has ~3500 projects), disabling the calls to `DiscardImplicitReferences` improved the time until Visual Studio finished initializing the projects from 18 minutes to 13.5 minutes on the PC I was using to test it.\r\n\r\nWhile this is a great improvement, we need to understand if there is a good reason that the implicit references are being discarded, or if keeping them is likely to negatively impact other scenarios."}}
{"actor":{"display_login":"dsplaisted"}}