Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
57c81319
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,发现更多精彩内容 >>
提交
57c81319
编写于
7月 19, 2017
作者:
K
Kevin Pilch
提交者:
GitHub
7月 19, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #20950 from Pilchie/Fix466282-UnresolvedAnalyzerReferences
Handle serializing unresolved analyzer references
上级
28af1ec7
c65ce85e
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
84 addition
and
4 deletion
+84
-4
src/VisualStudio/Core/Test.Next/Services/VisualStudioSnapshotSerializationTests.cs
...t.Next/Services/VisualStudioSnapshotSerializationTests.cs
+68
-0
src/VisualStudio/Core/Test.Next/VisualStudioTest.Next.csproj
src/VisualStudio/Core/Test.Next/VisualStudioTest.Next.csproj
+1
-0
src/Workspaces/Core/Portable/Execution/AbstractReferenceSerializationService.cs
...rtable/Execution/AbstractReferenceSerializationService.cs
+13
-2
src/Workspaces/CoreTest/ServicesTest.csproj
src/Workspaces/CoreTest/ServicesTest.csproj
+0
-2
src/Workspaces/CoreTestUtilities/Extensions.cs
src/Workspaces/CoreTestUtilities/Extensions.cs
+0
-0
src/Workspaces/CoreTestUtilities/SnapshotSerializationTestBase.cs
...spaces/CoreTestUtilities/SnapshotSerializationTestBase.cs
+0
-0
src/Workspaces/CoreTestUtilities/WorkspacesTestUtilities.csproj
...rkspaces/CoreTestUtilities/WorkspacesTestUtilities.csproj
+2
-0
未找到文件。
src/VisualStudio/Core/Test.Next/Services/VisualStudioSnapshotSerializationTests.cs
0 → 100644
浏览文件 @
57c81319
using
System.Threading
;
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis
;
using
Microsoft.CodeAnalysis.Diagnostics
;
using
Microsoft.CodeAnalysis.Execution
;
using
Microsoft.CodeAnalysis.Serialization
;
using
Microsoft.CodeAnalysis.UnitTests
;
using
Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem
;
using
Microsoft.VisualStudio.Shell.Interop
;
using
Moq
;
using
Roslyn.Test.Utilities
;
using
Roslyn.Utilities
;
using
Xunit
;
namespace
Roslyn.VisualStudio.Next.UnitTests.Services
{
public
class
VisualStudioSnapshotSerializationTests
:
SnapshotSerializationTestBase
{
[
Fact
,
WorkItem
(
466282
,
"https://devdiv.visualstudio.com/DevDiv/_workitems/edit/466282"
)]
public
async
Task
TestUnresolvedAnalyzerReference
()
{
var
workspace
=
new
AdhocWorkspace
();
var
project
=
workspace
.
CurrentSolution
.
AddProject
(
"empty"
,
"empty"
,
LanguageNames
.
CSharp
);
var
mockFileChangeService
=
new
Mock
<
IVsFileChangeEx
>();
using
(
var
analyzer
=
new
VisualStudioAnalyzer
(
@"PathToAnalyzer"
,
fileChangeService
:
mockFileChangeService
.
Object
,
hostDiagnosticUpdateSource
:
null
,
projectId
:
project
.
Id
,
workspace
:
workspace
,
loader
:
null
,
language
:
project
.
Language
))
{
var
analyzerReference
=
analyzer
.
GetReference
();
project
=
project
.
WithAnalyzerReferences
(
new
AnalyzerReference
[]
{
analyzerReference
,
});
var
checksum
=
await
project
.
State
.
GetChecksumAsync
(
CancellationToken
.
None
).
ConfigureAwait
(
false
);
Assert
.
NotNull
(
checksum
);
var
assetBuilder
=
new
CustomAssetBuilder
(
workspace
);
var
serializer
=
new
Serializer
(
workspace
);
var
asset
=
assetBuilder
.
Build
(
analyzerReference
,
CancellationToken
.
None
);
using
(
var
stream
=
SerializableBytes
.
CreateWritableStream
())
using
(
var
writer
=
new
ObjectWriter
(
stream
))
{
await
asset
.
WriteObjectToAsync
(
writer
,
CancellationToken
.
None
).
ConfigureAwait
(
false
);
stream
.
Position
=
0
;
using
(
var
reader
=
ObjectReader
.
TryGetReader
(
stream
))
{
var
recovered
=
serializer
.
Deserialize
<
AnalyzerReference
>(
asset
.
Kind
,
reader
,
CancellationToken
.
None
);
var
assetFromStorage
=
assetBuilder
.
Build
(
recovered
,
CancellationToken
.
None
);
Assert
.
Equal
(
asset
.
Checksum
,
assetFromStorage
.
Checksum
);
// This won't round trip, but we should get an UnresolvedAnalyzerReference, with the same path
Assert
.
Equal
(
analyzerReference
.
FullPath
,
recovered
.
FullPath
);
}
}
}
}
}
}
src/VisualStudio/Core/Test.Next/VisualStudioTest.Next.csproj
浏览文件 @
57c81319
...
...
@@ -259,6 +259,7 @@
<Compile
Include=
"Mocks\TestOptionSet.cs"
/>
<Compile
Include=
"Remote\JsonConverterTests.cs"
/>
<Compile
Include=
"Remote\RemoteHostClientServiceFactoryTests.cs"
/>
<Compile
Include=
"Services\VisualStudioSnapshotSerializationTests.cs"
/>
<Compile
Include=
"Services\SolutionServiceTests.cs"
/>
<Compile
Include=
"Services\AssetStorageTests.cs"
/>
<Compile
Include=
"Services\AssetServiceTests.cs"
/>
...
...
src/Workspaces/Core/Portable/Execution/AbstractReferenceSerializationService.cs
浏览文件 @
57c81319
...
...
@@ -21,6 +21,7 @@ namespace Microsoft.CodeAnalysis.Execution
internal
abstract
class
AbstractReferenceSerializationService
:
IReferenceSerializationService
{
private
const
int
MetadataFailed
=
int
.
MaxValue
;
private
const
string
VisualStudioUnresolvedAnalyzerReference
=
"Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem.VisualStudioAnalyzer+VisualStudioUnresolvedAnalyzerReference"
;
protected
const
byte
NoEncodingSerialization
=
0
;
protected
const
byte
EncodingSerialization
=
1
;
...
...
@@ -101,13 +102,17 @@ public Checksum CreateChecksum(AnalyzerReference reference, CancellationToken ca
WriteUnresolvedAnalyzerReferenceTo
(
unresolved
,
writer
);
break
;
case
AnalyzerReference
analyzerReference
when
analyzerReference
.
GetType
().
FullName
==
VisualStudioUnresolvedAnalyzerReference
:
WriteUnresolvedAnalyzerReferenceTo
(
analyzerReference
,
writer
);
break
;
case
AnalyzerImageReference
_
:
// TODO: think a way to support this or a way to deal with this kind of situation.
// https://github.com/dotnet/roslyn/issues/15783
throw
new
NotSupportedException
(
nameof
(
AnalyzerImageReference
));
default
:
throw
ExceptionUtilities
.
UnexpectedValue
(
reference
.
GetType
()
);
throw
ExceptionUtilities
.
UnexpectedValue
(
reference
);
}
stream
.
Position
=
0
;
...
...
@@ -184,6 +189,12 @@ public void WriteTo(AnalyzerReference reference, ObjectWriter writer, bool usePa
return
;
}
case
AnalyzerReference
analyzerReference
when
analyzerReference
.
GetType
().
FullName
==
VisualStudioUnresolvedAnalyzerReference
:
{
WriteUnresolvedAnalyzerReferenceTo
(
analyzerReference
,
writer
);
return
;
}
case
AnalyzerImageReference
_
:
{
// TODO: think a way to support this or a way to deal with this kind of situation.
...
...
@@ -192,7 +203,7 @@ public void WriteTo(AnalyzerReference reference, ObjectWriter writer, bool usePa
}
default
:
throw
ExceptionUtilities
.
UnexpectedValue
(
reference
.
GetType
()
);
throw
ExceptionUtilities
.
UnexpectedValue
(
reference
);
}
}
...
...
src/Workspaces/CoreTest/ServicesTest.csproj
浏览文件 @
57c81319
...
...
@@ -72,9 +72,7 @@
<Compile
Include=
"DependentTypeFinderTests.cs"
/>
<Compile
Include=
"Differencing\LongestCommonSubsequenceTests.cs"
/>
<Compile
Include=
"Editting\SyntaxEditorTests.cs"
/>
<Compile
Include=
"Execution\Extensions.cs"
/>
<Compile
Include=
"EditorConfigStorageLocation\EditorConfigStorageLocationTests.cs"
/>
<Compile
Include=
"Execution\SnapshotSerializationTestBase.cs"
/>
<Compile
Include=
"Execution\SnapshotSerializationTests.cs"
/>
<Compile
Include=
"ExtensionOrdererTests.cs"
/>
<Compile
Include=
"Host\WorkspaceServices\TestOptionsServiceFactory.cs"
/>
...
...
src/Workspaces/CoreTest
/Execution
/Extensions.cs
→
src/Workspaces/CoreTest
Utilities
/Extensions.cs
浏览文件 @
57c81319
文件已移动
src/Workspaces/CoreTest
/Execution
/SnapshotSerializationTestBase.cs
→
src/Workspaces/CoreTest
Utilities
/SnapshotSerializationTestBase.cs
浏览文件 @
57c81319
文件已移动
src/Workspaces/CoreTestUtilities/WorkspacesTestUtilities.csproj
浏览文件 @
57c81319
...
...
@@ -58,8 +58,10 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Compile
Include=
"Extensions.cs"
/>
<Compile
Include=
"FileSet.cs"
/>
<Compile
Include=
"Formatting\FormattingTestBase.cs"
/>
<Compile
Include=
"SnapshotSerializationTestBase.cs"
/>
<Compile
Include=
"SolutionTestUtilities.cs"
/>
<Compile
Include=
"SolutionUtilities.cs"
/>
<EmbeddedResource
Include=
"TestFiles\CSharpProject_App.xaml.cs"
>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录