Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
a56cce29
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,发现更多精彩内容 >>
提交
a56cce29
编写于
1月 29, 2020
作者:
J
Jason Malinowski
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove some duplicate code in VisualStudioProject
上级
d0ca0a22
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
23 addition
and
34 deletion
+23
-34
src/VisualStudio/Core/Def/Implementation/ProjectSystem/SolutionChangeAccumulator.cs
...Implementation/ProjectSystem/SolutionChangeAccumulator.cs
+14
-0
src/VisualStudio/Core/Def/Implementation/ProjectSystem/VisualStudioProject.cs
...e/Def/Implementation/ProjectSystem/VisualStudioProject.cs
+4
-34
src/VisualStudio/Core/Def/Implementation/ProjectSystem/VisualStudioWorkspaceImpl.cs
...Implementation/ProjectSystem/VisualStudioWorkspaceImpl.cs
+5
-0
未找到文件。
src/VisualStudio/Core/Def/Implementation/ProjectSystem/SolutionChangeAccumulator.cs
浏览文件 @
a56cce29
...
...
@@ -2,6 +2,7 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using
System
;
using
System.Collections.Generic
;
using
Microsoft.CodeAnalysis
;
...
...
@@ -19,6 +20,7 @@ internal class SolutionChangeAccumulator
/// <see cref="WorkspaceChangeKind.SolutionChanged"/> if we can't give a more precise type.
/// </summary>
private
WorkspaceChangeKind
?
_workspaceChangeKind
;
private
readonly
List
<
DocumentId
>
_documentIdsRemoved
=
new
List
<
DocumentId
>();
public
SolutionChangeAccumulator
(
Solution
startingSolution
)
{
...
...
@@ -26,6 +28,7 @@ public SolutionChangeAccumulator(Solution startingSolution)
}
public
Solution
Solution
{
get
;
private
set
;
}
public
IEnumerable
<
DocumentId
>
DocumentIdsRemoved
=>
_documentIdsRemoved
;
public
bool
HasChange
=>
_workspaceChangeKind
.
HasValue
;
public
WorkspaceChangeKind
WorkspaceChangeKind
=>
_workspaceChangeKind
.
Value
;
...
...
@@ -75,6 +78,17 @@ public void UpdateSolutionForDocumentAction(Solution newSolution, WorkspaceChang
}
}
/// <summary>
/// The same as <see cref="UpdateSolutionForDocumentAction(Solution, WorkspaceChangeKind, IEnumerable{DocumentId})" /> but also records
/// the removed documents into <see cref="DocumentIdsRemoved"/>.
/// </summary>
public
void
UpdateSolutionForRemovedDocumentAction
(
Solution
solution
,
WorkspaceChangeKind
removeDocumentChangeKind
,
IEnumerable
<
DocumentId
>
documentIdsRemoved
)
{
UpdateSolutionForDocumentAction
(
solution
,
removeDocumentChangeKind
,
documentIdsRemoved
);
_documentIdsRemoved
.
AddRange
(
documentIdsRemoved
);
}
/// <summary>
/// Should be called to update the solution if there isn't a specific document change kind that should be
/// given to <see cref="UpdateSolutionForDocumentAction"/>
...
...
src/VisualStudio/Core/Def/Implementation/ProjectSystem/VisualStudioProject.cs
浏览文件 @
a56cce29
...
...
@@ -422,17 +422,7 @@ private void OnBatchScopeDisposed()
documentsToOpen
,
(
s
,
documents
)
=>
s
.
AddDocuments
(
documents
),
WorkspaceChangeKind
.
DocumentAdded
,
(
s
,
ids
)
=>
{
foreach
(
var
id
in
ids
)
{
// Clear any document-specific data now (like open file trackers, etc.). If we called OnRemoveDocument directly this is
// called, but since we're doing this in one large batch we need to do it now.
_workspace
.
ClearDocumentData
(
id
);
}
return
s
.
RemoveDocuments
(
ids
);
},
(
s
,
ids
)
=>
s
.
RemoveDocuments
(
ids
),
WorkspaceChangeKind
.
DocumentRemoved
);
_additionalFiles
.
UpdateSolutionForBatch
(
...
...
@@ -449,17 +439,7 @@ private void OnBatchScopeDisposed()
return
s
;
},
WorkspaceChangeKind
.
AdditionalDocumentAdded
,
(
s
,
ids
)
=>
{
foreach
(
var
id
in
ids
)
{
// Clear any document-specific data now (like open file trackers, etc.). If we called OnRemoveDocument directly this is
// called, but since we're doing this in one large batch we need to do it now.
_workspace
.
ClearDocumentData
(
id
);
}
return
s
.
RemoveAdditionalDocuments
(
ids
);
},
(
s
,
ids
)
=>
s
.
RemoveAdditionalDocuments
(
ids
),
WorkspaceChangeKind
.
AdditionalDocumentRemoved
);
_analyzerConfigFiles
.
UpdateSolutionForBatch
(
...
...
@@ -468,17 +448,7 @@ private void OnBatchScopeDisposed()
analyzerConfigDocumentsToOpen
,
(
s
,
documents
)
=>
s
.
AddAnalyzerConfigDocuments
(
documents
),
WorkspaceChangeKind
.
AnalyzerConfigDocumentAdded
,
(
s
,
ids
)
=>
{
foreach
(
var
id
in
ids
)
{
// Clear any document-specific data now (like open file trackers, etc.). If we called OnRemoveAnalyzerConfigDocument directly this is
// called, but since we're doing this in one large batch we need to do it now.
_workspace
.
ClearDocumentData
(
id
);
}
return
s
.
RemoveAnalyzerConfigDocuments
(
ids
);
},
(
s
,
ids
)
=>
s
.
RemoveAnalyzerConfigDocuments
(
ids
),
WorkspaceChangeKind
.
AnalyzerConfigDocumentRemoved
);
// Metadata reference adding...
...
...
@@ -1604,7 +1574,7 @@ public void ReorderFiles(ImmutableArray<string> filePaths)
ClearAndZeroCapacity
(
_documentsAddedInBatch
);
// Document removing...
solutionChanges
.
UpdateSolutionForDocumentAction
(
removeDocuments
(
solutionChanges
.
Solution
,
_documentsRemovedInBatch
.
ToImmutableArray
()),
solutionChanges
.
UpdateSolutionFor
Removed
DocumentAction
(
removeDocuments
(
solutionChanges
.
Solution
,
_documentsRemovedInBatch
.
ToImmutableArray
()),
removeDocumentChangeKind
,
_documentsRemovedInBatch
);
...
...
src/VisualStudio/Core/Def/Implementation/ProjectSystem/VisualStudioWorkspaceImpl.cs
浏览文件 @
a56cce29
...
...
@@ -1496,6 +1496,11 @@ public void ApplyBatchChangeToWorkspace(Func<CodeAnalysis.Solution, SolutionChan
return
;
}
foreach
(
var
documentId
in
solutionChangeAccumulator
.
DocumentIdsRemoved
)
{
this
.
ClearDocumentData
(
documentId
);
}
SetCurrentSolution
(
solutionChangeAccumulator
.
Solution
);
RaiseWorkspaceChangedEventAsync
(
solutionChangeAccumulator
.
WorkspaceChangeKind
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录