{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/project-system/pulls/comments/110133955","pull_request_review_id":31282864,"id":110133955,"diff_hunk":"@@ -0,0 +1,163 @@\n+﻿// Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.\n+\n+using System;\n+using System.Collections;\n+using System.ComponentModel.Composition;\n+using System.Linq;\n+using EnvDTE;\n+using Microsoft.VisualStudio.ProjectSystem.VS.ConnectionPoint;\n+using VSLangProj;\n+\n+namespace Microsoft.VisualStudio.ProjectSystem.VS.Automation\n+{\n+    [Export(typeof(Imports))]\n+    [Export(typeof(ImportsEvents))]\n+    [AppliesTo(ProjectCapability.VisualBasic)]\n+    internal class VSImports : ConnectionPointContainer,","path":"src/Microsoft.VisualStudio.ProjectSystem.VisualBasic.VS/ProjectSystem/VS/Automation/VSImports.cs","position":16,"original_position":16,"commit_id":"a62d36ffe0fcc91e7f8056fe997ba6a2ff10da93","original_commit_id":"a62d36ffe0fcc91e7f8056fe997ba6a2ff10da93","user":{"login":"davkean","id":1103906,"avatar_url":"https://avatars2.githubusercontent.com/u/1103906?v=3","gravatar_id":"","url":"https://api.github.com/users/davkean","html_url":"https://github.com/davkean","followers_url":"https://api.github.com/users/davkean/followers","following_url":"https://api.github.com/users/davkean/following{/other_user}","gists_url":"https://api.github.com/users/davkean/gists{/gist_id}","starred_url":"https://api.github.com/users/davkean/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davkean/subscriptions","organizations_url":"https://api.github.com/users/davkean/orgs","repos_url":"https://api.github.com/users/davkean/repos","events_url":"https://api.github.com/users/davkean/events{/privacy}","received_events_url":"https://api.github.com/users/davkean/received_events","type":"User","site_admin":false},"body":"This class works off the \"live\" MSBuild object. Is this how other VS project's implementations work? This can basically change under the consumers as they are working with the object, ie writing a loop that reads Count and then reads an index, can cause them to either index out of range at certain points. ","created_at":"2017-04-06T11:05:27Z","updated_at":"2017-04-06T11:05:27Z","html_url":"https://github.com/dotnet/project-system/pull/1911#discussion_r110133955","pull_request_url":"https://api.github.com/repos/dotnet/project-system/pulls/1911","_links":{"self":{"href":"https://api.github.com/repos/dotnet/project-system/pulls/comments/110133955"},"html":{"href":"https://github.com/dotnet/project-system/pull/1911#discussion_r110133955"},"pull_request":{"href":"https://api.github.com/repos/dotnet/project-system/pulls/1911"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/project-system/pulls/1911","id":113799041,"html_url":"https://github.com/dotnet/project-system/pull/1911","diff_url":"https://github.com/dotnet/project-system/pull/1911.diff","patch_url":"https://github.com/dotnet/project-system/pull/1911.patch","issue_url":"https://api.github.com/repos/dotnet/project-system/issues/1911","number":1911,"state":"open","locked":false,"title":"Namespace Import List for VB Reference Property Page","user":{"login":"basoundr","id":10550513,"avatar_url":"https://avatars1.githubusercontent.com/u/10550513?v=3","gravatar_id":"","url":"https://api.github.com/users/basoundr","html_url":"https://github.com/basoundr","followers_url":"https://api.github.com/users/basoundr/followers","following_url":"https://api.github.com/users/basoundr/following{/other_user}","gists_url":"https://api.github.com/users/basoundr/gists{/gist_id}","starred_url":"https://api.github.com/users/basoundr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/basoundr/subscriptions","organizations_url":"https://api.github.com/users/basoundr/orgs","repos_url":"https://api.github.com/users/basoundr/repos","events_url":"https://api.github.com/users/basoundr/events{/privacy}","received_events_url":"https://api.github.com/users/basoundr/received_events","type":"User","site_admin":false},"body":"This change enables the namespace import list for VB in Reference Property page\r\n\r\nWith the current implementation, we have an timing issue which does not reflect the current state of the import list properly after a change to the list, unless the user moves to a different active page and comes back to the Property page again. Any change performed without switching to a different page will result in a undefined behavior. The problem is, the refresh operation, to update the list, is performed before the Design time build, which is triggered by adding or removing an import. Hence the UI reflects the old state and the MSBuild Evaluation model reflects the new state.\r\n\r\nThis issue could be resolved if the change is pushed to Roslyn workspace before the refresh operation, which is performed after the change. @davkean is working on pushing some information to Roslyn Workspace based on Evaluation rather than the Design time build, which takes more time, which results in the delay. Until this change, the above mentioned issue will persist. Atleast the page is not longer broken with this change :)\r\n\r\nOther FYIs,\r\n1. Check to identify the Roslyn Project to query for current Global imports and namespaces uses Project file path instead of VsHierarchy in ReferencePropPage. We are introducing this change because, with Multi TFMs, the Hierarchy held by the reference page is no longer the same as the Hierarchy provided for a ConfiguredProject(innerbuild)\r\n\r\n2. There are no tests for  VSImports methods which uses IProjectLockService since the access token returned by the service, to modify the Project file, is a struct(ProjectLockReleaser and ProjectWriteLockReleaser) with no virtual methods to mock.\r\n\r\nTagging @dotnet/project-system for review","created_at":"2017-04-01T23:41:21Z","updated_at":"2017-04-06T11:05:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6f4dd1304519fe42a68acf41a8f0aadd5d88893e","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/project-system/pulls/1911/commits","review_comments_url":"https://api.github.com/repos/dotnet/project-system/pulls/1911/comments","review_comment_url":"https://api.github.com/repos/dotnet/project-system/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/project-system/issues/1911/comments","statuses_url":"https://api.github.com/repos/dotnet/project-system/statuses/a62d36ffe0fcc91e7f8056fe997ba6a2ff10da93","head":{"label":"basoundr:ReferencePageImportsList","ref":"ReferencePageImportsList","sha":"a62d36ffe0fcc91e7f8056fe997ba6a2ff10da93","user":{"login":"basoundr","id":10550513,"avatar_url":"https://avatars1.githubusercontent.com/u/10550513?v=3","gravatar_id":"","url":"https://api.github.com/users/basoundr","html_url":"https://github.com/basoundr","followers_url":"https://api.github.com/users/basoundr/followers","following_url":"https://api.github.com/users/basoundr/following{/other_user}","gists_url":"https://api.github.com/users/basoundr/gists{/gist_id}","starred_url":"https://api.github.com/users/basoundr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/basoundr/subscriptions","organizations_url":"https://api.github.com/users/basoundr/orgs","repos_url":"https://api.github.com/users/basoundr/repos","events_url":"https://api.github.com/users/basoundr/events{/privacy}","received_events_url":"https://api.github.com/users/basoundr/received_events","type":"User","site_admin":false},"repo":{"id":58071639,"name":"roslyn-project-system","full_name":"basoundr/roslyn-project-system","owner":{"login":"basoundr","id":10550513,"avatar_url":"https://avatars1.githubusercontent.com/u/10550513?v=3","gravatar_id":"","url":"https://api.github.com/users/basoundr","html_url":"https://github.com/basoundr","followers_url":"https://api.github.com/users/basoundr/followers","following_url":"https://api.github.com/users/basoundr/following{/other_user}","gists_url":"https://api.github.com/users/basoundr/gists{/gist_id}","starred_url":"https://api.github.com/users/basoundr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/basoundr/subscriptions","organizations_url":"https://api.github.com/users/basoundr/orgs","repos_url":"https://api.github.com/users/basoundr/repos","events_url":"https://api.github.com/users/basoundr/events{/privacy}","received_events_url":"https://api.github.com/users/basoundr/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/basoundr/roslyn-project-system","description":"The C# and Visual Basic project system for Visual Studio \"15\"","fork":true,"url":"https://api.github.com/repos/basoundr/roslyn-project-system","forks_url":"https://api.github.com/repos/basoundr/roslyn-project-system/forks","keys_url":"https://api.github.com/repos/basoundr/roslyn-project-system/keys{/key_id}","collaborators_url":"https://api.github.com/repos/basoundr/roslyn-project-system/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/basoundr/roslyn-project-system/teams","hooks_url":"https://api.github.com/repos/basoundr/roslyn-project-system/hooks","issue_events_url":"https://api.github.com/repos/basoundr/roslyn-project-system/issues/events{/number}","events_url":"https://api.github.com/repos/basoundr/roslyn-project-system/events","assignees_url":"https://api.github.com/repos/basoundr/roslyn-project-system/assignees{/user}","branches_url":"https://api.github.com/repos/basoundr/roslyn-project-system/branches{/branch}","tags_url":"https://api.github.com/repos/basoundr/roslyn-project-system/tags","blobs_url":"https://api.github.com/repos/basoundr/roslyn-project-system/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/basoundr/roslyn-project-system/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/basoundr/roslyn-project-system/git/refs{/sha}","trees_url":"https://api.github.com/repos/basoundr/roslyn-project-system/git/trees{/sha}","statuses_url":"https://api.github.com/repos/basoundr/roslyn-project-system/statuses/{sha}","languages_url":"https://api.github.com/repos/basoundr/roslyn-project-system/languages","stargazers_url":"https://api.github.com/repos/basoundr/roslyn-project-system/stargazers","contributors_url":"https://api.github.com/repos/basoundr/roslyn-project-system/contributors","subscribers_url":"https://api.github.com/repos/basoundr/roslyn-project-system/subscribers","subscription_url":"https://api.github.com/repos/basoundr/roslyn-project-system/subscription","commits_url":"https://api.github.com/repos/basoundr/roslyn-project-system/commits{/sha}","git_commits_url":"https://api.github.com/repos/basoundr/roslyn-project-system/git/commits{/sha}","comments_url":"https://api.github.com/repos/basoundr/roslyn-project-system/comments{/number}","issue_comment_url":"https://api.github.com/repos/basoundr/roslyn-project-system/issues/comments{/number}","contents_url":"https://api.github.com/repos/basoundr/roslyn-project-system/contents/{+path}","compare_url":"https://api.github.com/repos/basoundr/roslyn-project-system/compare/{base}...{head}","merges_url":"https://api.github.com/repos/basoundr/roslyn-project-system/merges","archive_url":"https://api.github.com/repos/basoundr/roslyn-project-system/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/basoundr/roslyn-project-system/downloads","issues_url":"https://api.github.com/repos/basoundr/roslyn-project-system/issues{/number}","pulls_url":"https://api.github.com/repos/basoundr/roslyn-project-system/pulls{/number}","milestones_url":"https://api.github.com/repos/basoundr/roslyn-project-system/milestones{/number}","notifications_url":"https://api.github.com/repos/basoundr/roslyn-project-system/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/basoundr/roslyn-project-system/labels{/name}","releases_url":"https://api.github.com/repos/basoundr/roslyn-project-system/releases{/id}","deployments_url":"https://api.github.com/repos/basoundr/roslyn-project-system/deployments","created_at":"2016-05-04T17:41:51Z","updated_at":"2016-10-05T18:40:00Z","pushed_at":"2017-04-05T21:49:18Z","git_url":"git://github.com/basoundr/roslyn-project-system.git","ssh_url":"git@github.com:basoundr/roslyn-project-system.git","clone_url":"https://github.com/basoundr/roslyn-project-system.git","svn_url":"https://github.com/basoundr/roslyn-project-system","homepage":null,"size":13094,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"0ee871fc101e2cfe9c0e692efca6f3ae7aab83e8","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars3.githubusercontent.com/u/9141961?v=3","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":56740275,"name":"project-system","full_name":"dotnet/project-system","owner":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars3.githubusercontent.com/u/9141961?v=3","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/project-system","description":"The C#, F# and Visual Basic project system for Visual Studio","fork":false,"url":"https://api.github.com/repos/dotnet/project-system","forks_url":"https://api.github.com/repos/dotnet/project-system/forks","keys_url":"https://api.github.com/repos/dotnet/project-system/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/project-system/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/project-system/teams","hooks_url":"https://api.github.com/repos/dotnet/project-system/hooks","issue_events_url":"https://api.github.com/repos/dotnet/project-system/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/project-system/events","assignees_url":"https://api.github.com/repos/dotnet/project-system/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/project-system/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/project-system/tags","blobs_url":"https://api.github.com/repos/dotnet/project-system/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/project-system/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/project-system/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/project-system/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/project-system/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/project-system/languages","stargazers_url":"https://api.github.com/repos/dotnet/project-system/stargazers","contributors_url":"https://api.github.com/repos/dotnet/project-system/contributors","subscribers_url":"https://api.github.com/repos/dotnet/project-system/subscribers","subscription_url":"https://api.github.com/repos/dotnet/project-system/subscription","commits_url":"https://api.github.com/repos/dotnet/project-system/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/project-system/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/project-system/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/project-system/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/project-system/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/project-system/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/project-system/merges","archive_url":"https://api.github.com/repos/dotnet/project-system/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/project-system/downloads","issues_url":"https://api.github.com/repos/dotnet/project-system/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/project-system/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/project-system/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/project-system/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/project-system/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/project-system/releases{/id}","deployments_url":"https://api.github.com/repos/dotnet/project-system/deployments","created_at":"2016-04-21T03:40:18Z","updated_at":"2017-04-06T06:30:13Z","pushed_at":"2017-04-06T07:00:29Z","git_url":"git://github.com/dotnet/project-system.git","ssh_url":"git@github.com:dotnet/project-system.git","clone_url":"https://github.com/dotnet/project-system.git","svn_url":"https://github.com/dotnet/project-system","homepage":"","size":13076,"stargazers_count":225,"watchers_count":225,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":74,"mirror_url":null,"open_issues_count":404,"forks":74,"open_issues":404,"watchers":225,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/project-system/pulls/1911"},"html":{"href":"https://github.com/dotnet/project-system/pull/1911"},"issue":{"href":"https://api.github.com/repos/dotnet/project-system/issues/1911"},"comments":{"href":"https://api.github.com/repos/dotnet/project-system/issues/1911/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/project-system/pulls/1911/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/project-system/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/project-system/pulls/1911/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/project-system/statuses/a62d36ffe0fcc91e7f8056fe997ba6a2ff10da93"}}}}
{"actor":{"display_login":"davkean"}}