Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
72d2b319
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
72d2b319
编写于
5月 04, 2017
作者:
P
Paul Vick
提交者:
GitHub
5月 04, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #19249 from dotnet/merges/dev15.3-preview1-to-master-20170504-070008
Merge dev15.3-preview1 to master
上级
f0499d26
8f02e048
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
2 deletion
+16
-2
src/VisualStudio/Core/SolutionExplorerShim/HierarchyItemToProjectIdMap.cs
.../Core/SolutionExplorerShim/HierarchyItemToProjectIdMap.cs
+16
-2
未找到文件。
src/VisualStudio/Core/SolutionExplorerShim/HierarchyItemToProjectIdMap.cs
浏览文件 @
72d2b319
...
...
@@ -29,10 +29,16 @@ public bool TryGetProjectId(IVsHierarchyItem hierarchyItem, string targetFramewo
return
false
;
}
// A project node is represented in two different hierarchies: the solution's IVsHierarchy (where it is a leaf node)
// and the project's own IVsHierarchy (where it is the root node). The IVsHierarchyItem joins them together for the
// purpose of creating the tree displayed in Solution Explorer. The project's hierarchy is what is passed from the
// project system to the language service, so that's the one the one to query here. To do that we need to get
// the "nested" hierarchy from the IVsHierarchyItem.
var
nestedHierarchy
=
hierarchyItem
.
HierarchyIdentity
.
NestedHierarchy
;
var
nestedHierarchyId
=
hierarchyItem
.
HierarchyIdentity
.
NestedItemID
;
if
(!
nestedHierarchy
.
TryGetCanonicalName
(
nestedHierarchyId
,
out
string
nestedCanonicalName
))
if
(!
nestedHierarchy
.
TryGetCanonicalName
(
nestedHierarchyId
,
out
string
nestedCanonicalName
)
||
!
nestedHierarchy
.
TryGetItemName
(
nestedHierarchyId
,
out
string
nestedName
))
{
projectId
=
default
(
ProjectId
);
return
false
;
...
...
@@ -41,8 +47,16 @@ public bool TryGetProjectId(IVsHierarchyItem hierarchyItem, string targetFramewo
var
project
=
_workspace
.
DeferredState
.
ProjectTracker
.
ImmutableProjects
.
Where
(
p
=>
{
// Here we try to match the hierarchy from Solution Explorer to a hierarchy from the Roslyn project.
// The canonical name of a hierarchy item must be unique _within_ an hierarchy, but since we're
// examining multiple hierarchies the canonical name could be the same. Indeed this happens when two
// project files are in the same folder--they both use the full path to the _folder_ as the canonical
// name. To distinguish them we also examine the "regular" name, which will necessarily be different
// if the two projects are in the same folder.
if
(
p
.
Hierarchy
.
TryGetCanonicalName
((
uint
)
VSConstants
.
VSITEMID
.
Root
,
out
string
projectCanonicalName
)
&&
projectCanonicalName
.
Equals
(
nestedCanonicalName
,
System
.
StringComparison
.
OrdinalIgnoreCase
))
&&
p
.
Hierarchy
.
TryGetItemName
((
uint
)
VSConstants
.
VSITEMID
.
Root
,
out
string
projectName
)
&&
projectCanonicalName
.
Equals
(
nestedCanonicalName
,
System
.
StringComparison
.
OrdinalIgnoreCase
)
&&
projectName
.
Equals
(
nestedName
))
{
if
(
targetFrameworkMoniker
==
null
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录