From bfbfec3546735292d10b6d022ea78eaa763a5a7b Mon Sep 17 00:00:00 2001 From: David Poeschl Date: Tue, 4 Aug 2015 14:31:34 -0700 Subject: [PATCH 01/83] Allow CodeFixes to edit closed AdditionalDocuments under global undo transactions Fixes #3967 Update RoslynVisualStudioWorkspace.OpenInvisibleEditor to remove the assumption that Solution.GetDocument(DocumentId) will always work for a given IVisualStudioHostDocument's ID. GetDocument returns null on all AdditionalDocuments, causing the eventual reported NullReferenceException. --- .../Core/Impl/RoslynVisualStudioWorkspace.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/VisualStudio/Core/Impl/RoslynVisualStudioWorkspace.cs b/src/VisualStudio/Core/Impl/RoslynVisualStudioWorkspace.cs index 10ce8e9eba700..d7621476ee872 100644 --- a/src/VisualStudio/Core/Impl/RoslynVisualStudioWorkspace.cs +++ b/src/VisualStudio/Core/Impl/RoslynVisualStudioWorkspace.cs @@ -124,8 +124,22 @@ internal override IInvisibleEditor OpenInvisibleEditor(IVisualStudioHostDocument { // We need to ensure the file is saved, only if a global undo transaction is open var globalUndoService = this.Services.GetService(); - bool needsSave = globalUndoService.IsGlobalTransactionOpen(this); - bool needsUndoDisabled = needsSave && this.Services.GetService().IsGeneratedCode(this.CurrentSolution.GetDocument(hostDocument.Id)); + var needsSave = globalUndoService.IsGlobalTransactionOpen(this); + + var needsUndoDisabled = false; + if (needsSave) + { + if (this.CurrentSolution.ContainsDocument(hostDocument.Id)) + { + // Disable undo on generated documents + needsUndoDisabled = this.Services.GetService().IsGeneratedCode(this.CurrentSolution.GetDocument(hostDocument.Id)); + } + else + { + // Enable undo on "additional documents" or if no document can be found. + needsUndoDisabled = false; + } + } return new InvisibleEditor(ServiceProvider, hostDocument.FilePath, needsSave, needsUndoDisabled); } From c1d17619558b7ee4263cb3cbbcc997a8f7498baa Mon Sep 17 00:00:00 2001 From: Gen Lu Date: Wed, 16 Sep 2015 18:35:44 -0700 Subject: [PATCH 02/83] Change interactive window behavior when typing inside readonly area Affected operations including: - Delete (and TypeChar) - Backspace - Return - Cut - Paste --- .../Editor/InteractiveWindow.UIThreadOnly.cs | 141 ++++++++++++++---- 1 file changed, 114 insertions(+), 27 deletions(-) diff --git a/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs b/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs index e6b78f2cb2ede..c97dbe7143661 100644 --- a/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs +++ b/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs @@ -577,7 +577,20 @@ private void RestoreUncommittedInput() /// public bool Paste() { - MoveCaretToClosestEditableBuffer(); + if (!TextView.Selection.IsEmpty) + { + CutOrDeleteSelectionThenMoveCaret(isCut: false); + } + else if (IsInActivePrompt(TextView.Caret.Position.BufferPosition)) + { + MoveCaretToClosestEditableBuffer(); + } + + // selection isn't empty means none of the selected area is editable + if (!TextView.Selection.IsEmpty) + { + return true; + } string format = Evaluator.FormatClipboard(); if (format != null) @@ -1146,12 +1159,39 @@ private int GetPromptIndexForPoint(ReadOnlyCollection sourceSpans, index--; } // Find the nearest preceding prompt. - while (!IsPrompt(sourceSpans[index])) + while (index >=0 && !IsPrompt(sourceSpans[index])) { index--; } return index; } + + private bool IsInActivePrompt(SnapshotPoint point) + { + var editableBuffer = ReadingStandardInput ? StandardInputBuffer : CurrentLanguageBuffer; + if (editableBuffer == null) + { + return false; + } + + var sourceSpans = GetSourceSpans(point.Snapshot); + var index = GetSourceSpanIndex(sourceSpans, point); + if (index == sourceSpans.Count) + { + index--; + } + + if (!IsPrompt(sourceSpans[index])) + { + return false; + } + + // always has a span following prompt. + var followingSpan = sourceSpans[index + 1]; + // if the following span is in editable buffer, then the prompt must be active. + return GetPositionInBuffer(followingSpan.Start, editableBuffer) != null; + } + /// /// Return the index of the span containing the point. Returns the /// length of the collection if the point is at the end of the last span. @@ -2108,17 +2148,24 @@ public bool Delete() bool handled = false; if (!TextView.Selection.IsEmpty) { - if (TextView.Selection.Mode == TextSelectionMode.Stream || ReduceBoxSelectionToEditableBox()) - { - CutOrDeleteSelection(isCut: false); - MoveCaretToClosestEditableBuffer(); - handled = true; - } + CutOrDeleteSelectionThenMoveCaret(isCut: false); + handled = true; + } + else if (IsInActivePrompt(TextView.Caret.Position.BufferPosition)) + { + MoveCaretToClosestEditableBuffer(); } - return handled; } + private bool IsSteamSelectionInEditableBuffer(ITextSelection selection) + { + Debug.Assert(selection.Mode == TextSelectionMode.Stream); + + return MapToEditableBuffer(selection.AnchorPoint.Position) != null || + MapToEditableBuffer(selection.ActivePoint.Position) != null; + } + private bool ReduceBoxSelectionToEditableBox(bool isDelete = true) { Debug.Assert(TextView.Selection.Mode == TextSelectionMode.Box); @@ -2191,8 +2238,7 @@ private bool ReduceBoxSelectionToEditableBox(ref VirtualSnapshotPoint selectionT if (selectionLeftColumn > maxPromptLength || maxPromptLength == minPromptLength) { selectionTopLine = editableLine; - selectionLeftColumn = Math.Max(selectionLeftColumn, maxPromptLength); - result = false; + selectionLeftColumn = Math.Max(selectionLeftColumn, maxPromptLength); } } else @@ -2250,16 +2296,22 @@ private void MeasurePrompts(int startLine, int endLine, out int minPromptLength, /// Implements . public void Cut() { - if (TextView.Selection.IsEmpty) + if (!TextView.Selection.IsEmpty) { - CutOrDeleteCurrentLine(isCut: true); + CutOrDeleteSelectionThenMoveCaret(isCut: true); + return; } - else + + var caretPosition = TextView.Caret.Position.BufferPosition; + + // don't cut and move caret if it's in readonly buffer (except in active prompt) + if (GetPositionInLanguageBuffer(caretPosition) != null || + GetPositionInStandardInputBuffer(caretPosition) != null || + IsInActivePrompt(caretPosition)) { - CutOrDeleteSelection(isCut: true); + CutOrDeleteCurrentLine(isCut: true); + MoveCaretToClosestEditableBuffer(); } - - MoveCaretToClosestEditableBuffer(); } private void CutOrDeleteCurrentLine(bool isCut) @@ -2273,6 +2325,24 @@ private void CutOrDeleteCurrentLine(bool isCut) TextView.Caret.MoveTo(new VirtualSnapshotPoint(TextView.TextBuffer.CurrentSnapshot.GetLineFromLineNumber(line.LineNumber), column)); } + /// + /// If any of currently selected text is editable, then deletes editable selection, optionally saves it to the clipboard + /// and moves caret to closest location in editable buffer. Otherwise do nothing (and preserve selection). + /// + private void CutOrDeleteSelectionThenMoveCaret(bool isCut) + { + if (!TextView.Selection.IsEmpty) + { + if (TextView.Selection.Mode == TextSelectionMode.Stream ? + IsSteamSelectionInEditableBuffer(TextView.Selection) : + ReduceBoxSelectionToEditableBox()) + { + CutOrDeleteSelection(isCut: false); + MoveCaretToClosestEditableBuffer(); + } + } + } + /// /// Deletes currently selected text from the language buffer and optionally saves it to the clipboard. /// @@ -2281,7 +2351,7 @@ private void CutOrDeleteSelection(bool isCut) CutOrDelete(TextView.Selection.SelectedSpans, isCut); // if the selection spans over prompts the prompts remain selected, so clear manually: - TextView.Selection.Clear(); + TextView.Selection.Clear(); } private void CutOrDelete(IEnumerable projectionSpans, bool isCut) @@ -2425,13 +2495,16 @@ public bool Backspace() { if (TextView.Selection.Mode == TextSelectionMode.Stream || ReduceBoxSelectionToEditableBox()) { - CutOrDeleteSelection(isCut: false); - MoveCaretToClosestEditableBuffer(); + CutOrDeleteSelectionThenMoveCaret(isCut: false); handled = true; } } else if (TextView.Caret.Position.VirtualSpaces == 0) { + if (IsInActivePrompt(TextView.Caret.Position.BufferPosition)) + { + MoveCaretToClosestEditableBuffer(); + } DeletePreviousCharacter(); handled = true; } @@ -2586,8 +2659,28 @@ private bool HandlePostServicesReturn(bool trySubmit) return false; } + if (!TextView.Selection.IsEmpty) + { + CutOrDeleteSelectionThenMoveCaret(isCut: false); + } + else if (IsInActivePrompt(TextView.Caret.Position.BufferPosition)) + { + MoveCaretToClosestEditableBuffer(); + } + + // there are only two possible outcomes from actions above: + // 1. selection is not empty, which means none of the selected span is editable + // 2. selection is empty and caret is in an editable buffer + + // Do nothing if none of the selected span is editable + if (!TextView.Selection.IsEmpty) + { + return true; + } + // handle "RETURN" command that is not handled by either editor or service var langCaret = GetPositionInLanguageBuffer(TextView.Caret.Position.BufferPosition); + if (langCaret != null) { int caretPosition = langCaret.Value.Position; @@ -2603,15 +2696,9 @@ private bool HandlePostServicesReturn(bool trySubmit) CurrentLanguageBuffer.Insert(caretPosition, _lineBreakString); IndentCurrentLine(TextView.Caret.Position.BufferPosition); ScrollToCaret(); - - return true; - } - else - { - MoveCaretToClosestEditableBuffer(); } - return false; + return true; } private bool CanExecuteActiveCode() From f22bbdd6ce4854acae8da67a15e429dcc02fa2c8 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Fri, 18 Sep 2015 17:29:24 +0800 Subject: [PATCH 03/83] Fix InsertAwait --- .../Diagnostics/Async/AddAwaitTests.cs | 105 ++++++++++++++++++ .../Diagnostics/Async/AddAwaitTests.vb | 54 +++++++++ .../Async/CSharpAddAwaitCodeFixProvider.cs | 35 +++--- .../VisualBasicAddAwaitCodeFixProvider.vb | 21 ++-- 4 files changed, 192 insertions(+), 23 deletions(-) diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs index 15c3c365b2556..7cc19b0927e21 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs @@ -48,6 +48,43 @@ async Task Test2() Test(initial, expected); } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] + public void BadAsyncReturnOperand1_WithLeadingTrivia() + { + var initial = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() + { + return 3; + } + + async Task Test2() + { + [|return /* dada! */ Test();|] + } +}"; + + var expected = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() + { + return 3; + } + + async Task Test2() + { + return /* dada! */ await Test(); + } +}"; + Test(initial, expected); + } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] public void TaskNotAwaited() { @@ -73,6 +110,35 @@ async void Test() Test(initial, expected); } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] + public void TaskNotAwaited_WithLeadingTrivia() + { + var initial = +@"using System.Threading.Tasks; +class Program +{ + async void Test() + { + + // Useful comment + [|Task.Delay(3);|] + } +}"; + + var expected = +@"using System.Threading.Tasks; +class Program +{ + async void Test() + { + + // Useful comment + await Task.Delay(3); + } +}"; + Test(initial, expected); + } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] public void FunctionNotAwaited() { @@ -108,6 +174,45 @@ async void Test() Test(initial, expected); } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] + public void FunctionNotAwaited_WithLeadingTrivia() + { + var initial = +@"using System.Threading.Tasks; +class Program +{ + Task AwaitableFunction() + { + return Task.FromResult(true); + } + + async void Test() + { + + // Useful comment + [|AwaitableFunction();|] + } +}"; + + var expected = +@"using System.Threading.Tasks; +class Program +{ + Task AwaitableFunction() + { + return Task.FromResult(true); + } + + async void Test() + { + + // Useful comment + await AwaitableFunction(); + } +}"; + Test(initial, expected); + } + internal override Tuple CreateDiagnosticProviderAndFixer(Workspace workspace) { return new Tuple(null, new CSharpAddAwaitCodeFixProvider()); diff --git a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb index 5946540664269..4bfb344b2bb90 100644 --- a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb @@ -17,6 +17,14 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Diagnostics.AddAsy ) End Sub + + Public Sub TaskNotAwaited_WithLeadingTrivia() + Test( + NewLines("Imports System \n Imports System.Threading.Tasks \n Module Program \n Async Sub MySub() \n ' Useful comment \n [|Task.Delay(3)|] \n End Sub \n End Module"), + NewLines("Imports System \n Imports System.Threading.Tasks \n Module Program \n Async Sub MySub() \n ' Useful comment \n Await Task.Delay(3) \n End Sub \n End Module"), +) + End Sub + Public Sub BadAsyncReturnOperand1() Dim initial = @@ -96,6 +104,50 @@ End Module Test(initial, expected) End Sub + + Public Sub FunctionNotAwaited_WithLeadingTrivia() + Dim initial = + +Imports System +Imports System.Collections.Generic +Imports System.Linq +Imports System.Threading.Tasks + +Module Program + Function AwaitableFunction() As Task + Return New Task() + End Function + + Async Sub MySub() + + ' Useful comment + [|AwaitableFunction()|] + End Sub +End Module + + Dim expected = + +Imports System +Imports System.Collections.Generic +Imports System.Linq +Imports System.Threading.Tasks + +Module Program + Function AwaitableFunction() As Task + Return New Task() + End Function + + Async Sub MySub() + + ' Useful comment + Await AwaitableFunction() + End Sub +End Module + + + Test(initial, expected) + End Sub + Public Sub SubLambdaNotAwaited() Dim initial = @@ -144,6 +196,7 @@ Imports System.Threading.Tasks Module Program Sub MySub() Dim a = Async Function() + ' Useful comment [|Task.Delay(1)|] End Function End Sub @@ -159,6 +212,7 @@ Imports System.Threading.Tasks Module Program Sub MySub() Dim a = Async Function() + ' Useful comment Await Task.Delay(1) End Function End Sub diff --git a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs index bee42e5f99670..d281dc82e5a1b 100644 --- a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs +++ b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs @@ -17,12 +17,12 @@ namespace Microsoft.CodeAnalysis.CSharp.CodeFixes.Async internal class CSharpAddAwaitCodeFixProvider : AbstractAddAsyncAwaitCodeFixProvider { /// - /// Since this is an async method, the return expression must be of type 'blah' rather than 'baz' + /// Because this call is not awaited, execution of the current method continues before the call is completed. /// private const string CS4014 = "CS4014"; /// - /// Because this call is not awaited, execution of the current method continues before the call is completed. + /// Since this is an async method, the return expression must be of type 'blah' rather than 'baz' /// private const string CS4016 = "CS4016"; @@ -39,28 +39,24 @@ protected override string GetDescription(Diagnostic diagnostic, SyntaxNode node, protected override Task GetNewRoot(SyntaxNode root, SyntaxNode oldNode, SemanticModel semanticModel, Diagnostic diagnostic, Document document, CancellationToken cancellationToken) { var expression = oldNode as ExpressionSyntax; + if (expression == null) + { + return SpecializedTasks.Default(); + } switch (diagnostic.Id) { case CS4014: - if (expression == null) - { - return Task.FromResult(null); - } - return Task.FromResult(root.ReplaceNode(oldNode, ConvertToAwaitExpression(expression))); - case CS4016: - if (expression == null) - { - return SpecializedTasks.Default(); - } + case CS4016: if (!IsCorrectReturnType(expression, semanticModel)) { return SpecializedTasks.Default(); } return Task.FromResult(root.ReplaceNode(oldNode, ConvertToAwaitExpression(expression))); + default: return SpecializedTasks.Default(); } @@ -76,8 +72,19 @@ private bool IsCorrectReturnType(ExpressionSyntax expression, SemanticModel sema private static ExpressionSyntax ConvertToAwaitExpression(ExpressionSyntax expression) { - return SyntaxFactory.AwaitExpression(expression) - .WithAdditionalAnnotations(Formatter.Annotation); + AwaitExpressionSyntax result; + + if (expression.HasLeadingTrivia) + { + result = SyntaxFactory.AwaitExpression(expression.WithoutLeadingTrivia()) + .WithLeadingTrivia(expression.GetLeadingTrivia()); + } + else + { + result = SyntaxFactory.AwaitExpression(expression); + } + + return result.WithAdditionalAnnotations(Formatter.Annotation); } } } diff --git a/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb b/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb index b04b3f183cc14..ff1d6d88c5f56 100644 --- a/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb +++ b/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb @@ -33,23 +33,20 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeFixes.Async Protected Overrides Function GetNewRoot(root As SyntaxNode, oldNode As SyntaxNode, semanticModel As SemanticModel, diagnostic As Diagnostic, document As Document, cancellationToken As CancellationToken) As Task(Of SyntaxNode) Dim expression = TryCast(oldNode, ExpressionSyntax) + If expression Is Nothing Then + Return SpecializedTasks.Default(Of SyntaxNode)() + End If Select Case diagnostic.Id Case BC37055 - If expression Is Nothing Then - Return Task.FromResult(Of SyntaxNode)(Nothing) - End If If Not IsCorrectReturnType(expression, semanticModel) Then - Return Task.FromResult(Of SyntaxNode)(Nothing) + Return SpecializedTasks.Default(Of SyntaxNode)() End If Return Task.FromResult(root.ReplaceNode(oldNode, ConverToAwaitExpression(expression))) Case BC42358 - If expression Is Nothing Then - Return Task.FromResult(Of SyntaxNode)(Nothing) - End If Return Task.FromResult(root.ReplaceNode(oldNode, ConverToAwaitExpression(expression))) Case Else - Return Task.FromResult(Of SyntaxNode)(Nothing) + Return SpecializedTasks.Default(Of SyntaxNode)() End Select End Function @@ -61,7 +58,13 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeFixes.Async End Function Private Function ConverToAwaitExpression(expression As ExpressionSyntax) As ExpressionSyntax - Return SyntaxFactory.AwaitExpression(expression).WithAdditionalAnnotations(Formatter.Annotation) + Dim result As AwaitExpressionSyntax + If expression.HasLeadingTrivia Then + result = SyntaxFactory.AwaitExpression(expression.WithoutLeadingTrivia()).WithLeadingTrivia(expression.GetLeadingTrivia()) + Else + result = SyntaxFactory.AwaitExpression(expression) + End If + Return result.WithAdditionalAnnotations(Formatter.Annotation) End Function End Class From 7210a88e9a0e9240baa93ed16fb2411ff9872bb3 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Fri, 18 Sep 2015 17:37:53 +0800 Subject: [PATCH 04/83] Add the reported case. --- .../Diagnostics/Async/AddAwaitTests.cs | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs index 7cc19b0927e21..e607249df3721 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs @@ -213,6 +213,45 @@ async void Test() Test(initial, expected); } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] + public void FunctionNotAwaited_WithLeadingTrivia1() + { + var initial = +@"using System.Threading.Tasks; +class Program +{ + Task AwaitableFunction() + { + return Task.FromResult(true); + } + + async void Test() + { + var i = 0; + + [|AwaitableFunction();|] + } +}"; + + var expected = +@"using System.Threading.Tasks; +class Program +{ + Task AwaitableFunction() + { + return Task.FromResult(true); + } + + async void Test() + { + var i = 0; + + await AwaitableFunction(); + } +}"; + Test(initial, expected); + } + internal override Tuple CreateDiagnosticProviderAndFixer(Workspace workspace) { return new Tuple(null, new CSharpAddAwaitCodeFixProvider()); From f40a5f7103197824a474e85e45292d7112d31d52 Mon Sep 17 00:00:00 2001 From: Gen Lu Date: Fri, 18 Sep 2015 11:05:37 -0700 Subject: [PATCH 05/83] Replace `CutOrDeleteSelection` with new implementation Here's the new behavior for all deletion without selected text related operations: - if caret is in editable area, no change in behavior. - if caret is in active prompt area, move caret to the closest location first. - if caret is in other readonly area, do nothing. Here's the new behavior for all deletion with selected text related operations: - if the selection overlaps with editable area, caret will be moved to a position in editable area that is closest to it's original position. - Otherwise, do nothing (and preserve the selection). Deletion related operations including: - Delete (and TypeChar) - Backspace - Return and BreakLine - Paste - Cut --- .../Editor/InteractiveWindow.UIThreadOnly.cs | 60 ++++++++++--------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs b/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs index c97dbe7143661..c294a3add4a0f 100644 --- a/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs +++ b/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs @@ -579,7 +579,10 @@ public bool Paste() { if (!TextView.Selection.IsEmpty) { - CutOrDeleteSelectionThenMoveCaret(isCut: false); + if (CutOrDeleteSelection(isCut: false)) + { + MoveCaretToClosestEditableBuffer(); + } } else if (IsInActivePrompt(TextView.Caret.Position.BufferPosition)) { @@ -1186,9 +1189,9 @@ private bool IsInActivePrompt(SnapshotPoint point) return false; } - // always has a span following prompt. + Debug.Assert(index + 1 < sourceSpans.Count); var followingSpan = sourceSpans[index + 1]; - // if the following span is in editable buffer, then the prompt must be active. + // if the following span is editable, then the prompt is active. return GetPositionInBuffer(followingSpan.Start, editableBuffer) != null; } @@ -2148,7 +2151,10 @@ public bool Delete() bool handled = false; if (!TextView.Selection.IsEmpty) { - CutOrDeleteSelectionThenMoveCaret(isCut: false); + if (CutOrDeleteSelection(isCut: false)) + { + MoveCaretToClosestEditableBuffer(); + } handled = true; } else if (IsInActivePrompt(TextView.Caret.Position.BufferPosition)) @@ -2298,15 +2304,17 @@ public void Cut() { if (!TextView.Selection.IsEmpty) { - CutOrDeleteSelectionThenMoveCaret(isCut: true); + if (CutOrDeleteSelection(isCut: true)) + { + MoveCaretToClosestEditableBuffer(); + } return; } var caretPosition = TextView.Caret.Position.BufferPosition; // don't cut and move caret if it's in readonly buffer (except in active prompt) - if (GetPositionInLanguageBuffer(caretPosition) != null || - GetPositionInStandardInputBuffer(caretPosition) != null || + if (MapToEditableBuffer(caretPosition) != null || IsInActivePrompt(caretPosition)) { CutOrDeleteCurrentLine(isCut: true); @@ -2326,33 +2334,25 @@ private void CutOrDeleteCurrentLine(bool isCut) } /// - /// If any of currently selected text is editable, then deletes editable selection, optionally saves it to the clipboard - /// and moves caret to closest location in editable buffer. Otherwise do nothing (and preserve selection). + /// If any of currently selected text is editable, then deletes editable selection, optionally saves it + /// to the clipboard. Otherwise do nothing (and preserve selection). /// - private void CutOrDeleteSelectionThenMoveCaret(bool isCut) + private bool CutOrDeleteSelection(bool isCut) { if (!TextView.Selection.IsEmpty) { if (TextView.Selection.Mode == TextSelectionMode.Stream ? IsSteamSelectionInEditableBuffer(TextView.Selection) : ReduceBoxSelectionToEditableBox()) - { - CutOrDeleteSelection(isCut: false); - MoveCaretToClosestEditableBuffer(); + { + CutOrDelete(TextView.Selection.SelectedSpans, isCut); + // if the selection spans over prompts the prompts remain selected, so clear manually: + TextView.Selection.Clear(); + return true; } } - } - - /// - /// Deletes currently selected text from the language buffer and optionally saves it to the clipboard. - /// - private void CutOrDeleteSelection(bool isCut) - { - CutOrDelete(TextView.Selection.SelectedSpans, isCut); - - // if the selection spans over prompts the prompts remain selected, so clear manually: - TextView.Selection.Clear(); - } + return false; + } private void CutOrDelete(IEnumerable projectionSpans, bool isCut) { @@ -2495,7 +2495,10 @@ public bool Backspace() { if (TextView.Selection.Mode == TextSelectionMode.Stream || ReduceBoxSelectionToEditableBox()) { - CutOrDeleteSelectionThenMoveCaret(isCut: false); + if (CutOrDeleteSelection(isCut: false)) + { + MoveCaretToClosestEditableBuffer(); + } handled = true; } } @@ -2661,7 +2664,10 @@ private bool HandlePostServicesReturn(bool trySubmit) if (!TextView.Selection.IsEmpty) { - CutOrDeleteSelectionThenMoveCaret(isCut: false); + if (CutOrDeleteSelection(isCut: false)) + { + MoveCaretToClosestEditableBuffer(); + } } else if (IsInActivePrompt(TextView.Caret.Position.BufferPosition)) { From af91b0b0611249e9d203e4a26e58751a47dd97cb Mon Sep 17 00:00:00 2001 From: vsadov Date: Fri, 18 Sep 2015 16:33:25 -0700 Subject: [PATCH 06/83] emit mode --- .../CSharp/Portable/CodeGen/CodeGenerator.cs | 60 +++++++++++++++---- .../CSharp/Portable/CodeGen/EmitExpression.cs | 2 +- .../CSharp/Portable/CodeGen/EmitStatement.cs | 10 ++-- .../Core/Portable/SynthesizedLocalKind.cs | 7 ++- 4 files changed, 59 insertions(+), 20 deletions(-) diff --git a/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs b/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs index 5a78dfe62d2cf..9b90ddc0110fe 100644 --- a/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs +++ b/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs @@ -30,7 +30,7 @@ internal sealed partial class CodeGenerator private readonly ILBuilder _builder; private readonly PEModuleBuilder _module; private readonly DiagnosticBag _diagnostics; - private readonly OptimizationLevel _optimizations; + private readonly ILEmitStyle _ilEmitStyle; private readonly bool _emitPdbSequencePoints; private readonly HashSet _stackLocals; @@ -61,6 +61,20 @@ private enum IndirectReturnState : byte Emitted = 2, // return sequence has been emitted } + private enum ILEmitStyle : byte + { + // no optimizations + // add additional debug specific emit + // like nops for sequence points mapping to no IL + Debug = 0, + + // do optimizations that do not diminish debug experience + DebugFriendlyRelease = 1, + + // do all optimizations + Release = 2, + } + private LocalDefinition _returnTemp; public CodeGenerator( @@ -84,13 +98,28 @@ public CodeGenerator( _module = moduleBuilder; _diagnostics = diagnostics; - // Always optimize synthesized methods that don't contain user code. - // - // Specifically, always optimize synthesized explicit interface implementation methods - // (aka bridge methods) with by-ref returns because peverify produces errors if we - // return a ref local (which the return local will be in such cases). - - _optimizations = method.GenerateDebugInfo ? optimizations : OptimizationLevel.Release; + if (!method.GenerateDebugInfo) + { + // Always optimize synthesized methods that don't contain user code. + // + // Specifically, always optimize synthesized explicit interface implementation methods + // (aka bridge methods) with by-ref returns because peverify produces errors if we + // return a ref local (which the return local will be in such cases). + _ilEmitStyle = ILEmitStyle.Release; + } + else + { + if (optimizations == OptimizationLevel.Debug) + { + _ilEmitStyle = ILEmitStyle.Debug; + } + else + { + _ilEmitStyle = IsDebugPlus() ? + ILEmitStyle.DebugFriendlyRelease : + ILEmitStyle.Release; + } + } // Emit sequence points unless // - the PDBs are not being generated @@ -102,12 +131,17 @@ public CodeGenerator( _boundBody = Optimizer.Optimize( boundBody, - debugFriendly: _optimizations != OptimizationLevel.Release, + debugFriendly: _ilEmitStyle != ILEmitStyle.Release, stackLocals: out _stackLocals); _methodBodySyntaxOpt = (method as SourceMethodSymbol)?.BodySyntax; } + private bool IsDebugPlus() + { + return true; + } + private LocalDefinition LazyReturnTemp { get @@ -118,7 +152,7 @@ private LocalDefinition LazyReturnTemp Debug.Assert(!_method.ReturnsVoid, "returning something from void method?"); var bodySyntax = _methodBodySyntaxOpt; - if (_optimizations == OptimizationLevel.Debug && bodySyntax != null) + if (_ilEmitStyle == ILEmitStyle.Debug && bodySyntax != null) { int syntaxOffset = _method.CalculateLocalSyntaxOffset(bodySyntax.SpanStart, bodySyntax.SyntaxTree); var localSymbol = new SynthesizedLocal(_method, _method.ReturnType, SynthesizedLocalKind.FunctionReturnValue, bodySyntax); @@ -133,7 +167,7 @@ private LocalDefinition LazyReturnTemp constraints: LocalSlotConstraints.None, isDynamic: false, dynamicTransformFlags: ImmutableArray.Empty, - isSlotReusable: localSymbol.SynthesizedKind.IsSlotReusable(_optimizations)); + isSlotReusable: _ilEmitStyle == ILEmitStyle.Release); } else { @@ -303,7 +337,7 @@ private void EmitSequencePointStatement(BoundSequencePoint node) instructionsEmitted = this.EmitStatementAndCountInstructions(statement); } - if (instructionsEmitted == 0 && syntax != null && _optimizations == OptimizationLevel.Debug) + if (instructionsEmitted == 0 && syntax != null && _ilEmitStyle == ILEmitStyle.Debug) { // if there was no code emitted, then emit nop // otherwise this point could get associated with some random statement, possibly in a wrong scope @@ -326,7 +360,7 @@ private void EmitSequencePointStatement(BoundSequencePointWithSpan node) instructionsEmitted = this.EmitStatementAndCountInstructions(statement); } - if (instructionsEmitted == 0 && span != default(TextSpan) && _optimizations == OptimizationLevel.Debug) + if (instructionsEmitted == 0 && span != default(TextSpan) && _ilEmitStyle == ILEmitStyle.Debug) { // if there was no code emitted, then emit nop // otherwise this point could get associated with some random statement, possibly in a wrong scope diff --git a/src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs b/src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs index 4e35c148f70fc..2df52dd219cde 100644 --- a/src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs +++ b/src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs @@ -1415,7 +1415,7 @@ private void EmitCallExpression(BoundCall call, bool used) { EmitPopIfUnused(used); } - else if (_optimizations == OptimizationLevel.Debug) + else if (_ilEmitStyle == ILEmitStyle.Debug) { // The only void methods with usable return values are constructors and we represent those // as BoundObjectCreationExpressions, not BoundCalls. diff --git a/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs b/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs index a785848806066..415bb84c237a2 100644 --- a/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs +++ b/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs @@ -110,7 +110,7 @@ private void EmitNoOpStatement(BoundNoOpStatement statement) switch (statement.Flavor) { case NoOpStatementFlavor.Default: - if (_optimizations == OptimizationLevel.Debug) + if (_ilEmitStyle == ILEmitStyle.Debug) { _builder.EmitOpCode(ILOpCode.Nop); } @@ -623,7 +623,7 @@ private bool ShouldUseIndirectReturn() // ret // // Do not emit this pattern if the method doesn't include user code or doesn't have a block body. - return _optimizations == OptimizationLevel.Debug && _method.GenerateDebugInfo && _methodBodySyntaxOpt?.IsKind(SyntaxKind.Block) == true || + return _ilEmitStyle == ILEmitStyle.Debug && _method.GenerateDebugInfo && _methodBodySyntaxOpt?.IsKind(SyntaxKind.Block) == true || _builder.InExceptionHandler; } @@ -1404,7 +1404,7 @@ private LocalDefinition DefineLocal(LocalSymbol local, CSharpSyntaxNode syntaxNo constraints: constraints, isDynamic: isDynamicSourceLocal, dynamicTransformFlags: transformFlags, - isSlotReusable: local.SynthesizedKind.IsSlotReusable(_optimizations)); + isSlotReusable: local.SynthesizedKind.IsSlotReusable(_ilEmitStyle != ILEmitStyle.Release)); // If named, add it to the local debug scope. if (localDef.Name != null) @@ -1437,7 +1437,7 @@ private string GetLocalDebugName(ILocalSymbolInternal local, out LocalDebugId lo return null; } - if (_optimizations == OptimizationLevel.Debug) + if (_ilEmitStyle == ILEmitStyle.Debug) { var syntax = local.GetDeclaratorSyntax(); int syntaxOffset = _method.CalculateLocalSyntaxOffset(syntax.SpanStart, syntax.SyntaxTree); @@ -1455,7 +1455,7 @@ private string GetLocalDebugName(ILocalSymbolInternal local, out LocalDebugId lo private bool IsSlotReusable(LocalSymbol local) { - return local.SynthesizedKind.IsSlotReusable(_optimizations); + return local.SynthesizedKind.IsSlotReusable(_ilEmitStyle != ILEmitStyle.Release); } /// diff --git a/src/Compilers/Core/Portable/SynthesizedLocalKind.cs b/src/Compilers/Core/Portable/SynthesizedLocalKind.cs index a4f37c610d6d7..146d35d7fb52d 100644 --- a/src/Compilers/Core/Portable/SynthesizedLocalKind.cs +++ b/src/Compilers/Core/Portable/SynthesizedLocalKind.cs @@ -236,7 +236,12 @@ public static bool MustSurviveStateMachineSuspension(this SynthesizedLocalKind k public static bool IsSlotReusable(this SynthesizedLocalKind kind, OptimizationLevel optimizations) { - if (optimizations == OptimizationLevel.Debug) + return kind.IsSlotReusable(optimizations != OptimizationLevel.Release); + } + + public static bool IsSlotReusable(this SynthesizedLocalKind kind, bool isDebug) + { + if (isDebug) { // Don't reuse any long-lived locals in debug builds to provide good debugging experience // for user-defined locals and to allow EnC. From 1da6ae3eb56bea0d86c492d80b98f8a18bcbd3da Mon Sep 17 00:00:00 2001 From: vsadov Date: Mon, 21 Sep 2015 14:41:02 -0700 Subject: [PATCH 07/83] propagate debug+ on command line in C# to the compilation options --- .../Portable/CSharpCompilationOptions.cs | 16 ++++++++- .../CSharp/Portable/CodeGen/CodeGenerator.cs | 2 +- .../CSharp/Portable/CodeGen/Optimizer.cs | 33 +++++++++++++++++++ .../Portable/CommandLine/CommandLineParser.cs | 8 +++++ .../Test/CommandLine/CommandLineTests.cs | 14 ++++++++ .../CSharpCompilationOptionsTests.cs | 4 ++- .../CommonCompilationOptionsTests.cs | 1 + .../Compilation/CompilationOptions.cs | 14 +++++++- .../Test/Utilities/CSharp/TestOptions.cs | 8 +++++ .../Test/Utilities/VisualBasic/TestOptions.vb | 8 +++++ .../Portable/VisualBasicCompilationOptions.vb | 18 ++++++++++ .../VisualBasicCompilationOptionsTests.vb | 1 + 12 files changed, 123 insertions(+), 4 deletions(-) diff --git a/src/Compilers/CSharp/Portable/CSharpCompilationOptions.cs b/src/Compilers/CSharp/Portable/CSharpCompilationOptions.cs index 55c820275f80a..7416a4b075cb9 100644 --- a/src/Compilers/CSharp/Portable/CSharpCompilationOptions.cs +++ b/src/Compilers/CSharp/Portable/CSharpCompilationOptions.cs @@ -56,6 +56,7 @@ public CSharpCompilationOptions( cryptoKeyContainer, cryptoKeyFile, cryptoPublicKey, delaySign, platform, generalDiagnosticOption, warningLevel, specificDiagnosticOptions, concurrentBuild, extendedCustomDebugInformation: true, + debugPlusMode: false, xmlReferenceResolver: xmlReferenceResolver, sourceReferenceResolver: sourceReferenceResolver, metadataReferenceResolver: metadataReferenceResolver, @@ -95,6 +96,7 @@ public CSharpCompilationOptions( cryptoKeyContainer, cryptoKeyFile, cryptoPublicKey, delaySign, platform, generalDiagnosticOption, warningLevel, specificDiagnosticOptions, concurrentBuild, extendedCustomDebugInformation: true, + debugPlusMode: false, xmlReferenceResolver: xmlReferenceResolver, sourceReferenceResolver: sourceReferenceResolver, metadataReferenceResolver: metadataReferenceResolver, @@ -125,6 +127,7 @@ internal CSharpCompilationOptions( IEnumerable> specificDiagnosticOptions, bool concurrentBuild, bool extendedCustomDebugInformation, + bool debugPlusMode, XmlReferenceResolver xmlReferenceResolver, SourceReferenceResolver sourceReferenceResolver, MetadataReferenceResolver metadataReferenceResolver, @@ -133,7 +136,7 @@ internal CSharpCompilationOptions( MetadataImportOptions metadataImportOptions) : base(outputKind, reportSuppressedDiagnostics, moduleName, mainTypeName, scriptClassName, cryptoKeyContainer, cryptoKeyFile, cryptoPublicKey, delaySign, optimizationLevel, checkOverflow, platform, generalDiagnosticOption, warningLevel, specificDiagnosticOptions.ToImmutableDictionaryOrEmpty(), - concurrentBuild, extendedCustomDebugInformation, xmlReferenceResolver, sourceReferenceResolver, metadataReferenceResolver, assemblyIdentityComparer, + concurrentBuild, extendedCustomDebugInformation, debugPlusMode, xmlReferenceResolver, sourceReferenceResolver, metadataReferenceResolver, assemblyIdentityComparer, strongNameProvider, metadataImportOptions) { this.Usings = usings.AsImmutableOrEmpty(); @@ -159,6 +162,7 @@ private CSharpCompilationOptions(CSharpCompilationOptions other) : this( specificDiagnosticOptions: other.SpecificDiagnosticOptions, concurrentBuild: other.ConcurrentBuild, extendedCustomDebugInformation: other.ExtendedCustomDebugInformation, + debugPlusMode: other.DebugPlusMode, xmlReferenceResolver: other.XmlReferenceResolver, sourceReferenceResolver: other.SourceReferenceResolver, metadataReferenceResolver: other.MetadataReferenceResolver, @@ -404,6 +408,16 @@ internal CSharpCompilationOptions WithExtendedCustomDebugInformation(bool extend return new CSharpCompilationOptions(this) { ExtendedCustomDebugInformation_internal_protected_set = extendedCustomDebugInformation }; } + internal CSharpCompilationOptions WithDebugPlusMode(bool debugPlusMode) + { + if (debugPlusMode == this.DebugPlusMode) + { + return this; + } + + return new CSharpCompilationOptions(this) { DebugPlusMode_internal_protected_set = debugPlusMode }; + } + internal CSharpCompilationOptions WithMetadataImportOptions(MetadataImportOptions value) { if (value == this.MetadataImportOptions) diff --git a/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs b/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs index 9b90ddc0110fe..8d65444eb038f 100644 --- a/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs +++ b/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs @@ -139,7 +139,7 @@ public CodeGenerator( private bool IsDebugPlus() { - return true; + return this._module.Compilation.Options.DebugPlusMode; } private LocalDefinition LazyReturnTemp diff --git a/src/Compilers/CSharp/Portable/CodeGen/Optimizer.cs b/src/Compilers/CSharp/Portable/CodeGen/Optimizer.cs index d242c6bef6252..320dc341e5120 100644 --- a/src/Compilers/CSharp/Portable/CodeGen/Optimizer.cs +++ b/src/Compilers/CSharp/Portable/CodeGen/Optimizer.cs @@ -16,6 +16,39 @@ namespace Microsoft.CodeAnalysis.CSharp.CodeGen { internal class Optimizer { + /// + /// Perform IL specific optiomizations (mostly reduction of local slots) + /// + /// Method body to optimize + /// + /// When set, do not perform aggressive optimizations that degrade debugging experience. + /// In particular we do not do the following: + /// + /// 1) Do not elide any user defined locals, even if never read from. + /// Example: + /// { + /// var dummy = Foo(); // should not become just "Foo" + /// } + /// + /// User might want to examine dummy in the debugger. + /// + /// 2) Do not carry values on the stack between statements + /// Example: + /// { + /// var temp = Foo(); + /// temp.ToString(); // should not become Foo().ToString(); + /// } + /// + /// User might want to examine temp in the debugger. + /// + /// + /// + /// Produced list of "ephemeral" locals. + /// Essentially, these locals do not need to leave the evaluation stack. + /// As such they do not require an allocation of a local slot and + /// their load/store operations are implemented trivially. + /// + /// public static BoundStatement Optimize( BoundStatement src, bool debugFriendly, out HashSet stackLocals) diff --git a/src/Compilers/CSharp/Portable/CommandLine/CommandLineParser.cs b/src/Compilers/CSharp/Portable/CommandLine/CommandLineParser.cs index 17ec6680359f6..5f2910fde5d4f 100644 --- a/src/Compilers/CSharp/Portable/CommandLine/CommandLineParser.cs +++ b/src/Compilers/CSharp/Portable/CommandLine/CommandLineParser.cs @@ -57,6 +57,7 @@ internal sealed override CommandLineArguments CommonParse(IEnumerable ar bool allowUnsafe = false; bool concurrentBuild = true; bool emitPdb = false; + bool debugPlus = false; string pdbPath = null; bool noStdLib = false; string outputDirectory = baseDirectory; @@ -524,6 +525,7 @@ internal sealed override CommandLineArguments CommonParse(IEnumerable ar break; emitPdb = true; + debugPlus = true; continue; case "debug-": @@ -531,6 +533,7 @@ internal sealed override CommandLineArguments CommonParse(IEnumerable ar break; emitPdb = false; + debugPlus = false; continue; case "o": @@ -1081,6 +1084,11 @@ internal sealed override CommandLineArguments CommonParse(IEnumerable ar reportSuppressedDiagnostics: reportSuppressedDiagnostics ); + if (debugPlus) + { + options = options.WithDebugPlusMode(debugPlus); + } + var emitOptions = new EmitOptions ( metadataOnly: false, diff --git a/src/Compilers/CSharp/Test/CommandLine/CommandLineTests.cs b/src/Compilers/CSharp/Test/CommandLine/CommandLineTests.cs index 6497b5480d2f4..cb6dad59fef2a 100644 --- a/src/Compilers/CSharp/Test/CommandLine/CommandLineTests.cs +++ b/src/Compilers/CSharp/Test/CommandLine/CommandLineTests.cs @@ -1169,53 +1169,67 @@ public void Debug() { var parsedArgs = DefaultParse(new[] { "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); + Assert.Equal(false, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug-", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); + Assert.Equal(false, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); + Assert.Equal(false, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug+", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); + Assert.Equal(true, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug+", "/debug-", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); + Assert.Equal(false, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug:full", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); + Assert.Equal(false, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug:FULL", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); + Assert.Equal(false, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug:pdbonly", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); + Assert.Equal(false, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug:PDBONLY", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); + Assert.Equal(false, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug:full", "/debug:pdbonly", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); + Assert.Equal(false, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug:pdbonly", "/debug:full", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); Assert.True(parsedArgs.EmitPdb); Assert.Equal(DebugInformationFormat.Pdb, parsedArgs.EmitOptions.DebugInformationFormat); + Assert.Equal(false, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug:pdbonly", "/debug-", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); Assert.False(parsedArgs.EmitPdb); Assert.Equal(DebugInformationFormat.Pdb, parsedArgs.EmitOptions.DebugInformationFormat); + Assert.Equal(false, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug:pdbonly", "/debug-", "/debug", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); Assert.True(parsedArgs.EmitPdb); Assert.Equal(DebugInformationFormat.Pdb, parsedArgs.EmitOptions.DebugInformationFormat); + Assert.Equal(false, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug:pdbonly", "/debug-", "/debug+", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(); Assert.True(parsedArgs.EmitPdb); Assert.Equal(DebugInformationFormat.Pdb, parsedArgs.EmitOptions.DebugInformationFormat); + Assert.Equal(true, parsedArgs.CompilationOptions.DebugPlusMode); parsedArgs = DefaultParse(new[] { "/debug:", "a.cs" }, _baseDirectory); parsedArgs.Errors.Verify(Diagnostic(ErrorCode.ERR_SwitchNeedsString).WithArguments("", "debug")); diff --git a/src/Compilers/CSharp/Test/Symbol/Compilation/CSharpCompilationOptionsTests.cs b/src/Compilers/CSharp/Test/Symbol/Compilation/CSharpCompilationOptionsTests.cs index 365d5b96ef5da..2864279e224cc 100644 --- a/src/Compilers/CSharp/Test/Symbol/Compilation/CSharpCompilationOptionsTests.cs +++ b/src/Compilers/CSharp/Test/Symbol/Compilation/CSharpCompilationOptionsTests.cs @@ -80,6 +80,7 @@ public void Invariants() TestProperty((old, value) => old.WithConcurrentBuild(value), opt => opt.ConcurrentBuild, false); TestProperty((old, value) => old.WithExtendedCustomDebugInformation(value), opt => opt.ExtendedCustomDebugInformation, false); + TestProperty((old, value) => old.WithDebugPlusMode(value), opt => opt.DebugPlusMode, true); TestProperty((old, value) => old.WithXmlReferenceResolver(value), opt => opt.XmlReferenceResolver, new XmlFileResolver(null)); TestProperty((old, value) => old.WithMetadataReferenceResolver(value), opt => opt.MetadataReferenceResolver, new TestMetadataReferenceResolver()); @@ -346,6 +347,7 @@ private static CSharpCompilationOptions CreateCSharpCompilationOptions() IEnumerable> specificDiagnosticOptions = null; bool concurrentBuild = false; bool extendedCustomDebugInformation = true; + bool debugPlusMode = false; XmlReferenceResolver xmlReferenceResolver = new XmlFileResolver(null); SourceReferenceResolver sourceReferenceResolver = new SourceFileResolver(ImmutableArray.Empty, null); MetadataReferenceResolver metadataReferenceResolver = new MetadataReferenceResolverWithEquality(); @@ -356,7 +358,7 @@ private static CSharpCompilationOptions CreateCSharpCompilationOptions() return new CSharpCompilationOptions(OutputKind.ConsoleApplication, reportSuppressedDiagnostics, moduleName, mainTypeName, scriptClassName, usings, optimizationLevel, checkOverflow, allowUnsafe, cryptoKeyContainer, cryptoKeyFile, cryptoPublicKey, delaySign, platform, generalDiagnosticOption, warningLevel, specificDiagnosticOptions, - concurrentBuild, extendedCustomDebugInformation, xmlReferenceResolver, sourceReferenceResolver, metadataReferenceResolver, + concurrentBuild, extendedCustomDebugInformation, debugPlusMode, xmlReferenceResolver, sourceReferenceResolver, metadataReferenceResolver, assemblyIdentityComparer, strongNameProvider, metadataImportOptions); } diff --git a/src/Compilers/Core/CodeAnalysisTest/CommonCompilationOptionsTests.cs b/src/Compilers/Core/CodeAnalysisTest/CommonCompilationOptionsTests.cs index 99a55482b8850..4a1666d64fe3d 100644 --- a/src/Compilers/Core/CodeAnalysisTest/CommonCompilationOptionsTests.cs +++ b/src/Compilers/Core/CodeAnalysisTest/CommonCompilationOptionsTests.cs @@ -28,6 +28,7 @@ public void TestFieldsForEqualsAndGetHashCode() "EnableEditAndContinue", "Errors", "ExtendedCustomDebugInformation", + "DebugPlusMode", "Features", "GeneralDiagnosticOption", "MainTypeName", diff --git a/src/Compilers/Core/Portable/Compilation/CompilationOptions.cs b/src/Compilers/Core/Portable/Compilation/CompilationOptions.cs index 2b0015ad49361..e6b3686736fb4 100644 --- a/src/Compilers/Core/Portable/Compilation/CompilationOptions.cs +++ b/src/Compilers/Core/Portable/Compilation/CompilationOptions.cs @@ -141,6 +141,14 @@ public abstract class CompilationOptions // TODO: change visibility of the ExtendedCustomDebugInformation setter to internal & protected internal bool ExtendedCustomDebugInformation_internal_protected_set { set { ExtendedCustomDebugInformation = value; } } + /// + /// Emit mode that favors debuggability. + /// + internal bool DebugPlusMode { get; private set; } + + // TODO: change visibility of the DebugPlusMode setter to internal & protected + internal bool DebugPlusMode_internal_protected_set { set { DebugPlusMode = value; } } + /// /// Import internal/private members from all references regardless of "internals-visible-to" relationship. /// @@ -233,6 +241,7 @@ internal CompilationOptions( ImmutableDictionary specificDiagnosticOptions, bool concurrentBuild, bool extendedCustomDebugInformation, + bool debugPlusMode, XmlReferenceResolver xmlReferenceResolver, SourceReferenceResolver sourceReferenceResolver, MetadataReferenceResolver metadataReferenceResolver, @@ -257,6 +266,7 @@ internal CompilationOptions( this.OptimizationLevel = optimizationLevel; this.ConcurrentBuild = concurrentBuild; this.ExtendedCustomDebugInformation = extendedCustomDebugInformation; + this.DebugPlusMode = debugPlusMode; this.XmlReferenceResolver = xmlReferenceResolver; this.SourceReferenceResolver = sourceReferenceResolver; this.MetadataReferenceResolver = metadataReferenceResolver; @@ -433,6 +443,7 @@ protected bool EqualsHelper(CompilationOptions other) this.CheckOverflow == other.CheckOverflow && this.ConcurrentBuild == other.ConcurrentBuild && this.ExtendedCustomDebugInformation == other.ExtendedCustomDebugInformation && + this.DebugPlusMode == other.DebugPlusMode && string.Equals(this.CryptoKeyContainer, other.CryptoKeyContainer, StringComparison.Ordinal) && string.Equals(this.CryptoKeyFile, other.CryptoKeyFile, StringComparison.Ordinal) && this.CryptoPublicKey.SequenceEqual(other.CryptoPublicKey) && @@ -464,6 +475,7 @@ protected int GetHashCodeHelper() return Hash.Combine(this.CheckOverflow, Hash.Combine(this.ConcurrentBuild, Hash.Combine(this.ExtendedCustomDebugInformation, + Hash.Combine(this.DebugPlusMode, Hash.Combine(this.CryptoKeyContainer != null ? StringComparer.Ordinal.GetHashCode(this.CryptoKeyContainer) : 0, Hash.Combine(this.CryptoKeyFile != null ? StringComparer.Ordinal.GetHashCode(this.CryptoKeyFile) : 0, Hash.Combine(Hash.CombineValues(this.CryptoPublicKey, 16), @@ -482,7 +494,7 @@ protected int GetHashCodeHelper() Hash.Combine(this.XmlReferenceResolver, Hash.Combine(this.SourceReferenceResolver, Hash.Combine(this.StrongNameProvider, - Hash.Combine(this.AssemblyIdentityComparer, 0)))))))))))))))))))))); + Hash.Combine(this.AssemblyIdentityComparer, 0))))))))))))))))))))))); } public static bool operator ==(CompilationOptions left, CompilationOptions right) diff --git a/src/Compilers/Test/Utilities/CSharp/TestOptions.cs b/src/Compilers/Test/Utilities/CSharp/TestOptions.cs index c5e5ddefdbcad..2a1434bfd29ed 100644 --- a/src/Compilers/Test/Utilities/CSharp/TestOptions.cs +++ b/src/Compilers/Test/Utilities/CSharp/TestOptions.cs @@ -22,6 +22,14 @@ public static class TestOptions public static readonly CSharpCompilationOptions ReleaseDll = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary, optimizationLevel: OptimizationLevel.Release).WithExtendedCustomDebugInformation(true); public static readonly CSharpCompilationOptions ReleaseExe = new CSharpCompilationOptions(OutputKind.ConsoleApplication, optimizationLevel: OptimizationLevel.Release).WithExtendedCustomDebugInformation(true); + public static readonly CSharpCompilationOptions ReleaseDebugDll = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary, optimizationLevel: OptimizationLevel.Release). + WithExtendedCustomDebugInformation(true). + WithDebugPlusMode(true); + + public static readonly CSharpCompilationOptions ReleaseDebugExe = new CSharpCompilationOptions(OutputKind.ConsoleApplication, optimizationLevel: OptimizationLevel.Release). + WithExtendedCustomDebugInformation(true). + WithDebugPlusMode(true); + public static readonly CSharpCompilationOptions DebugDll = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary, optimizationLevel: OptimizationLevel.Debug).WithExtendedCustomDebugInformation(true); public static readonly CSharpCompilationOptions DebugExe = new CSharpCompilationOptions(OutputKind.ConsoleApplication, optimizationLevel: OptimizationLevel.Debug).WithExtendedCustomDebugInformation(true); diff --git a/src/Compilers/Test/Utilities/VisualBasic/TestOptions.vb b/src/Compilers/Test/Utilities/VisualBasic/TestOptions.vb index aeb4cc8ca9a2a..25f798da631d6 100644 --- a/src/Compilers/Test/Utilities/VisualBasic/TestOptions.vb +++ b/src/Compilers/Test/Utilities/VisualBasic/TestOptions.vb @@ -10,6 +10,14 @@ Public Class TestOptions Public Shared ReadOnly ReleaseDll As VisualBasicCompilationOptions = New VisualBasicCompilationOptions(OutputKind.DynamicallyLinkedLibrary, optimizationLevel:=OptimizationLevel.Release).WithExtendedCustomDebugInformation(True) Public Shared ReadOnly ReleaseExe As VisualBasicCompilationOptions = New VisualBasicCompilationOptions(OutputKind.ConsoleApplication, optimizationLevel:=OptimizationLevel.Release).WithExtendedCustomDebugInformation(True) + Public Shared ReadOnly ReleaseDebugDll As VisualBasicCompilationOptions = New VisualBasicCompilationOptions(OutputKind.DynamicallyLinkedLibrary, optimizationLevel:=OptimizationLevel.Release). + WithExtendedCustomDebugInformation(True). + WithDebugPlusMode(True) + + Public Shared ReadOnly ReleaseDebugExe As VisualBasicCompilationOptions = New VisualBasicCompilationOptions(OutputKind.ConsoleApplication, optimizationLevel:=OptimizationLevel.Release). + WithExtendedCustomDebugInformation(True). + WithDebugPlusMode(True) + Private Shared ReadOnly s_features As New Dictionary(Of String, String) ' No experimental features to enable at this time Public Shared ReadOnly ExperimentalReleaseExe As New VisualBasicCompilationOptions(OutputKind.ConsoleApplication, optimizationLevel:=OptimizationLevel.Release, diff --git a/src/Compilers/VisualBasic/Portable/VisualBasicCompilationOptions.vb b/src/Compilers/VisualBasic/Portable/VisualBasicCompilationOptions.vb index ea9a293063655..55ab393b9fe3e 100644 --- a/src/Compilers/VisualBasic/Portable/VisualBasicCompilationOptions.vb +++ b/src/Compilers/VisualBasic/Portable/VisualBasicCompilationOptions.vb @@ -118,6 +118,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic concurrentBuild, suppressEmbeddedDeclarations:=False, extendedCustomDebugInformation:=True, + debugPlusMode:=False, xmlReferenceResolver:=xmlReferenceResolver, sourceReferenceResolver:=sourceReferenceResolver, metadataReferenceResolver:=metadataReferenceResolver, @@ -214,6 +215,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic concurrentBuild, suppressEmbeddedDeclarations:=False, extendedCustomDebugInformation:=True, + debugPlusMode:=False, xmlReferenceResolver:=xmlReferenceResolver, sourceReferenceResolver:=sourceReferenceResolver, metadataReferenceResolver:=metadataReferenceResolver, @@ -249,6 +251,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic concurrentBuild As Boolean, suppressEmbeddedDeclarations As Boolean, extendedCustomDebugInformation As Boolean, + debugPlusMode As Boolean, xmlReferenceResolver As XmlReferenceResolver, sourceReferenceResolver As SourceReferenceResolver, metadataReferenceResolver As MetadataReferenceResolver, @@ -274,6 +277,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic specificDiagnosticOptions:=specificDiagnosticOptions.ToImmutableDictionaryOrEmpty(CaseInsensitiveComparison.Comparer), ' Diagnostic ids must be processed in case-insensitive fashion. concurrentBuild:=concurrentBuild, extendedCustomDebugInformation:=extendedCustomDebugInformation, + debugPlusMode:=debugPlusMode, xmlReferenceResolver:=xmlReferenceResolver, sourceReferenceResolver:=sourceReferenceResolver, metadataReferenceResolver:=metadataReferenceResolver, @@ -322,6 +326,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic specificDiagnosticOptions:=other.SpecificDiagnosticOptions, concurrentBuild:=other.ConcurrentBuild, extendedCustomDebugInformation:=other.ExtendedCustomDebugInformation, + debugPlusMode:=other.DebugPlusMode, xmlReferenceResolver:=other.XmlReferenceResolver, sourceReferenceResolver:=other.SourceReferenceResolver, metadataReferenceResolver:=other.MetadataReferenceResolver, @@ -637,6 +642,19 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Return New VisualBasicCompilationOptions(Me) With {.ExtendedCustomDebugInformation_internal_protected_set = extendedCustomDebugInformation} End Function + ''' + ''' Creates a new VisualBasicCompilationOptions instance with a different extended custom debug information specified. + ''' + ''' The extended custom debug information setting. + ''' A new instance of VisualBasicCompilationOptions, if the extended custom debug information is different; otherwise current instance. + Friend Function WithDebugPlusMode(debugPlusMode As Boolean) As VisualBasicCompilationOptions + If debugPlusMode = Me.DebugPlusMode Then + Return Me + End If + + Return New VisualBasicCompilationOptions(Me) With {.DebugPlusMode_internal_protected_set = debugPlusMode} + End Function + ''' ''' Creates a new VisualBasicCompilationOptions instance with different embedded declaration suppression setting specified. ''' diff --git a/src/Compilers/VisualBasic/Test/Semantic/Compilation/VisualBasicCompilationOptionsTests.vb b/src/Compilers/VisualBasic/Test/Semantic/Compilation/VisualBasicCompilationOptionsTests.vb index 73f0da0019e88..8e56551bfbc16 100644 --- a/src/Compilers/VisualBasic/Test/Semantic/Compilation/VisualBasicCompilationOptionsTests.vb +++ b/src/Compilers/VisualBasic/Test/Semantic/Compilation/VisualBasicCompilationOptionsTests.vb @@ -76,6 +76,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests TestProperty(Function(old, value) old.WithConcurrentBuild(value), Function(opt) opt.ConcurrentBuild, False) TestProperty(Function(old, value) old.WithExtendedCustomDebugInformation(value), Function(opt) opt.ExtendedCustomDebugInformation, False) + TestProperty(Function(old, value) old.WithDebugPlusMode(value), Function(opt) opt.DebugPlusMode, True) TestProperty(Function(old, value) old.WithXmlReferenceResolver(value), Function(opt) opt.XmlReferenceResolver, New XmlFileResolver(Nothing)) TestProperty(Function(old, value) old.WithSourceReferenceResolver(value), Function(opt) opt.SourceReferenceResolver, New SourceFileResolver(ImmutableArray(Of String).Empty, Nothing)) From 1555e14a06aabc2d45d9d9fc04986547d4803c61 Mon Sep 17 00:00:00 2001 From: vsadov Date: Mon, 21 Sep 2015 15:06:33 -0700 Subject: [PATCH 08/83] Adding tests for ReleaseDebugExe. Not updating baselines to see the effects of "Debug" in the diffs --- .../Test/Emit/CodeGen/CodeGenAsyncTests.cs | 159 ++++++++++++ .../CSharp/Test/Emit/CodeGen/CodeGenTests.cs | 229 ++++++++++++++++++ 2 files changed, 388 insertions(+) diff --git a/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenAsyncTests.cs b/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenAsyncTests.cs index 9655345d88eca..33c8c917488dc 100644 --- a/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenAsyncTests.cs +++ b/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenAsyncTests.cs @@ -66,6 +66,14 @@ public static void Main() Assert.Equal(TypeKind.Struct, stateMachine.TypeKind); }, expectedOutput: "123"); + options = TestOptions.ReleaseDebugExe; + Assert.False(options.EnableEditAndContinue); + + CompileAndVerify(c.WithOptions(options), symbolValidator: module => + { + var stateMachine = module.GlobalNamespace.GetMember("Test").GetMember("d__0"); + Assert.Equal(TypeKind.Struct, stateMachine.TypeKind); + }, expectedOutput: "123"); options = TestOptions.DebugExe; Assert.True(options.EnableEditAndContinue); @@ -2173,6 +2181,157 @@ .maxstack 2 "); } + [Fact] + public void AsyncStateMachineIL_Struct_TaskT_A() + { + var source = @" +using System; +using System.Threading.Tasks; + +class Test +{ + public static async Task F() + { + return await Task.Factory.StartNew(() => 42); + } + + public static void Main() + { + var t = F(); + t.Wait(); + Console.WriteLine(t.Result); + } +}"; + var expected = @" +42 +"; + var c = CompileAndVerify(source, options: TestOptions.ReleaseDebugExe ,expectedOutput: expected); + + c.VerifyIL("Test.F", @" +{ + // Code size 49 (0x31) + .maxstack 2 + .locals init (Test.d__0 V_0, + System.Runtime.CompilerServices.AsyncTaskMethodBuilder V_1) + IL_0000: ldloca.s V_0 + IL_0002: call ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Create()"" + IL_0007: stfld ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder Test.d__0.<>t__builder"" + IL_000c: ldloca.s V_0 + IL_000e: ldc.i4.m1 + IL_000f: stfld ""int Test.d__0.<>1__state"" + IL_0014: ldloc.0 + IL_0015: ldfld ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder Test.d__0.<>t__builder"" + IL_001a: stloc.1 + IL_001b: ldloca.s V_1 + IL_001d: ldloca.s V_0 + IL_001f: call ""void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__0>(ref Test.d__0)"" + IL_0024: ldloca.s V_0 + IL_0026: ldflda ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder Test.d__0.<>t__builder"" + IL_002b: call ""System.Threading.Tasks.Task System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Task.get"" + IL_0030: ret +} +"); + + c.VerifyIL("Test.d__0.System.Runtime.CompilerServices.IAsyncStateMachine.MoveNext", @" +{ + // Code size 188 (0xbc) + .maxstack 3 + .locals init (int V_0, + int V_1, + System.Runtime.CompilerServices.TaskAwaiter V_2, + System.Exception V_3) + IL_0000: ldarg.0 + IL_0001: ldfld ""int Test.d__0.<>1__state"" + IL_0006: stloc.0 + .try + { + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0062 + IL_000a: call ""System.Threading.Tasks.TaskFactory System.Threading.Tasks.Task.Factory.get"" + IL_000f: ldsfld ""System.Func Test.<>c.<>9__0_0"" + IL_0014: dup + IL_0015: brtrue.s IL_002e + IL_0017: pop + IL_0018: ldsfld ""Test.<>c Test.<>c.<>9"" + IL_001d: ldftn ""int Test.<>c.b__0_0()"" + IL_0023: newobj ""System.Func..ctor(object, System.IntPtr)"" + IL_0028: dup + IL_0029: stsfld ""System.Func Test.<>c.<>9__0_0"" + IL_002e: callvirt ""System.Threading.Tasks.Task System.Threading.Tasks.TaskFactory.StartNew(System.Func)"" + IL_0033: callvirt ""System.Runtime.CompilerServices.TaskAwaiter System.Threading.Tasks.Task.GetAwaiter()"" + IL_0038: stloc.2 + IL_0039: ldloca.s V_2 + IL_003b: call ""bool System.Runtime.CompilerServices.TaskAwaiter.IsCompleted.get"" + IL_0040: brtrue.s IL_007e + IL_0042: ldarg.0 + IL_0043: ldc.i4.0 + IL_0044: dup + IL_0045: stloc.0 + IL_0046: stfld ""int Test.d__0.<>1__state"" + IL_004b: ldarg.0 + IL_004c: ldloc.2 + IL_004d: stfld ""System.Runtime.CompilerServices.TaskAwaiter Test.d__0.<>u__1"" + IL_0052: ldarg.0 + IL_0053: ldflda ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder Test.d__0.<>t__builder"" + IL_0058: ldloca.s V_2 + IL_005a: ldarg.0 + IL_005b: call ""void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompleted, Test.d__0>(ref System.Runtime.CompilerServices.TaskAwaiter, ref Test.d__0)"" + IL_0060: leave.s IL_00bb + IL_0062: ldarg.0 + IL_0063: ldfld ""System.Runtime.CompilerServices.TaskAwaiter Test.d__0.<>u__1"" + IL_0068: stloc.2 + IL_0069: ldarg.0 + IL_006a: ldflda ""System.Runtime.CompilerServices.TaskAwaiter Test.d__0.<>u__1"" + IL_006f: initobj ""System.Runtime.CompilerServices.TaskAwaiter"" + IL_0075: ldarg.0 + IL_0076: ldc.i4.m1 + IL_0077: dup + IL_0078: stloc.0 + IL_0079: stfld ""int Test.d__0.<>1__state"" + IL_007e: ldloca.s V_2 + IL_0080: call ""int System.Runtime.CompilerServices.TaskAwaiter.GetResult()"" + IL_0085: ldloca.s V_2 + IL_0087: initobj ""System.Runtime.CompilerServices.TaskAwaiter"" + IL_008d: stloc.1 + IL_008e: leave.s IL_00a7 + } + catch System.Exception + { + IL_0090: stloc.3 + IL_0091: ldarg.0 + IL_0092: ldc.i4.s -2 + IL_0094: stfld ""int Test.d__0.<>1__state"" + IL_0099: ldarg.0 + IL_009a: ldflda ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder Test.d__0.<>t__builder"" + IL_009f: ldloc.3 + IL_00a0: call ""void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetException(System.Exception)"" + IL_00a5: leave.s IL_00bb + } + IL_00a7: ldarg.0 + IL_00a8: ldc.i4.s -2 + IL_00aa: stfld ""int Test.d__0.<>1__state"" + IL_00af: ldarg.0 + IL_00b0: ldflda ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder Test.d__0.<>t__builder"" + IL_00b5: ldloc.1 + IL_00b6: call ""void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult(int)"" + IL_00bb: ret +} +"); + + c.VerifyIL("Test.d__0.System.Runtime.CompilerServices.IAsyncStateMachine.SetStateMachine", @" +{ + // Code size 13 (0xd) + .maxstack 2 + IL_0000: ldarg.0 + IL_0001: ldflda ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder Test.d__0.<>t__builder"" + IL_0006: ldarg.1 + IL_0007: call ""void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)"" + IL_000c: ret +} +"); + } + + [Fact] public void AsyncStateMachineIL_Class_TaskT() { diff --git a/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenTests.cs b/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenTests.cs index 6f0211feb6b16..0e74e8d31b4aa 100644 --- a/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenTests.cs +++ b/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenTests.cs @@ -3093,6 +3093,61 @@ .maxstack 3 "); } + [Fact] + public void RefInstanceFieldA() + { + string source = @" +public class D +{ + + public class Moo + { + public int I; + + public Moo() + { + } + } + + public static void Main() + { + Moo obj = new Moo(); + + System.Console.Write(obj.I); + obj.I = 42; + System.Console.Write(obj.I); + obj.I = 7; + System.Console.Write(obj.I); + } +} +"; + var compilation = CompileAndVerify(source, options: TestOptions.ReleaseDebugExe ,expectedOutput: "0427"); + + compilation.VerifyIL("D.Main", +@"{ + // Code size 53 (0x35) + .maxstack 3 + IL_0000: newobj ""D.Moo..ctor()"" + IL_0005: dup + IL_0006: ldfld ""int D.Moo.I"" + IL_000b: call ""void System.Console.Write(int)"" + IL_0010: dup + IL_0011: ldc.i4.s 42 + IL_0013: stfld ""int D.Moo.I"" + IL_0018: dup + IL_0019: ldfld ""int D.Moo.I"" + IL_001e: call ""void System.Console.Write(int)"" + IL_0023: dup + IL_0024: ldc.i4.7 + IL_0025: stfld ""int D.Moo.I"" + IL_002a: ldfld ""int D.Moo.I"" + IL_002f: call ""void System.Console.Write(int)"" + IL_0034: ret +} +"); + } + + [Fact] public void RefStaticField() { @@ -6807,6 +6862,63 @@ .locals init (bool V_0, //x "); } + [Fact] + public void TemporariesA() + { + string source = @" +using System; +class Program +{ + static void Main() + { + bool x = true; + int y = (x != true).GetType().GetHashCode() - x.GetType().GetHashCode(); // Temps involved + Console.Write((y + y).ToString()); // Temp involved + } + public void test() + { + this.bar(1).ToString(); // Temp involved + } + public int bar(int x) + { + return 0; + } +}"; + + var compilation = CompileAndVerify(source, options: TestOptions.ReleaseDebugExe ,expectedOutput: @"0"); + + compilation.VerifyIL("Program.Main", +@" +{ + // Code size 54 (0x36) + .maxstack 2 + .locals init (bool V_0, //x + int V_1) + IL_0000: ldc.i4.1 + IL_0001: stloc.0 + IL_0002: ldloc.0 + IL_0003: ldc.i4.0 + IL_0004: ceq + IL_0006: box ""bool"" + IL_000b: call ""System.Type object.GetType()"" + IL_0010: callvirt ""int object.GetHashCode()"" + IL_0015: ldloc.0 + IL_0016: box ""bool"" + IL_001b: call ""System.Type object.GetType()"" + IL_0020: callvirt ""int object.GetHashCode()"" + IL_0025: sub + IL_0026: dup + IL_0027: add + IL_0028: stloc.1 + IL_0029: ldloca.s V_1 + IL_002b: call ""string int.ToString()"" + IL_0030: call ""void System.Console.Write(string)"" + IL_0035: ret +} +"); + } + + [Fact] public void EmitObjectToStringOnSimpleType() { @@ -8632,6 +8744,76 @@ .maxstack 4 "); } + [Fact] + public void PreIncrementUnusedA() + { + string source = @" +using System; +class A +{ + public static void Main() + { + int[] x = new int[3]; + x[0] = 1; + x[1] = 2; + x[2] = 3; + + ++x[0]; + + Console.WriteLine(x[0]); + Console.WriteLine(x[1]); + Console.WriteLine(x[2]); + } +} +"; + var compilation = CompileAndVerify(source, options: TestOptions.ReleaseDebugExe, expectedOutput: @"2 +2 +3"); + + compilation.VerifyIL("A.Main", +@" +{ + // Code size 54 (0x36) + .maxstack 4 + IL_0000: ldc.i4.3 + IL_0001: newarr ""int"" + IL_0006: dup + IL_0007: ldc.i4.0 + IL_0008: ldc.i4.1 + IL_0009: stelem.i4 + IL_000a: dup + IL_000b: ldc.i4.1 + IL_000c: ldc.i4.2 + IL_000d: stelem.i4 + IL_000e: dup + IL_000f: ldc.i4.2 + IL_0010: ldc.i4.3 + IL_0011: stelem.i4 + IL_0012: dup + IL_0013: ldc.i4.0 + IL_0014: ldelema ""int"" + IL_0019: dup + IL_001a: ldind.i4 + IL_001b: ldc.i4.1 + IL_001c: add + IL_001d: stind.i4 + IL_001e: dup + IL_001f: ldc.i4.0 + IL_0020: ldelem.i4 + IL_0021: call ""void System.Console.WriteLine(int)"" + IL_0026: dup + IL_0027: ldc.i4.1 + IL_0028: ldelem.i4 + IL_0029: call ""void System.Console.WriteLine(int)"" + IL_002e: ldc.i4.2 + IL_002f: ldelem.i4 + IL_0030: call ""void System.Console.WriteLine(int)"" + IL_0035: ret +} +"); + } + + [Fact] public void PostIncrementUnusedStruct() { @@ -8723,6 +8905,53 @@ .maxstack 4 "); } + [Fact] + public void PostIncrementUnusedStruct1a() + { + string source = @" +using System; +class A +{ + public S1 x = new S1(); + + public static void Main() + { + var v = new A(); + v.x.y+=42; + + Console.WriteLine(v.x.y); + } +} + +struct S1 +{ + public int y; +} +"; + var compilation = CompileAndVerify(source, expectedOutput: @"42", options: TestOptions.ReleaseDebugExe); + + compilation.VerifyIL("A.Main", +@" +{ + // Code size 38 (0x26) + .maxstack 4 + IL_0000: newobj ""A..ctor()"" + IL_0005: dup + IL_0006: ldflda ""S1 A.x"" + IL_000b: ldflda ""int S1.y"" + IL_0010: dup + IL_0011: ldind.i4 + IL_0012: ldc.i4.s 42 + IL_0014: add + IL_0015: stind.i4 + IL_0016: ldflda ""S1 A.x"" + IL_001b: ldfld ""int S1.y"" + IL_0020: call ""void System.Console.WriteLine(int)"" + IL_0025: ret +} +"); + } + [Fact] public void PostIncrementUnusedStruct2() { From 4b58de6655144a138420d045626a21e65d386d38 Mon Sep 17 00:00:00 2001 From: Gen Lu Date: Mon, 21 Sep 2015 11:01:32 -0700 Subject: [PATCH 09/83] Address CR comments --- .../Editor/InteractiveWindow.UIThreadOnly.cs | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs b/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs index 6b7202e671a65..fd96c896ee7a4 100644 --- a/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs +++ b/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs @@ -583,17 +583,19 @@ public bool Paste() { MoveCaretToClosestEditableBuffer(); } + else + { + return false; + } } else if (IsInActivePrompt(TextView.Caret.Position.BufferPosition)) { MoveCaretToClosestEditableBuffer(); } - - // selection isn't empty means none of the selected area is editable - if (!TextView.Selection.IsEmpty) + else if (MapToEditableBuffer(TextView.Caret.Position.BufferPosition) == null) { - return true; - } + return false; + } string format = Evaluator.FormatClipboard(); if (format != null) @@ -2148,8 +2150,8 @@ public bool Delete() if (CutOrDeleteSelection(isCut: false)) { MoveCaretToClosestEditableBuffer(); + handled = true; } - handled = true; } else if (IsInActivePrompt(TextView.Caret.Position.BufferPosition)) { @@ -2158,7 +2160,7 @@ public bool Delete() return handled; } - private bool IsSteamSelectionInEditableBuffer(ITextSelection selection) + private bool IsStreamSelectionInEditableBuffer(ITextSelection selection) { Debug.Assert(selection.Mode == TextSelectionMode.Stream); @@ -2335,9 +2337,10 @@ private bool CutOrDeleteSelection(bool isCut) { if (!TextView.Selection.IsEmpty) { - if (TextView.Selection.Mode == TextSelectionMode.Stream ? - IsSteamSelectionInEditableBuffer(TextView.Selection) : - ReduceBoxSelectionToEditableBox()) + bool isEditable = TextView.Selection.Mode == TextSelectionMode.Stream ? + IsStreamSelectionInEditableBuffer(TextView.Selection) : + ReduceBoxSelectionToEditableBox(); + if (isEditable) { CutOrDelete(TextView.Selection.SelectedSpans, isCut); // if the selection spans over prompts the prompts remain selected, so clear manually: @@ -2492,8 +2495,8 @@ public bool Backspace() if (CutOrDeleteSelection(isCut: false)) { MoveCaretToClosestEditableBuffer(); + handled = true; } - handled = true; } } else if (TextView.Caret.Position.VirtualSpaces == 0) @@ -2502,8 +2505,10 @@ public bool Backspace() { MoveCaretToClosestEditableBuffer(); } - DeletePreviousCharacter(); - handled = true; + if (DeletePreviousCharacter()) + { + handled = true; + } } return handled; @@ -2511,15 +2516,17 @@ public bool Backspace() /// /// Deletes characters preceding the current caret position in the current language buffer. + /// + /// Returns true if the previous character was deleted /// - private void DeletePreviousCharacter() + private bool DeletePreviousCharacter() { SnapshotPoint? point = MapToEditableBuffer(TextView.Caret.Position.BufferPosition); // We are not in an editable buffer, or we are at the start of the buffer, nothing to delete. if (point == null || point.Value == 0) { - return; + return false; } var line = point.Value.GetContainingLine(); @@ -2537,6 +2544,7 @@ private void DeletePreviousCharacter() point.Value.Snapshot.TextBuffer.Delete(new Span(point.Value.Position - characterSize, characterSize)); ScrollToCaret(); + return true; } /// @@ -2661,6 +2669,10 @@ private bool HandlePostServicesReturn(bool trySubmit) { MoveCaretToClosestEditableBuffer(); } + else + { + return false; + } } else if (IsInActivePrompt(TextView.Caret.Position.BufferPosition)) { From d8b8ac303ef7069796461e019a8e83b4798ba8d8 Mon Sep 17 00:00:00 2001 From: vsadov Date: Mon, 21 Sep 2015 16:18:34 -0700 Subject: [PATCH 10/83] Updated test baselines. --- .../Test/Emit/CodeGen/CodeGenAsyncTests.cs | 66 +++---- .../CSharp/Test/Emit/CodeGen/CodeGenTests.cs | 163 ++++++++++-------- 2 files changed, 124 insertions(+), 105 deletions(-) diff --git a/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenAsyncTests.cs b/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenAsyncTests.cs index 33c8c917488dc..531f8413bfd74 100644 --- a/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenAsyncTests.cs +++ b/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenAsyncTests.cs @@ -2234,12 +2234,14 @@ .locals init (Test.d__0 V_0, c.VerifyIL("Test.d__0.System.Runtime.CompilerServices.IAsyncStateMachine.MoveNext", @" { - // Code size 188 (0xbc) + // Code size 196 (0xc4) .maxstack 3 .locals init (int V_0, int V_1, - System.Runtime.CompilerServices.TaskAwaiter V_2, - System.Exception V_3) + int V_2, + System.Runtime.CompilerServices.TaskAwaiter V_3, + int V_4, + System.Exception V_5) IL_0000: ldarg.0 IL_0001: ldfld ""int Test.d__0.<>1__state"" IL_0006: stloc.0 @@ -2259,8 +2261,8 @@ .locals init (int V_0, IL_0029: stsfld ""System.Func Test.<>c.<>9__0_0"" IL_002e: callvirt ""System.Threading.Tasks.Task System.Threading.Tasks.TaskFactory.StartNew(System.Func)"" IL_0033: callvirt ""System.Runtime.CompilerServices.TaskAwaiter System.Threading.Tasks.Task.GetAwaiter()"" - IL_0038: stloc.2 - IL_0039: ldloca.s V_2 + IL_0038: stloc.3 + IL_0039: ldloca.s V_3 IL_003b: call ""bool System.Runtime.CompilerServices.TaskAwaiter.IsCompleted.get"" IL_0040: brtrue.s IL_007e IL_0042: ldarg.0 @@ -2269,17 +2271,17 @@ .locals init (int V_0, IL_0045: stloc.0 IL_0046: stfld ""int Test.d__0.<>1__state"" IL_004b: ldarg.0 - IL_004c: ldloc.2 + IL_004c: ldloc.3 IL_004d: stfld ""System.Runtime.CompilerServices.TaskAwaiter Test.d__0.<>u__1"" IL_0052: ldarg.0 IL_0053: ldflda ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder Test.d__0.<>t__builder"" - IL_0058: ldloca.s V_2 + IL_0058: ldloca.s V_3 IL_005a: ldarg.0 IL_005b: call ""void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompleted, Test.d__0>(ref System.Runtime.CompilerServices.TaskAwaiter, ref Test.d__0)"" - IL_0060: leave.s IL_00bb + IL_0060: leave.s IL_00c3 IL_0062: ldarg.0 IL_0063: ldfld ""System.Runtime.CompilerServices.TaskAwaiter Test.d__0.<>u__1"" - IL_0068: stloc.2 + IL_0068: stloc.3 IL_0069: ldarg.0 IL_006a: ldflda ""System.Runtime.CompilerServices.TaskAwaiter Test.d__0.<>u__1"" IL_006f: initobj ""System.Runtime.CompilerServices.TaskAwaiter"" @@ -2288,33 +2290,37 @@ .locals init (int V_0, IL_0077: dup IL_0078: stloc.0 IL_0079: stfld ""int Test.d__0.<>1__state"" - IL_007e: ldloca.s V_2 + IL_007e: ldloca.s V_3 IL_0080: call ""int System.Runtime.CompilerServices.TaskAwaiter.GetResult()"" - IL_0085: ldloca.s V_2 - IL_0087: initobj ""System.Runtime.CompilerServices.TaskAwaiter"" - IL_008d: stloc.1 - IL_008e: leave.s IL_00a7 + IL_0085: stloc.s V_4 + IL_0087: ldloca.s V_3 + IL_0089: initobj ""System.Runtime.CompilerServices.TaskAwaiter"" + IL_008f: ldloc.s V_4 + IL_0091: stloc.2 + IL_0092: ldloc.2 + IL_0093: stloc.1 + IL_0094: leave.s IL_00af } catch System.Exception { - IL_0090: stloc.3 - IL_0091: ldarg.0 - IL_0092: ldc.i4.s -2 - IL_0094: stfld ""int Test.d__0.<>1__state"" - IL_0099: ldarg.0 - IL_009a: ldflda ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder Test.d__0.<>t__builder"" - IL_009f: ldloc.3 - IL_00a0: call ""void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetException(System.Exception)"" - IL_00a5: leave.s IL_00bb + IL_0096: stloc.s V_5 + IL_0098: ldarg.0 + IL_0099: ldc.i4.s -2 + IL_009b: stfld ""int Test.d__0.<>1__state"" + IL_00a0: ldarg.0 + IL_00a1: ldflda ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder Test.d__0.<>t__builder"" + IL_00a6: ldloc.s V_5 + IL_00a8: call ""void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetException(System.Exception)"" + IL_00ad: leave.s IL_00c3 } - IL_00a7: ldarg.0 - IL_00a8: ldc.i4.s -2 - IL_00aa: stfld ""int Test.d__0.<>1__state"" IL_00af: ldarg.0 - IL_00b0: ldflda ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder Test.d__0.<>t__builder"" - IL_00b5: ldloc.1 - IL_00b6: call ""void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult(int)"" - IL_00bb: ret + IL_00b0: ldc.i4.s -2 + IL_00b2: stfld ""int Test.d__0.<>1__state"" + IL_00b7: ldarg.0 + IL_00b8: ldflda ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder Test.d__0.<>t__builder"" + IL_00bd: ldloc.1 + IL_00be: call ""void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult(int)"" + IL_00c3: ret } "); diff --git a/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenTests.cs b/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenTests.cs index 0e74e8d31b4aa..e931cdbdb5880 100644 --- a/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenTests.cs +++ b/src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenTests.cs @@ -3124,25 +3124,29 @@ public static void Main() var compilation = CompileAndVerify(source, options: TestOptions.ReleaseDebugExe ,expectedOutput: "0427"); compilation.VerifyIL("D.Main", -@"{ - // Code size 53 (0x35) - .maxstack 3 +@" +{ + // Code size 55 (0x37) + .maxstack 2 + .locals init (D.Moo V_0) //obj IL_0000: newobj ""D.Moo..ctor()"" - IL_0005: dup - IL_0006: ldfld ""int D.Moo.I"" - IL_000b: call ""void System.Console.Write(int)"" - IL_0010: dup - IL_0011: ldc.i4.s 42 - IL_0013: stfld ""int D.Moo.I"" - IL_0018: dup - IL_0019: ldfld ""int D.Moo.I"" - IL_001e: call ""void System.Console.Write(int)"" - IL_0023: dup - IL_0024: ldc.i4.7 - IL_0025: stfld ""int D.Moo.I"" - IL_002a: ldfld ""int D.Moo.I"" - IL_002f: call ""void System.Console.Write(int)"" - IL_0034: ret + IL_0005: stloc.0 + IL_0006: ldloc.0 + IL_0007: ldfld ""int D.Moo.I"" + IL_000c: call ""void System.Console.Write(int)"" + IL_0011: ldloc.0 + IL_0012: ldc.i4.s 42 + IL_0014: stfld ""int D.Moo.I"" + IL_0019: ldloc.0 + IL_001a: ldfld ""int D.Moo.I"" + IL_001f: call ""void System.Console.Write(int)"" + IL_0024: ldloc.0 + IL_0025: ldc.i4.7 + IL_0026: stfld ""int D.Moo.I"" + IL_002b: ldloc.0 + IL_002c: ldfld ""int D.Moo.I"" + IL_0031: call ""void System.Console.Write(int)"" + IL_0036: ret } "); } @@ -6890,10 +6894,11 @@ public int bar(int x) compilation.VerifyIL("Program.Main", @" { - // Code size 54 (0x36) + // Code size 56 (0x38) .maxstack 2 .locals init (bool V_0, //x - int V_1) + int V_1, //y + int V_2) IL_0000: ldc.i4.1 IL_0001: stloc.0 IL_0002: ldloc.0 @@ -6907,13 +6912,15 @@ .locals init (bool V_0, //x IL_001b: call ""System.Type object.GetType()"" IL_0020: callvirt ""int object.GetHashCode()"" IL_0025: sub - IL_0026: dup - IL_0027: add - IL_0028: stloc.1 - IL_0029: ldloca.s V_1 - IL_002b: call ""string int.ToString()"" - IL_0030: call ""void System.Console.Write(string)"" - IL_0035: ret + IL_0026: stloc.1 + IL_0027: ldloc.1 + IL_0028: ldloc.1 + IL_0029: add + IL_002a: stloc.2 + IL_002b: ldloca.s V_2 + IL_002d: call ""string int.ToString()"" + IL_0032: call ""void System.Console.Write(string)"" + IL_0037: ret } "); } @@ -8773,42 +8780,45 @@ public static void Main() compilation.VerifyIL("A.Main", @" { - // Code size 54 (0x36) - .maxstack 4 + // Code size 56 (0x38) + .maxstack 3 + .locals init (int[] V_0) //x IL_0000: ldc.i4.3 IL_0001: newarr ""int"" - IL_0006: dup - IL_0007: ldc.i4.0 - IL_0008: ldc.i4.1 - IL_0009: stelem.i4 - IL_000a: dup - IL_000b: ldc.i4.1 - IL_000c: ldc.i4.2 - IL_000d: stelem.i4 - IL_000e: dup - IL_000f: ldc.i4.2 - IL_0010: ldc.i4.3 - IL_0011: stelem.i4 - IL_0012: dup - IL_0013: ldc.i4.0 - IL_0014: ldelema ""int"" - IL_0019: dup - IL_001a: ldind.i4 - IL_001b: ldc.i4.1 - IL_001c: add - IL_001d: stind.i4 - IL_001e: dup - IL_001f: ldc.i4.0 - IL_0020: ldelem.i4 - IL_0021: call ""void System.Console.WriteLine(int)"" - IL_0026: dup - IL_0027: ldc.i4.1 - IL_0028: ldelem.i4 - IL_0029: call ""void System.Console.WriteLine(int)"" - IL_002e: ldc.i4.2 - IL_002f: ldelem.i4 - IL_0030: call ""void System.Console.WriteLine(int)"" - IL_0035: ret + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: ldc.i4.0 + IL_0009: ldc.i4.1 + IL_000a: stelem.i4 + IL_000b: ldloc.0 + IL_000c: ldc.i4.1 + IL_000d: ldc.i4.2 + IL_000e: stelem.i4 + IL_000f: ldloc.0 + IL_0010: ldc.i4.2 + IL_0011: ldc.i4.3 + IL_0012: stelem.i4 + IL_0013: ldloc.0 + IL_0014: ldc.i4.0 + IL_0015: ldelema ""int"" + IL_001a: dup + IL_001b: ldind.i4 + IL_001c: ldc.i4.1 + IL_001d: add + IL_001e: stind.i4 + IL_001f: ldloc.0 + IL_0020: ldc.i4.0 + IL_0021: ldelem.i4 + IL_0022: call ""void System.Console.WriteLine(int)"" + IL_0027: ldloc.0 + IL_0028: ldc.i4.1 + IL_0029: ldelem.i4 + IL_002a: call ""void System.Console.WriteLine(int)"" + IL_002f: ldloc.0 + IL_0030: ldc.i4.2 + IL_0031: ldelem.i4 + IL_0032: call ""void System.Console.WriteLine(int)"" + IL_0037: ret } "); } @@ -8933,21 +8943,24 @@ struct S1 compilation.VerifyIL("A.Main", @" { - // Code size 38 (0x26) - .maxstack 4 + // Code size 40 (0x28) + .maxstack 3 + .locals init (A V_0) //v IL_0000: newobj ""A..ctor()"" - IL_0005: dup - IL_0006: ldflda ""S1 A.x"" - IL_000b: ldflda ""int S1.y"" - IL_0010: dup - IL_0011: ldind.i4 - IL_0012: ldc.i4.s 42 - IL_0014: add - IL_0015: stind.i4 - IL_0016: ldflda ""S1 A.x"" - IL_001b: ldfld ""int S1.y"" - IL_0020: call ""void System.Console.WriteLine(int)"" - IL_0025: ret + IL_0005: stloc.0 + IL_0006: ldloc.0 + IL_0007: ldflda ""S1 A.x"" + IL_000c: ldflda ""int S1.y"" + IL_0011: dup + IL_0012: ldind.i4 + IL_0013: ldc.i4.s 42 + IL_0015: add + IL_0016: stind.i4 + IL_0017: ldloc.0 + IL_0018: ldflda ""S1 A.x"" + IL_001d: ldfld ""int S1.y"" + IL_0022: call ""void System.Console.WriteLine(int)"" + IL_0027: ret } "); } From b7d872ce16c95da3e2ccde3ef6e1073385cb9e03 Mon Sep 17 00:00:00 2001 From: Gen Lu Date: Mon, 21 Sep 2015 17:38:55 -0700 Subject: [PATCH 11/83] Address CR comments --- .../Editor/InteractiveWindow.UIThreadOnly.cs | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs b/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs index fd96c896ee7a4..37cc2d023bb01 100644 --- a/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs +++ b/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs @@ -2679,16 +2679,6 @@ private bool HandlePostServicesReturn(bool trySubmit) MoveCaretToClosestEditableBuffer(); } - // there are only two possible outcomes from actions above: - // 1. selection is not empty, which means none of the selected span is editable - // 2. selection is empty and caret is in an editable buffer - - // Do nothing if none of the selected span is editable - if (!TextView.Selection.IsEmpty) - { - return true; - } - // handle "RETURN" command that is not handled by either editor or service var langCaret = GetPositionInLanguageBuffer(TextView.Caret.Position.BufferPosition); @@ -2700,16 +2690,18 @@ private bool HandlePostServicesReturn(bool trySubmit) if (trySubmit && caretPosition >= CurrentLanguageBuffer.CurrentSnapshot.Length && CanExecuteActiveCode()) { var dummy = SubmitAsync(); - return true; } - - // insert new line (triggers secondary prompt injection in buffer changed event): - CurrentLanguageBuffer.Insert(caretPosition, _lineBreakString); - IndentCurrentLine(TextView.Caret.Position.BufferPosition); - ScrollToCaret(); + else + { + // insert new line (triggers secondary prompt injection in buffer changed event): + CurrentLanguageBuffer.Insert(caretPosition, _lineBreakString); + IndentCurrentLine(TextView.Caret.Position.BufferPosition); + ScrollToCaret(); + } + return true; } - return true; + return false; } private bool CanExecuteActiveCode() From 8bbe647078eecc561398827a8dbdf1ad1d38f27a Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Tue, 22 Sep 2015 11:02:52 +0800 Subject: [PATCH 12/83] Fix spacing after merge. --- .../CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs index 145a855e920fa..ae98bb62aef93 100644 --- a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs +++ b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs @@ -48,10 +48,10 @@ protected override Task GetNewRoot( CancellationToken cancellationToken) { var expression = oldNode as ExpressionSyntax; - if (expression == null) - { + if (expression == null) + { return SpecializedTasks.Default(); - } + } switch (diagnostic.Id) { From 0ff17fbf229905694fe734e8bbc15cc9e786ef9f Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Tue, 22 Sep 2015 11:35:15 +0800 Subject: [PATCH 13/83] Use @jmarolf proposed handling --- .../Async/CSharpAddAwaitCodeFixProvider.cs | 14 ++++++++------ .../Async/VisualBasicAddAwaitCodeFixProvider.vb | 10 +++------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs index ae98bb62aef93..b2605617fba83 100644 --- a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs +++ b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs @@ -3,16 +3,17 @@ using System; using System.Collections.Immutable; using System.Composition; +using System.Linq; using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.CodeFixes; using Microsoft.CodeAnalysis.CodeFixes.Async; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Formatting; +using Microsoft.CodeAnalysis.LanguageServices; +using Microsoft.CodeAnalysis.Simplification; using Roslyn.Utilities; using Resources = Microsoft.CodeAnalysis.CSharp.CSharpFeaturesResources; -using Microsoft.CodeAnalysis.LanguageServices; -using System.Linq; namespace Microsoft.CodeAnalysis.CSharp.CodeFixes.Async { @@ -144,17 +145,18 @@ private static ExpressionSyntax ConvertToAwaitExpression(ExpressionSyntax expres { AwaitExpressionSyntax result; - if (expression.HasLeadingTrivia) + if (expression is BinaryExpressionSyntax || expression is ConditionalExpressionSyntax) { - result = SyntaxFactory.AwaitExpression(expression.WithoutLeadingTrivia()) + result = SyntaxFactory.AwaitExpression(SyntaxFactory.ParenthesizedExpression(expression.WithoutLeadingTrivia())) .WithLeadingTrivia(expression.GetLeadingTrivia()); } else { - result = SyntaxFactory.AwaitExpression(expression); + result = SyntaxFactory.AwaitExpression(SyntaxFactory.ParenthesizedExpression(expression.WithoutTrivia())) + .WithTriviaFrom(expression); } - return result.WithAdditionalAnnotations(Formatter.Annotation); + return result.WithAdditionalAnnotations(Simplifier.Annotation, Formatter.Annotation); } } } diff --git a/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb b/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb index 54b31db9604a8..f3a6f6fed212a 100644 --- a/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb +++ b/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb @@ -8,6 +8,7 @@ Imports Microsoft.CodeAnalysis.CodeFixes Imports Microsoft.CodeAnalysis.CodeFixes.Async Imports Microsoft.CodeAnalysis.Formatting Imports Microsoft.CodeAnalysis.LanguageServices +Imports Microsoft.CodeAnalysis.Simplification Imports Microsoft.CodeAnalysis.VisualBasic.Syntax Imports Resources = Microsoft.CodeAnalysis.VisualBasic.VBFeaturesResources.VBFeaturesResources @@ -112,13 +113,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeFixes.Async End Function Private Function ConverToAwaitExpression(expression As ExpressionSyntax) As ExpressionSyntax - Dim result As AwaitExpressionSyntax - If expression.HasLeadingTrivia Then - result = SyntaxFactory.AwaitExpression(expression.WithoutLeadingTrivia()).WithLeadingTrivia(expression.GetLeadingTrivia()) - Else - result = SyntaxFactory.AwaitExpression(expression) - End If - Return result.WithAdditionalAnnotations(Formatter.Annotation) + Return SyntaxFactory.AwaitExpression(SyntaxFactory.ParenthesizedExpression(expression.WithoutTrivia())) _ + .WithAdditionalAnnotations(Simplifier.Annotation, Formatter.Annotation) End Function End Class From 576e5c568504390b597bdf77536795eb3ed10515 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Tue, 22 Sep 2015 11:36:05 +0800 Subject: [PATCH 14/83] Remove incorrect test case. --- .../Diagnostics/Async/AddAwaitTests.cs | 37 ------------------- 1 file changed, 37 deletions(-) diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs index 248ada2cae56d..adfcfe9526cf0 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs @@ -48,43 +48,6 @@ async Task Test2() Test(initial, expected); } - [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] - public void BadAsyncReturnOperand1_WithLeadingTrivia() - { - var initial = -@"using System.Threading.Tasks; - -class Program -{ - async Task Test() - { - return 3; - } - - async Task Test2() - { - [|return /* dada! */ Test();|] - } -}"; - - var expected = -@"using System.Threading.Tasks; - -class Program -{ - async Task Test() - { - return 3; - } - - async Task Test2() - { - return /* dada! */ await Test(); - } -}"; - Test(initial, expected); - } - [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] public void TaskNotAwaited() { From 9f4c3bae7c91c5116b2defba19f7d252c08979e3 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Tue, 22 Sep 2015 12:40:30 +0800 Subject: [PATCH 15/83] Fix failed VB tests. --- .../CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb b/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb index f3a6f6fed212a..d257814e137f5 100644 --- a/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb +++ b/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb @@ -114,6 +114,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeFixes.Async Private Function ConverToAwaitExpression(expression As ExpressionSyntax) As ExpressionSyntax Return SyntaxFactory.AwaitExpression(SyntaxFactory.ParenthesizedExpression(expression.WithoutTrivia())) _ + .WithTriviaFrom(expression) _ .WithAdditionalAnnotations(Simplifier.Annotation, Formatter.Annotation) End Function From 984b46bcba9224a372149f028581abf55a492d8e Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Tue, 22 Sep 2015 15:55:12 +0800 Subject: [PATCH 16/83] Fix namespaces for VB test files --- .../VisualBasicTest/Diagnostics/Async/AddAsyncTests.vb | 2 +- .../VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb | 2 +- .../VisualBasicTest/Diagnostics/Async/ChangeToAsyncTests.vb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAsyncTests.vb b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAsyncTests.vb index 721a0a4b24349..49991a5895910 100644 --- a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAsyncTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAsyncTests.vb @@ -4,7 +4,7 @@ Imports Microsoft.CodeAnalysis.CodeFixes Imports Microsoft.CodeAnalysis.Diagnostics Imports Microsoft.CodeAnalysis.VisualBasic.CodeFixes.Async -Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Diagnostics.AddAsync +Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Diagnostics.Async Public Class AddAsyncTests Inherits AbstractVisualBasicDiagnosticProviderBasedUserDiagnosticTest diff --git a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb index 3bfeab29bfab6..88bba9dcecb9c 100644 --- a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb @@ -5,7 +5,7 @@ Imports Microsoft.CodeAnalysis.Diagnostics Imports Microsoft.CodeAnalysis.VisualBasic.CodeFixes.Async Imports Roslyn.Test.Utilities -Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Diagnostics.AddAsync +Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Diagnostics.Async Public Class AddAwaitTests Inherits AbstractVisualBasicDiagnosticProviderBasedUserDiagnosticTest diff --git a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/ChangeToAsyncTests.vb b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/ChangeToAsyncTests.vb index 25ccf4fbb9a33..969588160bfc3 100644 --- a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/ChangeToAsyncTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/ChangeToAsyncTests.vb @@ -4,7 +4,7 @@ Imports Microsoft.CodeAnalysis.CodeFixes Imports Microsoft.CodeAnalysis.Diagnostics Imports Microsoft.CodeAnalysis.VisualBasic.CodeFixes.Async -Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Diagnostics.AddAsync +Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Diagnostics.Async Public Class ChangeToAsyncTests Inherits AbstractVisualBasicDiagnosticProviderBasedUserDiagnosticTest From 5e7475c6d370d0e94954dafa768b910b512dac40 Mon Sep 17 00:00:00 2001 From: vsadov Date: Tue, 22 Sep 2015 12:47:32 -0700 Subject: [PATCH 17/83] CR feedback --- src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs b/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs index 8d65444eb038f..291b680dbf265 100644 --- a/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs +++ b/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs @@ -167,7 +167,7 @@ private LocalDefinition LazyReturnTemp constraints: LocalSlotConstraints.None, isDynamic: false, dynamicTransformFlags: ImmutableArray.Empty, - isSlotReusable: _ilEmitStyle == ILEmitStyle.Release); + isSlotReusable: false); } else { From 73c9498a1362dede4ead538130d5f39e0c694487 Mon Sep 17 00:00:00 2001 From: Ravi Chande Date: Tue, 22 Sep 2015 15:05:38 -0700 Subject: [PATCH 18/83] Speed up smart indenting in the presence of many inactive regions Avoid repeatedly calling ISyntaxFactsService.IsInInactiveRegion, which calls SyntaxTree.GetToken. GetToken needs to traverse directive trivia to find the token it is attached to. This results in n ^ 2 traversals of the tree if there are repeated directive before the line to indent. Additionally, when the indenter determines that it's examining a line inside a disabled region, instead of examining the previous line, it examines the first line preceeding the current line that isn't inside a disabled region. Fixes #5394. --- .../CSharpEditorServicesTest.csproj | 3 +- .../CrefCompletionProviderTests.cs | 5 + .../SmartIndenterEnterOnTokenTests.cs | 13 + .../Indentation/SmartIndenterTests.cs | 22 +- .../SmartIndenterTests_Performance.cs | 2217 +++++++++++++++++ ...ractIndentationService.AbstractIndenter.cs | 54 +- .../CrefCompletionProviderTests.vb | 4 + .../CSharpSyntaxFactsService.cs | 39 + .../SyntaxFactsService/ISyntaxFactsService.cs | 1 + .../VisualBasicSyntaxFactsService.vb | 9 + 10 files changed, 2346 insertions(+), 21 deletions(-) create mode 100644 src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterTests_Performance.cs diff --git a/src/EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj b/src/EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj index 372f7358be2a0..d699c3030fd08 100644 --- a/src/EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj +++ b/src/EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj @@ -272,6 +272,7 @@ + @@ -650,4 +651,4 @@ - + \ No newline at end of file diff --git a/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/CrefCompletionProviderTests.cs b/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/CrefCompletionProviderTests.cs index 48cff410dac98..9bd8d36c751d5 100644 --- a/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/CrefCompletionProviderTests.cs +++ b/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/CrefCompletionProviderTests.cs @@ -900,6 +900,11 @@ public bool TryGetPredefinedType(SyntaxToken token, out PredefinedType type) { throw new NotImplementedException(); } + + public TextSpan GetInactiveRegionSpanAroundPosition(SyntaxTree tree, int position, CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } } } } diff --git a/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterEnterOnTokenTests.cs b/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterEnterOnTokenTests.cs index b23565947ca70..b18d1911d614d 100644 --- a/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterEnterOnTokenTests.cs +++ b/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterEnterOnTokenTests.cs @@ -64,6 +64,19 @@ public void Preprocessor2() expectedIndentation: 4); } + [Fact] + [Trait(Traits.Feature, Traits.Features.SmartIndent)] + public void Preprocessor3() + { + var code = @"#region stuff +#endregion +"; + AssertIndentNotUsingSmartTokenFormatterButUsingIndenter( + code, + indentationLine: 2, + expectedIndentation: 0); + } + [Fact] [Trait(Traits.Feature, Traits.Features.SmartIndent)] public void Comments() diff --git a/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterTests.cs b/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterTests.cs index 2c69558015e35..5fe6dae45b0df 100644 --- a/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterTests.cs +++ b/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterTests.cs @@ -13,7 +13,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Formatting.Indentation { - public class SmartIndenterTests : FormatterTestsBase + public partial class SmartIndenterTests : FormatterTestsBase { [Fact] [Trait(Traits.Feature, Traits.Features.SmartIndent)] @@ -2530,5 +2530,25 @@ private static void AssertSmartIndent( } } } + + private static void AssertSmartIndent( + string code, + int? expectedIndentation, + CSharpParseOptions options = null) + { + var optionsSet = options != null + ? new[] { options } + : new[] { Options.Regular, Options.Script }; + + foreach (var option in optionsSet) + { + using (var workspace = CSharpWorkspaceFactory.CreateWorkspaceFromFile(code, parseOptions: option)) + { + var wpfTextView = workspace.Documents.First().GetTextView(); + var line = wpfTextView.TextBuffer.CurrentSnapshot.GetLineFromPosition(wpfTextView.Caret.Position.BufferPosition).LineNumber; + TestIndentation(line, expectedIndentation, workspace); + } + } + } } } diff --git a/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterTests_Performance.cs b/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterTests_Performance.cs new file mode 100644 index 0000000000000..d7bbaa7a4202a --- /dev/null +++ b/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterTests_Performance.cs @@ -0,0 +1,2217 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Roslyn.Test.Utilities; +using Xunit; + +namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Formatting.Indentation +{ + public partial class SmartIndenterTests + { + // TODO: Author this as a performance test. + [Fact] + [Trait(Traits.Feature, Traits.Features.SmartIndent)] + public void RegionPerformance() + { + var code = + #region very long sample code + @"using System; +using System.Collections.Generic; + +class Class1 +{ +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + } + #endregion + }; +#endif + +#if (false && Var1) + Dictionary> x = new Dictionary>() { + #region Region 1 + { + 1, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 2 + { + 2, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 3 + { + 3, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 4 + { + 4, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 5 + { + 5, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 6 + { + 6, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 7 + { + 7, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 8 + { + 8, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 9 + { + 9, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }, + #endregion + #region Region 10 + { + 10, + new List() + { + ""a"", + ""b"", + ""c"", + ""d"", + ""e"", + ""f"" + } + }$$ + + #endregion + }; +#endif +} + +class Program +{ + static void Main() + { + } +} + +"; + #endregion + + AssertSmartIndent( + code, + expectedIndentation: 4); + } + } +} diff --git a/src/EditorFeatures/Core/Implementation/SmartIndent/AbstractIndentationService.AbstractIndenter.cs b/src/EditorFeatures/Core/Implementation/SmartIndent/AbstractIndentationService.AbstractIndenter.cs index 7a8b22f2660c3..a659d988be15d 100644 --- a/src/EditorFeatures/Core/Implementation/SmartIndent/AbstractIndentationService.AbstractIndenter.cs +++ b/src/EditorFeatures/Core/Implementation/SmartIndent/AbstractIndentationService.AbstractIndenter.cs @@ -31,6 +31,9 @@ internal abstract class AbstractIndenter protected readonly IEnumerable Rules; protected readonly BottomUpBaseIndentationFinder Finder; + private static readonly Func _tokenHasDirective = tk => tk.ContainsDirectives && + (tk.LeadingTrivia.Any(tr => tr.IsDirective) || tk.TrailingTrivia.Any(tr => tr.IsDirective)); + public AbstractIndenter(Document document, IEnumerable rules, OptionSet optionSet, ITextSnapshotLine lineToBeIndented, CancellationToken cancellationToken) { this.OptionSet = optionSet; @@ -114,43 +117,56 @@ protected ITextSnapshotLine GetPreviousNonBlankOrPreprocessorLine() throw new ArgumentNullException(nameof(Tree)); } - var line = this.LineToBeIndented; + if (LineToBeIndented.LineNumber <= 0) + { + return null; + } + var syntaxFacts = this.Document.Document.GetLanguageService(); + var snapshot = this.LineToBeIndented.Snapshot; - Func predicate = currentLine => + var lineNumber = this.LineToBeIndented.LineNumber - 1; + while (lineNumber >= 0) { - // line is empty - if (string.IsNullOrWhiteSpace(currentLine.GetText())) + var actualLine = snapshot.GetLineFromLineNumber(lineNumber); + + // Empty line, no indentation to match. + if (string.IsNullOrWhiteSpace(actualLine.GetText())) { - return false; + lineNumber--; + continue; } - // okay, now check whether it is preprocessor line or not + // No preprocessors in the entire tree, so this line + // line definitely doesn't have one var root = Tree.GetRoot(CancellationToken); if (!root.ContainsDirectives) { - return true; + return snapshot.GetLineFromLineNumber(lineNumber); } - // check whether current position is part of inactive section - if (syntaxFacts.IsInInactiveRegion(this.Tree, currentLine.Extent.Start, CancellationToken)) + // This line is inside an inactive region. Examine the + // first preceeding line not in an inactive region. + var disabledSpan = syntaxFacts.GetInactiveRegionSpanAroundPosition(this.Tree, actualLine.Extent.Start, CancellationToken); + if (disabledSpan != default(TextSpan)) { - // well, treat all of this portion as blank lines - return false; + var targetLine = snapshot.GetLineNumberFromPosition(disabledSpan.Start); + lineNumber = targetLine - 1; + continue; } - Func tokenHasDirective = tk => tk.ContainsDirectives && - (tk.LeadingTrivia.Any(tr => tr.IsDirective) || tk.TrailingTrivia.Any(tr => tr.IsDirective)); - if (HasPreprocessorCharacter(currentLine) && - root.DescendantTokens(currentLine.Extent.Span.ToTextSpan(), tk => tk.FullWidth() > 0).Any(tokenHasDirective)) + // A preprocessor directive starts on this line. + if (HasPreprocessorCharacter(actualLine) && + root.DescendantTokens(actualLine.Extent.Span.ToTextSpan(), tk => tk.FullWidth() > 0).Any(_tokenHasDirective)) { - return false; + lineNumber--; + continue; } - return true; - }; + return snapshot.GetLineFromLineNumber(lineNumber); + } - return line.GetPreviousMatchingLine(predicate); + return null; } protected abstract bool HasPreprocessorCharacter(ITextSnapshotLine currentLine); diff --git a/src/EditorFeatures/VisualBasicTest/Completion/CompletionProviders/CrefCompletionProviderTests.vb b/src/EditorFeatures/VisualBasicTest/Completion/CompletionProviders/CrefCompletionProviderTests.vb index 61ed36f217c32..ec571e6ea312f 100644 --- a/src/EditorFeatures/VisualBasicTest/Completion/CompletionProviders/CrefCompletionProviderTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Completion/CompletionProviders/CrefCompletionProviderTests.vb @@ -807,6 +807,10 @@ End Class]]>.Value.NormalizeLineEndings() Public Function TryGetPredefinedType(token As SyntaxToken, ByRef type As PredefinedType) As Boolean Implements ISyntaxFactsService.TryGetPredefinedType Throw New NotImplementedException() End Function + + Public Function GetInactiveRegionSpanAroundPosition(tree As SyntaxTree, position As Integer, cancellationToken As CancellationToken) As TextSpan Implements ISyntaxFactsService.GetInactiveRegionSpanAroundPosition + Throw New NotImplementedException() + End Function End Class End Class End Namespace diff --git a/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs b/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs index 3958b54eab2b2..31f0753ed00ca 100644 --- a/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs +++ b/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs @@ -1390,5 +1390,44 @@ public bool TryGetCorrespondingOpenBrace(SyntaxToken token, out SyntaxToken open openBrace = default(SyntaxToken); return false; } + + public TextSpan GetInactiveRegionSpanAroundPosition(SyntaxTree syntaxTree, int position, CancellationToken cancellationToken) + { + var trivia = syntaxTree.GetRoot(cancellationToken).FindTrivia(position, findInsideTrivia: false); + if (trivia.Kind() == SyntaxKind.DisabledTextTrivia) + { + return trivia.FullSpan; + } + + var token = syntaxTree.FindTokenOrEndToken(position, cancellationToken); + if (token.Kind() == SyntaxKind.EndOfFileToken) + { + var triviaList = token.LeadingTrivia; + foreach (var triviaTok in triviaList.Reverse()) + { + if (triviaTok.Span.Contains(position)) + { + return default(TextSpan); + } + + if (triviaTok.Span.End < position) + { + if (!triviaTok.HasStructure) + { + return default(TextSpan); + } + + var structure = triviaTok.GetStructure(); + if (structure is BranchingDirectiveTriviaSyntax) + { + var branch = (BranchingDirectiveTriviaSyntax)structure; + return !branch.IsActive || !branch.BranchTaken ? TextSpan.FromBounds(branch.FullSpan.Start, position) : default(TextSpan); + } + } + } + } + + return default(TextSpan); + } } } diff --git a/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs b/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs index 572a3dae1acde..abdea1375f759 100644 --- a/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs +++ b/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs @@ -135,6 +135,7 @@ internal interface ISyntaxFactsService : ILanguageService int GetMethodLevelMemberId(SyntaxNode root, SyntaxNode node); SyntaxNode GetMethodLevelMember(SyntaxNode root, int memberId); + TextSpan GetInactiveRegionSpanAroundPosition(SyntaxTree tree, int position, CancellationToken cancellationToken); /// /// Given a , return the representing the span of the member body diff --git a/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb b/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb index b740642b8a9e0..1273d70bdbff1 100644 --- a/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb +++ b/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb @@ -1153,5 +1153,14 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End If Next End Sub + + Public Function GetInactiveRegionSpanAroundPosition(tree As SyntaxTree, position As Integer, cancellationToken As CancellationToken) As TextSpan Implements ISyntaxFactsService.GetInactiveRegionSpanAroundPosition + Dim trivia = tree.FindTriviaToLeft(position, cancellationToken) + If trivia.Kind = SyntaxKind.DisabledTextTrivia Then + Return trivia.FullSpan + End If + + Return Nothing + End Function End Class End Namespace From f44c63712f2d3ba6fc9f544ba6fa621a5b9adc26 Mon Sep 17 00:00:00 2001 From: Ty Overby Date: Tue, 22 Sep 2015 11:26:25 -0700 Subject: [PATCH 19/83] Ban assembly versions with wildcards in deterministic builds --- .../CSharp/Portable/Symbols/Source/SourceAssemblySymbol.cs | 3 ++- .../Portable/Symbols/Source/SourceAssemblySymbol.vb | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Compilers/CSharp/Portable/Symbols/Source/SourceAssemblySymbol.cs b/src/Compilers/CSharp/Portable/Symbols/Source/SourceAssemblySymbol.cs index 81e3db3de5b00..716430abca01a 100644 --- a/src/Compilers/CSharp/Portable/Symbols/Source/SourceAssemblySymbol.cs +++ b/src/Compilers/CSharp/Portable/Symbols/Source/SourceAssemblySymbol.cs @@ -2073,7 +2073,8 @@ private void DecodeWellKnownAttribute(ref DecodeWellKnownAttributeArguments Date: Tue, 22 Sep 2015 15:29:07 -0700 Subject: [PATCH 20/83] Add tests for banning version wildcards in deterministic builds --- .../Test/Emit/Emit/DeterministicTests.cs | 15 ++++++++++++++ .../Test/Emit/Emit/DeterministicTests.vb | 20 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/Compilers/CSharp/Test/Emit/Emit/DeterministicTests.cs b/src/Compilers/CSharp/Test/Emit/Emit/DeterministicTests.cs index fae57ed154e11..619175e6aa226 100644 --- a/src/Compilers/CSharp/Test/Emit/Emit/DeterministicTests.cs +++ b/src/Compilers/CSharp/Test/Emit/Emit/DeterministicTests.cs @@ -51,6 +51,21 @@ private ImmutableArray EmitDeterministic(string source, Platform platform, return compilation.EmitToArray(EmitOptions.Default.WithDebugInformationFormat(pdbFormat), pdbStream: new MemoryStream()); } + [Fact, WorkItem(4578, "https://github.com/dotnet/roslyn/issues/4578")] + public void BanVersionWildcards() + { + string source = @"[assembly: System.Reflection.AssemblyVersion(""10101.0.*"")] public class C {}"; + var compilationDeterministic = CreateCompilation(source, assemblyName: "DeterminismTest", references: new[] { MscorlibRef }, + parseOptions: TestOptions.Regular.WithFeature("deterministic", "true")); + var compilationNonDeterministic = CreateCompilation(source, assemblyName: "DeterminismTest", references: new[] { MscorlibRef }); + + var resultDeterministic = compilationDeterministic.Emit(new MemoryStream(), new MemoryStream()); + var resultNonDeterministic = compilationNonDeterministic.Emit(new MemoryStream(), new MemoryStream()); + + Assert.False(resultDeterministic.Success); + Assert.True(resultNonDeterministic.Success); + } + [Fact, WorkItem(372, "https://github.com/dotnet/roslyn/issues/372")] public void Simple() { diff --git a/src/Compilers/VisualBasic/Test/Emit/Emit/DeterministicTests.vb b/src/Compilers/VisualBasic/Test/Emit/Emit/DeterministicTests.vb index a0046aa288d6a..6676045ec702d 100644 --- a/src/Compilers/VisualBasic/Test/Emit/Emit/DeterministicTests.vb +++ b/src/Compilers/VisualBasic/Test/Emit/Emit/DeterministicTests.vb @@ -1,6 +1,7 @@ ' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. Imports System +Imports System.IO Imports System.Collections.Generic Imports System.Collections.Immutable Imports System.Threading @@ -25,6 +26,25 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests.Emit Return compilation.EmitToArray() End Function + + Public Sub BanVersionWildcards() + Dim source = +" +Class C + Shared Sub Main() + End Sub +End Class" + Dim compilationDeterministic = CreateCompilationWithMscorlib({source}, assemblyName:="DeterminismTest", + parseOptions:=TestOptions.Regular.WithFeature("deterministic", "true")) + Dim compilationNonDeterministic = CreateCompilationWithMscorlib({source}, assemblyName:="DeterminismTest") + + Dim resultDeterministic = compilationDeterministic.Emit(New MemoryStream(), New MemoryStream()) + Dim resultNonDeterministic = compilationNonDeterministic.Emit(New MemoryStream(), New MemoryStream()) + + Assert.False(resultDeterministic.Success) + Assert.True(resultNonDeterministic.Success) + End Sub + Public Sub CompareAllBytesEmitted_Release() Dim source = From 821de3c8a0a79aa254a82eeab6a9fe01615e6872 Mon Sep 17 00:00:00 2001 From: Ty Overby Date: Tue, 22 Sep 2015 16:14:17 -0700 Subject: [PATCH 21/83] Better way of checking for the deterministic flag --- .../CSharp/Portable/Symbols/Source/SourceAssemblySymbol.cs | 3 +-- .../Portable/Symbols/Source/SourceAssemblySymbol.vb | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Compilers/CSharp/Portable/Symbols/Source/SourceAssemblySymbol.cs b/src/Compilers/CSharp/Portable/Symbols/Source/SourceAssemblySymbol.cs index 716430abca01a..0b77ebe420db2 100644 --- a/src/Compilers/CSharp/Portable/Symbols/Source/SourceAssemblySymbol.cs +++ b/src/Compilers/CSharp/Portable/Symbols/Source/SourceAssemblySymbol.cs @@ -2073,8 +2073,7 @@ private void DecodeWellKnownAttribute(ref DecodeWellKnownAttributeArguments Date: Tue, 22 Sep 2015 16:15:58 -0700 Subject: [PATCH 22/83] run compilation tests with null device instead of memory stream --- src/Compilers/CSharp/Test/Emit/Emit/DeterministicTests.cs | 4 ++-- .../VisualBasic/Test/Emit/Emit/DeterministicTests.vb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Compilers/CSharp/Test/Emit/Emit/DeterministicTests.cs b/src/Compilers/CSharp/Test/Emit/Emit/DeterministicTests.cs index 619175e6aa226..9474477162bd7 100644 --- a/src/Compilers/CSharp/Test/Emit/Emit/DeterministicTests.cs +++ b/src/Compilers/CSharp/Test/Emit/Emit/DeterministicTests.cs @@ -59,8 +59,8 @@ public void BanVersionWildcards() parseOptions: TestOptions.Regular.WithFeature("deterministic", "true")); var compilationNonDeterministic = CreateCompilation(source, assemblyName: "DeterminismTest", references: new[] { MscorlibRef }); - var resultDeterministic = compilationDeterministic.Emit(new MemoryStream(), new MemoryStream()); - var resultNonDeterministic = compilationNonDeterministic.Emit(new MemoryStream(), new MemoryStream()); + var resultDeterministic = compilationDeterministic.Emit(Stream.Null, Stream.Null); + var resultNonDeterministic = compilationNonDeterministic.Emit(Stream.Null, Stream.Null); Assert.False(resultDeterministic.Success); Assert.True(resultNonDeterministic.Success); diff --git a/src/Compilers/VisualBasic/Test/Emit/Emit/DeterministicTests.vb b/src/Compilers/VisualBasic/Test/Emit/Emit/DeterministicTests.vb index 6676045ec702d..31bf7ce06fd11 100644 --- a/src/Compilers/VisualBasic/Test/Emit/Emit/DeterministicTests.vb +++ b/src/Compilers/VisualBasic/Test/Emit/Emit/DeterministicTests.vb @@ -38,8 +38,8 @@ End Class" parseOptions:=TestOptions.Regular.WithFeature("deterministic", "true")) Dim compilationNonDeterministic = CreateCompilationWithMscorlib({source}, assemblyName:="DeterminismTest") - Dim resultDeterministic = compilationDeterministic.Emit(New MemoryStream(), New MemoryStream()) - Dim resultNonDeterministic = compilationNonDeterministic.Emit(New MemoryStream(), New MemoryStream()) + Dim resultDeterministic = compilationDeterministic.Emit(Stream.Null, Stream.Null) + Dim resultNonDeterministic = compilationNonDeterministic.Emit(Stream.Null, Stream.Null) Assert.False(resultDeterministic.Success) Assert.True(resultNonDeterministic.Success) From 33952307c1448798fe47b52771a402ec67245fa8 Mon Sep 17 00:00:00 2001 From: Jonathon Marolf Date: Tue, 22 Sep 2015 16:53:47 -0700 Subject: [PATCH 23/83] Fixing imports on 3 new VB tests --- .../Diagnostics/Async/AddAwaitTests.vb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb index 2a09a63859c23..beda6212ee255 100644 --- a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb @@ -273,22 +273,22 @@ NewLines("Imports System.Threading.Tasks \n Module Program \n Sub MyTestMethod1A Public Sub TestTernaryOperator() Test( -NewLines("Module M \n Async Function A() As Task(Of Integer) \n Return [|If(True, Task.FromResult(0), Task.FromResult(1))|] \n End Function \n End Module"), -NewLines("Module M \n Async Function A() As Task(Of Integer) \n Return Await If(True, Task.FromResult(0), Task.FromResult(1)) \n End Function \n End Module")) +NewLines("Imports System.Threading.Tasks \n Module M \n Async Function A() As Task(Of Integer) \n Return [|If(True, Task.FromResult(0), Task.FromResult(1))|] \n End Function \n End Module"), +NewLines("Imports System.Threading.Tasks \n Module M \n Async Function A() As Task(Of Integer) \n Return Await If(True, Task.FromResult(0), Task.FromResult(1)) \n End Function \n End Module")) End Sub Public Sub TestTernaryOperator2() Test( -NewLines("Module M \n Async Function A() As Task(Of Integer) \n Return [|If(Nothing, Task.FromResult(1))|] \n End Function \n End Module"), -NewLines("Module M \n Async Function A() As Task(Of Integer) \n Return Await If(Nothing, Task.FromResult(1)) \n End Function \n End Module")) +NewLines("Imports System.Threading.Tasks \n Module M \n Async Function A() As Task(Of Integer) \n Return [|If(Nothing, Task.FromResult(1))|] \n End Function \n End Module"), +NewLines("Imports System.Threading.Tasks \n Module M \n Async Function A() As Task(Of Integer) \n Return Await If(Nothing, Task.FromResult(1)) \n End Function \n End Module")) End Sub Public Sub TestCastExpression() Test( -NewLines("Module M \n Async Function A() As Task(Of Integer) \n Return [|TryCast(Nothing, Task(Of Integer)|] \n End Function \n End Module"), -NewLines("Module M \n Async Function A() As Task(Of Integer) \n Return Await TryCast(Nothing, Task(Of Integer) \n End Function \n End Module")) +NewLines("Imports System.Threading.Tasks \n Module M \n Async Function A() As Task(Of Integer) \n Return [|TryCast(Nothing, Task(Of Integer)|] \n End Function \n End Module"), +NewLines("Imports System.Threading.Tasks \n Module M \n Async Function A() As Task(Of Integer) \n Return Await TryCast(Nothing, Task(Of Integer) \n End Function \n End Module")) End Sub Friend Overrides Function CreateDiagnosticProviderAndFixer(workspace As Workspace) As Tuple(Of DiagnosticAnalyzer, CodeFixProvider) From 7cf72af29b820cd5ce1d9bc14ce3595226d49795 Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Tue, 22 Sep 2015 16:29:47 -0700 Subject: [PATCH 24/83] Update the *Core references to new versions Some of the references were outdated and some of the NuGet packages were incorrectly authored. With the new references we don't need to do any extra work to copy over the CoreCLR runtime -- it's copied as a reference by NuGet 3 without any extra work. --- src/Compilers/CSharp/CscCore/CscCore.csproj | 5 +- src/Compilers/CSharp/CscCore/csc.cmd | 2 + src/Compilers/CSharp/CscCore/project.json | 49 +- .../CSharp/CscCore/project.lock.json | 3698 +++++++++++------ .../VisualBasic/VbcCore/VbcCore.csproj | 3 + .../VisualBasic/VbcCore/project.json | 49 +- .../VisualBasic/VbcCore/project.lock.json | 3698 +++++++++++------ src/Compilers/VisualBasic/VbcCore/vbc.cmd | 2 + 8 files changed, 4959 insertions(+), 2547 deletions(-) create mode 100644 src/Compilers/CSharp/CscCore/csc.cmd create mode 100644 src/Compilers/VisualBasic/VbcCore/vbc.cmd diff --git a/src/Compilers/CSharp/CscCore/CscCore.csproj b/src/Compilers/CSharp/CscCore/CscCore.csproj index 6bc8a148d0922..89b6aeb3c75ab 100644 --- a/src/Compilers/CSharp/CscCore/CscCore.csproj +++ b/src/Compilers/CSharp/CscCore/CscCore.csproj @@ -77,6 +77,9 @@ + + PreserveNewest + PreserveNewest @@ -88,4 +91,4 @@ - + \ No newline at end of file diff --git a/src/Compilers/CSharp/CscCore/csc.cmd b/src/Compilers/CSharp/CscCore/csc.cmd new file mode 100644 index 0000000000000..46a7457a7253c --- /dev/null +++ b/src/Compilers/CSharp/CscCore/csc.cmd @@ -0,0 +1,2 @@ +echo off +%~dp0\corerun.exe %~dp0\csc.exe %* diff --git a/src/Compilers/CSharp/CscCore/project.json b/src/Compilers/CSharp/CscCore/project.json index f6ba4a22814fd..68f61a8527c3e 100644 --- a/src/Compilers/CSharp/CscCore/project.json +++ b/src/Compilers/CSharp/CscCore/project.json @@ -1,35 +1,20 @@ { "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.0", - "Microsoft.NETCore.Runtime.CoreCLR": "1.0.1-beta-23310", - "System.AppContext": "4.0.1-beta-23310", - "System.Collections": "4.0.11-beta-23310", - "System.Console": "4.0.0-beta-23302", - "System.Diagnostics.Debug": "4.0.11-beta-23310", - "System.Diagnostics.Process": "4.1.0-beta-23310", - "System.Diagnostics.Tools": "4.0.1-beta-23310", - "System.Globalization": "4.0.11-beta-23310", - "System.IO": "4.0.11-beta-23310", - "System.IO.FileSystem": "4.0.1-beta-23302", - "System.IO.FileSystem.Primitives": "4.0.1-beta-23310", - "System.IO.Pipes": "4.0.0-beta-23310", - "System.Linq": "4.0.1-beta-23310", - "System.Private.Uri": "4.0.1-beta-23310", - "System.Reflection": "4.1.0-beta-23310", - "System.Reflection.Primitives": "4.0.1-beta-23310", - "System.Resources.ResourceManager": "4.0.1-beta-23310", - "System.Runtime": "4.0.21-beta-23310", - "System.Runtime.Extensions": "4.0.11-beta-23310", - "System.Runtime.Handles": "4.0.1-beta-23310", - "System.Runtime.InteropServices": "4.0.21-beta-23310", - "System.Security.Cryptography.Hashing.Algorithms": "4.0.0-beta-23310", - "System.Text.Encoding": "4.0.11-beta-23310", - "System.Text.Encoding.Extensions": "4.0.11-beta-23310", - "System.Threading": "4.0.11-beta-23310", - "System.Threading.Tasks": "4.0.11-beta-23310", - "System.Threading.Thread": "4.0.0-beta-23310", - "System.Xml.XDocument": "4.0.11-beta-23310", - "System.Xml.XmlDocument": "4.0.1-beta-23310", + "Microsoft.NETCore.Platforms": "1.0.1-beta-23321", + "Microsoft.NETCore.Runtime.CoreCLR": "1.0.1-beta-23321", + "Microsoft.NETCore.TestHost-x64": "1.0.0-beta-23213", + "System.AppContext": "4.0.1-beta-23321", + "System.Collections.Immutable": "1.1.36", + "System.Console": "4.0.0-beta-23321", + "System.Diagnostics.FileVersionInfo": "4.0.0-beta-23321", + "System.Diagnostics.Process": "4.1.0-beta-23321", + "System.Dynamic.Runtime": "4.0.11-beta-23321", + "System.IO.FileSystem": "4.0.1-beta-23321", + "System.IO.Pipes": "4.0.0-beta-23321", + "System.Linq": "4.0.1-beta-23321", + "System.Security.Cryptography.Hashing.Algorithms": "4.0.0-beta-23311", + "System.Threading.Tasks.Parallel": "4.0.1-beta-23321", + "System.Threading.Thread": "4.0.0-beta-23321", }, "frameworks": { "dnxcore50": { @@ -37,7 +22,7 @@ } }, "runtimes": { - "win-x64": { }, - "linux-x64": { }, + "win7-x64": { }, + "ubuntu.14.04-x64": { }, } } diff --git a/src/Compilers/CSharp/CscCore/project.lock.json b/src/Compilers/CSharp/CscCore/project.lock.json index 4b2152a090a63..420c33978f0a4 100644 --- a/src/Compilers/CSharp/CscCore/project.lock.json +++ b/src/Compilers/CSharp/CscCore/project.lock.json @@ -4,86 +4,77 @@ "targets": { "DNXCore,Version=v5.0": { "Microsoft.DiaSymReader.Native/1.1.0-alpha2": {}, - "Microsoft.NETCore.Platforms/1.0.0": {}, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23310": { - "dependencies": { - "Microsoft.NETCore.Windows.ApiSets": "[1.0.1-beta-23310, )", - "System.Collections": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Diagnostics.Contracts": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Debug": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Diagnostics.StackTrace": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Tools": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Tracing": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Globalization": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Globalization.Calendars": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.IO": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.ObjectModel": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Private.Uri": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Reflection": "[4.1.0-beta-23310, 4.1.0-beta-23310]", - "System.Reflection.Extensions": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Reflection.Primitives": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Resources.ResourceManager": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Runtime": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Runtime.Extensions": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Runtime.Handles": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Runtime.InteropServices": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Text.Encoding": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Text.Encoding.Extensions": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading.Tasks": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading.Timer": "[4.0.1-beta-23310, 4.0.1-beta-23310]" - } - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23310": {}, - "Microsoft.Win32.Primitives/4.0.0": { - "dependencies": { - "System.Runtime": "[4.0.20, )", - "System.Runtime.InteropServices": "[4.0.20, )" - }, - "compile": { - "ref/dotnet/Microsoft.Win32.Primitives.dll": {} - }, - "runtime": { - "lib/dotnet/Microsoft.Win32.Primitives.dll": {} - } - }, - "Microsoft.Win32.Registry/4.0.0-beta-23310": { + "Microsoft.NETCore.Platforms/1.0.1-beta-23321": {}, + "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "dependencies": { + "Microsoft.NETCore.Windows.ApiSets": "[1.0.1-beta-23321, )", + "System.Collections": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Diagnostics.Contracts": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Debug": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Diagnostics.StackTrace": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Tools": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Tracing": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Globalization": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Globalization.Calendars": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.IO": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.ObjectModel": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Private.Uri": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Reflection": "[4.1.0-beta-23321, 4.1.0-beta-23321]", + "System.Reflection.Extensions": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Reflection.Primitives": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Resources.ResourceManager": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Runtime": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Runtime.Extensions": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Runtime.Handles": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Runtime.InteropServices": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Text.Encoding": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Text.Encoding.Extensions": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading.Tasks": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading.Timer": "[4.0.1-beta-23321, 4.0.1-beta-23321]" + } + }, + "Microsoft.NETCore.TestHost-x64/1.0.0-beta-23213": {}, + "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23321": {}, + "System.AppContext/4.0.1-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )" + "System.Runtime": "[4.0.0, )" }, "compile": { - "ref/dotnet/Microsoft.Win32.Registry.dll": {} + "ref/dotnet/System.AppContext.dll": {} }, "runtime": { - "lib/DNXCore50/Microsoft.Win32.Registry.dll": {} + "lib/DNXCore50/System.AppContext.dll": {} } }, - "System.AppContext/4.0.1-beta-23310": { + "System.Collections/4.0.11-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )" + "System.Runtime": "[4.0.21-beta-23321, )" }, "compile": { - "ref/dotnet/System.AppContext.dll": {} + "ref/dotnet/System.Collections.dll": {} }, "runtime": { - "lib/DNXCore50/System.AppContext.dll": {} + "lib/DNXCore50/System.Collections.dll": {} } }, - "System.Collections/4.0.11-beta-23310": { + "System.Collections.Concurrent/4.0.10": { "dependencies": { - "System.Runtime": "[4.0.21-beta-23310, )" + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Globalization": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Collections.dll": {} + "ref/dotnet/System.Collections.Concurrent.dll": {} }, "runtime": { - "lib/DNXCore50/System.Collections.dll": {} + "lib/dotnet/System.Collections.Concurrent.dll": {} } }, "System.Collections.Immutable/1.1.36": { @@ -94,26 +85,16 @@ "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} } }, - "System.Console/4.0.0-beta-23302": { + "System.Console/4.0.0-beta-23321": { "dependencies": { - "System.IO": "[4.0.10, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Console.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Console.dll": {} } }, - "System.Diagnostics.Contracts/4.0.1-beta-23310": { + "System.Diagnostics.Contracts/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -124,47 +105,34 @@ "lib/DNXCore50/System.Diagnostics.Contracts.dll": {} } }, - "System.Diagnostics.Debug/4.0.11-beta-23310": { + "System.Diagnostics.Debug/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )" }, - "runtime": { - "lib/DNXCore50/System.Diagnostics.Debug.dll": {} + "compile": { + "ref/dotnet/System.Diagnostics.FileVersionInfo.dll": {} } }, - "System.Diagnostics.Process/4.1.0-beta-23310": { + "System.Diagnostics.Process/4.1.0-beta-23321": { "dependencies": { - "Microsoft.Win32.Primitives": "[4.0.0, )", - "Microsoft.Win32.Registry": "[4.0.0-beta-23310, )", - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.IO.FileSystem": "[4.0.0, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )", - "System.Threading.Thread": "[4.0.0-beta-23310, )", - "System.Threading.ThreadPool": "[4.0.10-beta-23310, )" + "System.Text.Encoding": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Diagnostics.Process.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Diagnostics.Process.dll": {} } }, - "System.Diagnostics.StackTrace/4.0.1-beta-23310": { + "System.Diagnostics.StackTrace/4.0.1-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -176,7 +144,7 @@ "lib/DNXCore50/System.Diagnostics.StackTrace.dll": {} } }, - "System.Diagnostics.Tools/4.0.1-beta-23310": { + "System.Diagnostics.Tools/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -187,7 +155,7 @@ "lib/DNXCore50/System.Diagnostics.Tools.dll": {} } }, - "System.Diagnostics.Tracing/4.0.21-beta-23310": { + "System.Diagnostics.Tracing/4.0.21-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -198,7 +166,32 @@ "lib/DNXCore50/System.Diagnostics.Tracing.dll": {} } }, - "System.Globalization/4.0.11-beta-23310": { + "System.Dynamic.Runtime/4.0.11-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Linq.Expressions": "[4.0.10, )", + "System.ObjectModel": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Emit": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Dynamic.Runtime.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Dynamic.Runtime.dll": {} + } + }, + "System.Globalization/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -209,7 +202,7 @@ "lib/DNXCore50/System.Globalization.dll": {} } }, - "System.Globalization.Calendars/4.0.1-beta-23310": { + "System.Globalization.Calendars/4.0.1-beta-23321": { "dependencies": { "System.Globalization": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -221,7 +214,7 @@ "lib/DNXCore50/System.Globalization.Calendars.dll": {} } }, - "System.IO/4.0.11-beta-23310": { + "System.IO/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.20, )", "System.Text.Encoding": "[4.0.0, )", @@ -234,30 +227,20 @@ "lib/DNXCore50/System.IO.dll": {} } }, - "System.IO.FileSystem/4.0.1-beta-23302": { + "System.IO.FileSystem/4.0.1-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.IO": "[4.0.10, )", + "System.IO": "[4.0.0, )", "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Overlapped": "[4.0.0, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Text.Encoding": "[4.0.0, )", + "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.IO.FileSystem.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.IO.FileSystem.dll": {} } }, - "System.IO.FileSystem.Primitives/4.0.1-beta-23310": { + "System.IO.FileSystem.Primitives/4.0.0": { "dependencies": { "System.Runtime": "[4.0.20, )" }, @@ -268,28 +251,19 @@ "lib/dotnet/System.IO.FileSystem.Primitives.dll": {} } }, - "System.IO.Pipes/4.0.0-beta-23310": { + "System.IO.Pipes/4.0.0-beta-23321": { "dependencies": { - "System.IO": "[4.0.10, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", "System.Security.Principal": "[4.0.0, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Overlapped": "[4.0.0, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.IO.Pipes.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.IO.Pipes.dll": {} } }, - "System.Linq/4.0.1-beta-23310": { + "System.Linq/4.0.1-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", @@ -304,7 +278,32 @@ "lib/dotnet/System.Linq.dll": {} } }, - "System.ObjectModel/4.0.11-beta-23310": { + "System.Linq.Expressions/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.0, )", + "System.Diagnostics.Debug": "[4.0.0, )", + "System.Globalization": "[4.0.0, )", + "System.IO": "[4.0.0, )", + "System.Linq": "[4.0.0, )", + "System.ObjectModel": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit": "[4.0.0, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.0, )", + "System.Threading": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Linq.Expressions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Linq.Expressions.dll": {} + } + }, + "System.ObjectModel/4.0.11-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", @@ -319,15 +318,12 @@ "lib/dotnet/System.ObjectModel.dll": {} } }, - "System.Private.Uri/4.0.1-beta-23310": { + "System.Private.Uri/4.0.1-beta-23321": { "compile": { "ref/dnxcore50/_._": {} - }, - "runtime": { - "lib/DNXCore50/System.Private.Uri.dll": {} } }, - "System.Reflection/4.1.0-beta-23310": { + "System.Reflection/4.1.0-beta-23321": { "dependencies": { "System.IO": "[4.0.0, )", "System.Reflection.Primitives": "[4.0.0, )", @@ -340,7 +336,35 @@ "lib/DNXCore50/System.Reflection.dll": {} } }, - "System.Reflection.Extensions/4.0.1-beta-23310": { + "System.Reflection.Emit/4.0.0": { + "dependencies": { + "System.IO": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.dll": {} + } + }, + "System.Reflection.Emit.ILGeneration/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.ILGeneration.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.ILGeneration.dll": {} + } + }, + "System.Reflection.Extensions/4.0.1-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -363,7 +387,7 @@ "lib/portable-net45+win8/System.Reflection.Metadata.dll": {} } }, - "System.Reflection.Primitives/4.0.1-beta-23310": { + "System.Reflection.Primitives/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -374,7 +398,19 @@ "lib/DNXCore50/System.Reflection.Primitives.dll": {} } }, - "System.Resources.ResourceManager/4.0.1-beta-23310": { + "System.Reflection.TypeExtensions/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.TypeExtensions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.TypeExtensions.dll": {} + } + }, + "System.Resources.ResourceManager/4.0.1-beta-23321": { "dependencies": { "System.Globalization": "[4.0.0, )", "System.Reflection": "[4.0.0, )", @@ -387,9 +423,9 @@ "lib/DNXCore50/System.Resources.ResourceManager.dll": {} } }, - "System.Runtime/4.0.21-beta-23310": { + "System.Runtime/4.0.21-beta-23321": { "dependencies": { - "System.Private.Uri": "[4.0.1-beta-23310, )" + "System.Private.Uri": "[4.0.1-beta-23321, )" }, "compile": { "ref/dotnet/System.Runtime.dll": {} @@ -398,18 +434,15 @@ "lib/DNXCore50/System.Runtime.dll": {} } }, - "System.Runtime.Extensions/4.0.11-beta-23310": { + "System.Runtime.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.20, )" }, "compile": { "ref/dotnet/System.Runtime.Extensions.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Runtime.Extensions.dll": {} } }, - "System.Runtime.Handles/4.0.1-beta-23310": { + "System.Runtime.Handles/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -420,7 +453,7 @@ "lib/DNXCore50/System.Runtime.Handles.dll": {} } }, - "System.Runtime.InteropServices/4.0.21-beta-23310": { + "System.Runtime.InteropServices/4.0.21-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Reflection.Primitives": "[4.0.0, )", @@ -434,13 +467,13 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, - "System.Security.Cryptography.Algorithms/4.0.0-beta-23310": { + "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.IO": "[4.0.10, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Security.Cryptography.Primitives": "[4.0.0-beta-23310, )", + "System.Security.Cryptography.Primitives": "[4.0.0-beta-23311, )", "System.Text.Encoding": "[4.0.0, )", "System.Text.Encoding.Extensions": "[4.0.0, )" }, @@ -451,10 +484,10 @@ "lib/DNXCore50/System.Security.Cryptography.Algorithms.dll": {} } }, - "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23310": { + "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.Runtime": "[4.0.0, )", - "System.Security.Cryptography.Algorithms": "[4.0.0-beta-23310, )" + "System.Security.Cryptography.Algorithms": "[4.0.0-beta-23311, )" }, "compile": { "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll": {} @@ -463,7 +496,7 @@ "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll": {} } }, - "System.Security.Cryptography.Primitives/4.0.0-beta-23310": { + "System.Security.Cryptography.Primitives/4.0.0-beta-23311": { "dependencies": { "System.Diagnostics.Debug": "[4.0.0, )", "System.Globalization": "[4.0.0, )", @@ -491,7 +524,7 @@ "lib/dotnet/System.Security.Principal.dll": {} } }, - "System.Text.Encoding/4.0.11-beta-23310": { + "System.Text.Encoding/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -502,7 +535,7 @@ "lib/DNXCore50/System.Text.Encoding.dll": {} } }, - "System.Text.Encoding.Extensions/4.0.11-beta-23310": { + "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Text.Encoding": "[4.0.10, )" @@ -514,58 +547,45 @@ "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {} } }, - "System.Text.RegularExpressions/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/dotnet/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.0.11-beta-23310": { + "System.Threading/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Threading.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Threading.dll": {} } }, - "System.Threading.Overlapped/4.0.0": { + "System.Threading.Tasks/4.0.11-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )", - "System.Runtime.Handles": "[4.0.0, )" + "System.Runtime": "[4.0.0, )" }, "compile": { - "ref/dotnet/System.Threading.Overlapped.dll": {} + "ref/dotnet/System.Threading.Tasks.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Overlapped.dll": {} + "lib/DNXCore50/System.Threading.Tasks.dll": {} } }, - "System.Threading.Tasks/4.0.11-beta-23310": { + "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )" + "System.Collections.Concurrent": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Threading.Tasks.dll": {} + "ref/dotnet/System.Threading.Tasks.Parallel.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Tasks.dll": {} + "lib/dotnet/System.Threading.Tasks.Parallel.dll": {} } }, - "System.Threading.Thread/4.0.0-beta-23310": { + "System.Threading.Thread/4.0.0-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -576,31 +596,67 @@ "lib/DNXCore50/System.Threading.Thread.dll": {} } }, - "System.Threading.ThreadPool/4.0.10-beta-23310": { + "System.Threading.Timer/4.0.1-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.0, )" + "System.Runtime": "[4.0.0, )" }, "compile": { - "ref/dotnet/System.Threading.ThreadPool.dll": {} + "ref/dotnet/System.Threading.Timer.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.ThreadPool.dll": {} + "lib/DNXCore50/System.Threading.Timer.dll": {} } - }, - "System.Threading.Timer/4.0.1-beta-23310": { + } + }, + "DNXCore,Version=v5.0/ubuntu.14.04-x64": { + "Microsoft.DiaSymReader.Native/1.1.0-alpha2": {}, + "Microsoft.NETCore.Platforms/1.0.1-beta-23321": {}, + "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "dependencies": { + "Microsoft.NETCore.Windows.ApiSets": "[1.0.1-beta-23321, )", + "System.Collections": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Diagnostics.Contracts": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Debug": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Diagnostics.StackTrace": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Tools": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Tracing": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Globalization": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Globalization.Calendars": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.IO": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.ObjectModel": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Private.Uri": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Reflection": "[4.1.0-beta-23321, 4.1.0-beta-23321]", + "System.Reflection.Extensions": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Reflection.Primitives": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Resources.ResourceManager": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Runtime": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Runtime.Extensions": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Runtime.Handles": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Runtime.InteropServices": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Text.Encoding": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Text.Encoding.Extensions": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading.Tasks": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading.Timer": "[4.0.1-beta-23321, 4.0.1-beta-23321]" + } + }, + "Microsoft.NETCore.TestHost-x64/1.0.0-beta-23213": {}, + "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23321": {}, + "Microsoft.Win32.Primitives/4.0.0": { "dependencies": { - "System.Runtime": "[4.0.0, )" + "System.Runtime": "[4.0.20, )", + "System.Runtime.InteropServices": "[4.0.20, )" }, "compile": { - "ref/dotnet/System.Threading.Timer.dll": {} + "ref/dotnet/Microsoft.Win32.Primitives.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Timer.dll": {} + "lib/dotnet/Microsoft.Win32.Primitives.dll": {} } }, - "System.Xml.ReaderWriter/4.0.10": { + "runtime.linux.System.Diagnostics.Process/4.1.0-beta-23321": { "dependencies": { + "Microsoft.Win32.Primitives": "[4.0.0, )", "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", "System.Globalization": "[4.0.10, )", @@ -610,125 +666,152 @@ "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", "System.Runtime.InteropServices": "[4.0.20, )", "System.Text.Encoding": "[4.0.10, )", "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Text.RegularExpressions": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )", + "System.Threading.ThreadPool": "[4.0.10-beta-23321, )" }, "compile": { - "ref/dotnet/System.Xml.ReaderWriter.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/System.Xml.ReaderWriter.dll": {} + "lib/dotnet/System.Diagnostics.Process.dll": {} } }, - "System.Xml.XDocument/4.0.11-beta-23310": { + "runtime.linux.System.IO.FileSystem/4.0.1-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tools": "[4.0.0, )", - "System.Globalization": "[4.0.10, )", "System.IO": "[4.0.10, )", - "System.Reflection": "[4.0.10, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )", "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", "System.Threading": "[4.0.10, )", - "System.Xml.ReaderWriter": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/linux/lib/dotnet/System.IO.FileSystem.dll": {} + } + }, + "runtime.linux.System.Runtime.Extensions/4.0.11-beta-23321": { + "compile": { + "ref/dotnet/_._": {} }, + "runtime": { + "lib/dotnet/System.Runtime.Extensions.dll": {} + } + }, + "runtime.ubuntu.14.04-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { "compile": { - "ref/dotnet/System.Xml.XDocument.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/System.Xml.XDocument.dll": {} + "runtimes/ubuntu.14.04-x64/lib/dotnet/mscorlib.dll": {} + }, + "native": { + "runtimes/ubuntu.14.04-x64/native/libcoreclr.so": {}, + "runtimes/ubuntu.14.04-x64/native/libdbgshim.so": {}, + "runtimes/ubuntu.14.04-x64/native/libmscordaccore.so": {}, + "runtimes/ubuntu.14.04-x64/native/libmscordbi.so": {}, + "runtimes/ubuntu.14.04-x64/native/libsos.so": {}, + "runtimes/ubuntu.14.04-x64/native/libsosplugin.so": {}, + "runtimes/ubuntu.14.04-x64/native/System.Native.so": {}, + "runtimes/ubuntu.14.04-x64/native/System.Net.Http.Native.so": {}, + "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.so": {} } }, - "System.Xml.XmlDocument/4.0.1-beta-23310": { + "runtime.unix.System.Console/4.0.0-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", "System.IO": "[4.0.10, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )", "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", "System.Threading": "[4.0.10, )", - "System.Xml.ReaderWriter": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Xml.XmlDocument.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/System.Xml.XmlDocument.dll": {} + "lib/dotnet/System.Console.dll": {} } - } - }, - "DNXCore,Version=v5.0/linux-x64": { - "Microsoft.DiaSymReader.Native/1.1.0-alpha2": {}, - "Microsoft.NETCore.Platforms/1.0.0": {}, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23310": { - "dependencies": { - "Microsoft.NETCore.Windows.ApiSets": "[1.0.1-beta-23310, )", - "System.Collections": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Diagnostics.Contracts": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Debug": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Diagnostics.StackTrace": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Tools": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Tracing": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Globalization": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Globalization.Calendars": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.IO": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.ObjectModel": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Private.Uri": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Reflection": "[4.1.0-beta-23310, 4.1.0-beta-23310]", - "System.Reflection.Extensions": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Reflection.Primitives": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Resources.ResourceManager": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Runtime": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Runtime.Extensions": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Runtime.Handles": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Runtime.InteropServices": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Text.Encoding": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Text.Encoding.Extensions": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading.Tasks": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading.Timer": "[4.0.1-beta-23310, 4.0.1-beta-23310]" - } - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23310": {}, - "Microsoft.Win32.Primitives/4.0.0": { + }, + "runtime.unix.System.Diagnostics.Debug/4.0.11-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "lib/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "runtime.unix.System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { "dependencies": { + "System.IO": "[4.0.10, )", + "System.IO.FileSystem": "[4.0.0, )", + "System.Reflection.Metadata": "[1.0.22, )", "System.Runtime": "[4.0.20, )", - "System.Runtime.InteropServices": "[4.0.20, )" + "System.Runtime.Extensions": "[4.0.10, )" }, "compile": { - "ref/dotnet/Microsoft.Win32.Primitives.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/Microsoft.Win32.Primitives.dll": {} + "lib/dotnet/System.Diagnostics.FileVersionInfo.dll": {} } }, - "Microsoft.Win32.Registry/4.0.0-beta-23310": { + "runtime.unix.System.IO.Pipes/4.0.0-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.IO": "[4.0.10, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )" + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Security.Principal": "[4.0.0, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/Microsoft.Win32.Registry.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/DNXCore50/Microsoft.Win32.Registry.dll": {} + "lib/dotnet/System.IO.Pipes.dll": {} + } + }, + "runtime.unix.System.Private.Uri/4.0.1-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "lib/dotnet/System.Private.Uri.dll": {} } }, - "System.AppContext/4.0.1-beta-23310": { + "runtime.unix.System.Threading/4.0.11-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "lib/dotnet/System.Threading.dll": {} + } + }, + "System.AppContext/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -739,9 +822,9 @@ "lib/DNXCore50/System.AppContext.dll": {} } }, - "System.Collections/4.0.11-beta-23310": { + "System.Collections/4.0.11-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.21-beta-23310, )" + "System.Runtime": "[4.0.21-beta-23321, )" }, "compile": { "ref/dotnet/System.Collections.dll": {} @@ -750,6 +833,25 @@ "lib/DNXCore50/System.Collections.dll": {} } }, + "System.Collections.Concurrent/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Globalization": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Collections.Concurrent.dll": {} + }, + "runtime": { + "lib/dotnet/System.Collections.Concurrent.dll": {} + } + }, "System.Collections.Immutable/1.1.36": { "compile": { "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} @@ -758,26 +860,16 @@ "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} } }, - "System.Console/4.0.0-beta-23302": { + "System.Console/4.0.0-beta-23321": { "dependencies": { - "System.IO": "[4.0.10, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Console.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Console.dll": {} } }, - "System.Diagnostics.Contracts/4.0.1-beta-23310": { + "System.Diagnostics.Contracts/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -788,47 +880,34 @@ "lib/DNXCore50/System.Diagnostics.Contracts.dll": {} } }, - "System.Diagnostics.Debug/4.0.11-beta-23310": { + "System.Diagnostics.Debug/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )" }, - "runtime": { - "lib/DNXCore50/System.Diagnostics.Debug.dll": {} + "compile": { + "ref/dotnet/System.Diagnostics.FileVersionInfo.dll": {} } }, - "System.Diagnostics.Process/4.1.0-beta-23310": { + "System.Diagnostics.Process/4.1.0-beta-23321": { "dependencies": { - "Microsoft.Win32.Primitives": "[4.0.0, )", - "Microsoft.Win32.Registry": "[4.0.0-beta-23310, )", - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.IO.FileSystem": "[4.0.0, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )", - "System.Threading.Thread": "[4.0.0-beta-23310, )", - "System.Threading.ThreadPool": "[4.0.10-beta-23310, )" + "System.Text.Encoding": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Diagnostics.Process.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Diagnostics.Process.dll": {} } }, - "System.Diagnostics.StackTrace/4.0.1-beta-23310": { + "System.Diagnostics.StackTrace/4.0.1-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -840,7 +919,7 @@ "lib/DNXCore50/System.Diagnostics.StackTrace.dll": {} } }, - "System.Diagnostics.Tools/4.0.1-beta-23310": { + "System.Diagnostics.Tools/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -851,7 +930,7 @@ "lib/DNXCore50/System.Diagnostics.Tools.dll": {} } }, - "System.Diagnostics.Tracing/4.0.21-beta-23310": { + "System.Diagnostics.Tracing/4.0.21-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -862,7 +941,32 @@ "lib/DNXCore50/System.Diagnostics.Tracing.dll": {} } }, - "System.Globalization/4.0.11-beta-23310": { + "System.Dynamic.Runtime/4.0.11-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Linq.Expressions": "[4.0.10, )", + "System.ObjectModel": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Emit": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Dynamic.Runtime.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Dynamic.Runtime.dll": {} + } + }, + "System.Globalization/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -873,7 +977,7 @@ "lib/DNXCore50/System.Globalization.dll": {} } }, - "System.Globalization.Calendars/4.0.1-beta-23310": { + "System.Globalization.Calendars/4.0.1-beta-23321": { "dependencies": { "System.Globalization": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -885,7 +989,7 @@ "lib/DNXCore50/System.Globalization.Calendars.dll": {} } }, - "System.IO/4.0.11-beta-23310": { + "System.IO/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.20, )", "System.Text.Encoding": "[4.0.0, )", @@ -898,30 +1002,20 @@ "lib/DNXCore50/System.IO.dll": {} } }, - "System.IO.FileSystem/4.0.1-beta-23302": { + "System.IO.FileSystem/4.0.1-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.IO": "[4.0.10, )", + "System.IO": "[4.0.0, )", "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Overlapped": "[4.0.0, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Text.Encoding": "[4.0.0, )", + "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.IO.FileSystem.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.IO.FileSystem.dll": {} } }, - "System.IO.FileSystem.Primitives/4.0.1-beta-23310": { + "System.IO.FileSystem.Primitives/4.0.0": { "dependencies": { "System.Runtime": "[4.0.20, )" }, @@ -932,28 +1026,19 @@ "lib/dotnet/System.IO.FileSystem.Primitives.dll": {} } }, - "System.IO.Pipes/4.0.0-beta-23310": { + "System.IO.Pipes/4.0.0-beta-23321": { "dependencies": { - "System.IO": "[4.0.10, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", "System.Security.Principal": "[4.0.0, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Overlapped": "[4.0.0, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.IO.Pipes.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.IO.Pipes.dll": {} } }, - "System.Linq/4.0.1-beta-23310": { + "System.Linq/4.0.1-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", @@ -968,7 +1053,32 @@ "lib/dotnet/System.Linq.dll": {} } }, - "System.ObjectModel/4.0.11-beta-23310": { + "System.Linq.Expressions/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.0, )", + "System.Diagnostics.Debug": "[4.0.0, )", + "System.Globalization": "[4.0.0, )", + "System.IO": "[4.0.0, )", + "System.Linq": "[4.0.0, )", + "System.ObjectModel": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit": "[4.0.0, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.0, )", + "System.Threading": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Linq.Expressions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Linq.Expressions.dll": {} + } + }, + "System.ObjectModel/4.0.11-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", @@ -983,15 +1093,12 @@ "lib/dotnet/System.ObjectModel.dll": {} } }, - "System.Private.Uri/4.0.1-beta-23310": { + "System.Private.Uri/4.0.1-beta-23321": { "compile": { "ref/dnxcore50/_._": {} - }, - "runtime": { - "lib/DNXCore50/System.Private.Uri.dll": {} } }, - "System.Reflection/4.1.0-beta-23310": { + "System.Reflection/4.1.0-beta-23321": { "dependencies": { "System.IO": "[4.0.0, )", "System.Reflection.Primitives": "[4.0.0, )", @@ -1004,7 +1111,49 @@ "lib/DNXCore50/System.Reflection.dll": {} } }, - "System.Reflection.Extensions/4.0.1-beta-23310": { + "System.Reflection.Emit/4.0.0": { + "dependencies": { + "System.IO": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.dll": {} + } + }, + "System.Reflection.Emit.ILGeneration/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.ILGeneration.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.ILGeneration.dll": {} + } + }, + "System.Reflection.Emit.Lightweight/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.Lightweight.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.Lightweight.dll": {} + } + }, + "System.Reflection.Extensions/4.0.1-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -1027,7 +1176,7 @@ "lib/portable-net45+win8/System.Reflection.Metadata.dll": {} } }, - "System.Reflection.Primitives/4.0.1-beta-23310": { + "System.Reflection.Primitives/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1038,7 +1187,19 @@ "lib/DNXCore50/System.Reflection.Primitives.dll": {} } }, - "System.Resources.ResourceManager/4.0.1-beta-23310": { + "System.Reflection.TypeExtensions/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.TypeExtensions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.TypeExtensions.dll": {} + } + }, + "System.Resources.ResourceManager/4.0.1-beta-23321": { "dependencies": { "System.Globalization": "[4.0.0, )", "System.Reflection": "[4.0.0, )", @@ -1051,9 +1212,9 @@ "lib/DNXCore50/System.Resources.ResourceManager.dll": {} } }, - "System.Runtime/4.0.21-beta-23310": { + "System.Runtime/4.0.21-beta-23321": { "dependencies": { - "System.Private.Uri": "[4.0.1-beta-23310, )" + "System.Private.Uri": "[4.0.1-beta-23321, )" }, "compile": { "ref/dotnet/System.Runtime.dll": {} @@ -1062,18 +1223,15 @@ "lib/DNXCore50/System.Runtime.dll": {} } }, - "System.Runtime.Extensions/4.0.11-beta-23310": { + "System.Runtime.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.20, )" }, "compile": { "ref/dotnet/System.Runtime.Extensions.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Runtime.Extensions.dll": {} } }, - "System.Runtime.Handles/4.0.1-beta-23310": { + "System.Runtime.Handles/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1084,7 +1242,7 @@ "lib/DNXCore50/System.Runtime.Handles.dll": {} } }, - "System.Runtime.InteropServices/4.0.21-beta-23310": { + "System.Runtime.InteropServices/4.0.21-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Reflection.Primitives": "[4.0.0, )", @@ -1098,13 +1256,13 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, - "System.Security.Cryptography.Algorithms/4.0.0-beta-23310": { + "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.IO": "[4.0.10, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Security.Cryptography.Primitives": "[4.0.0-beta-23310, )", + "System.Security.Cryptography.Primitives": "[4.0.0-beta-23311, )", "System.Text.Encoding": "[4.0.0, )", "System.Text.Encoding.Extensions": "[4.0.0, )" }, @@ -1115,10 +1273,10 @@ "lib/DNXCore50/System.Security.Cryptography.Algorithms.dll": {} } }, - "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23310": { + "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.Runtime": "[4.0.0, )", - "System.Security.Cryptography.Algorithms": "[4.0.0-beta-23310, )" + "System.Security.Cryptography.Algorithms": "[4.0.0-beta-23311, )" }, "compile": { "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll": {} @@ -1127,7 +1285,7 @@ "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll": {} } }, - "System.Security.Cryptography.Primitives/4.0.0-beta-23310": { + "System.Security.Cryptography.Primitives/4.0.0-beta-23311": { "dependencies": { "System.Diagnostics.Debug": "[4.0.0, )", "System.Globalization": "[4.0.0, )", @@ -1155,7 +1313,7 @@ "lib/dotnet/System.Security.Principal.dll": {} } }, - "System.Text.Encoding/4.0.11-beta-23310": { + "System.Text.Encoding/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1166,7 +1324,7 @@ "lib/DNXCore50/System.Text.Encoding.dll": {} } }, - "System.Text.Encoding.Extensions/4.0.11-beta-23310": { + "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Text.Encoding": "[4.0.10, )" @@ -1178,58 +1336,45 @@ "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {} } }, - "System.Text.RegularExpressions/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/dotnet/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.0.11-beta-23310": { + "System.Threading/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Threading.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Threading.dll": {} } }, - "System.Threading.Overlapped/4.0.0": { + "System.Threading.Tasks/4.0.11-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )", - "System.Runtime.Handles": "[4.0.0, )" + "System.Runtime": "[4.0.0, )" }, "compile": { - "ref/dotnet/System.Threading.Overlapped.dll": {} + "ref/dotnet/System.Threading.Tasks.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Overlapped.dll": {} + "lib/DNXCore50/System.Threading.Tasks.dll": {} } }, - "System.Threading.Tasks/4.0.11-beta-23310": { + "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )" + "System.Collections.Concurrent": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Threading.Tasks.dll": {} + "ref/dotnet/System.Threading.Tasks.Parallel.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Tasks.dll": {} + "lib/dotnet/System.Threading.Tasks.Parallel.dll": {} } }, - "System.Threading.Thread/4.0.0-beta-23310": { + "System.Threading.Thread/4.0.0-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1240,7 +1385,7 @@ "lib/DNXCore50/System.Threading.Thread.dll": {} } }, - "System.Threading.ThreadPool/4.0.10-beta-23310": { + "System.Threading.ThreadPool/4.0.10-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Runtime.InteropServices": "[4.0.0, )" @@ -1252,7 +1397,7 @@ "lib/DNXCore50/System.Threading.ThreadPool.dll": {} } }, - "System.Threading.Timer/4.0.1-beta-23310": { + "System.Threading.Timer/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1262,142 +1407,362 @@ "runtime": { "lib/DNXCore50/System.Threading.Timer.dll": {} } + } + }, + "DNXCore,Version=v5.0/win7-x64": { + "Microsoft.DiaSymReader.Native/1.1.0-alpha2": { + "native": { + "runtimes/win/native/Microsoft.DiaSymReader.Native.amd64.dll": {}, + "runtimes/win/native/Microsoft.DiaSymReader.Native.x86.dll": {} + } + }, + "Microsoft.NETCore.Platforms/1.0.1-beta-23321": {}, + "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "dependencies": { + "Microsoft.NETCore.Windows.ApiSets": "[1.0.1-beta-23321, )", + "System.Collections": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Diagnostics.Contracts": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Debug": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Diagnostics.StackTrace": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Tools": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Tracing": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Globalization": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Globalization.Calendars": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.IO": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.ObjectModel": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Private.Uri": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Reflection": "[4.1.0-beta-23321, 4.1.0-beta-23321]", + "System.Reflection.Extensions": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Reflection.Primitives": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Resources.ResourceManager": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Runtime": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Runtime.Extensions": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Runtime.Handles": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Runtime.InteropServices": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Text.Encoding": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Text.Encoding.Extensions": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading.Tasks": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading.Timer": "[4.0.1-beta-23321, 4.0.1-beta-23321]" + } + }, + "Microsoft.NETCore.TestHost-x64/1.0.0-beta-23213": { + "native": { + "runtimes/win7-x64/native/CoreRun.exe": {} + } }, - "System.Xml.ReaderWriter/4.0.10": { + "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23321": {}, + "Microsoft.Win32.Primitives/4.0.0": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.IO.FileSystem": "[4.0.0, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Text.RegularExpressions": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Runtime.InteropServices": "[4.0.20, )" }, "compile": { - "ref/dotnet/System.Xml.ReaderWriter.dll": {} + "ref/dotnet/Microsoft.Win32.Primitives.dll": {} }, "runtime": { - "lib/dotnet/System.Xml.ReaderWriter.dll": {} + "lib/dotnet/Microsoft.Win32.Primitives.dll": {} } }, - "System.Xml.XDocument/4.0.11-beta-23310": { + "Microsoft.Win32.Registry/4.0.0-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tools": "[4.0.0, )", "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.Reflection": "[4.0.10, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )" + }, + "compile": { + "ref/dotnet/Microsoft.Win32.Registry.dll": {} + }, + "runtime": { + "lib/DNXCore50/Microsoft.Win32.Registry.dll": {} + } + }, + "runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/win7-x64/lib/dotnet/mscorlib.ni.dll": {} + }, + "native": { + "runtimes/win7-x64/native/clretwrc.dll": {}, + "runtimes/win7-x64/native/coreclr.dll": {}, + "runtimes/win7-x64/native/dbgshim.dll": {}, + "runtimes/win7-x64/native/mscordaccore.dll": {}, + "runtimes/win7-x64/native/mscordbi.dll": {}, + "runtimes/win7-x64/native/mscorrc.debug.dll": {}, + "runtimes/win7-x64/native/mscorrc.dll": {} + } + }, + "runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23321": { + "native": { + "runtimes/win7-x64/native/API-MS-Win-Base-Util-L1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-com-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-comm-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-com-private-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-console-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-console-l2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-datetime-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-datetime-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-debug-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-debug-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-delayload-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-errorhandling-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-errorhandling-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-fibers-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-fibers-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-file-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-file-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-file-l1-2-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-file-l2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-file-l2-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-handle-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-heap-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-heap-obsolete-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-interlocked-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-io-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-io-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-1.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-libraryloader-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-libraryloader-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-localization-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-localization-l1-2-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-localization-l2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-localization-obsolete-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-2.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-3.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-namedpipe-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-namedpipe-l1-2-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-normalization-l1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-PrivateProfile-L1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-privateprofile-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-processenvironment-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-processenvironment-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-processsecurity-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-2.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-ProcessTopology-Obsolete-L1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-profile-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-psapi-ansi-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-psapi-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-psapi-obsolete-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-realtime-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-registry-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-registry-l2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-rtlsupport-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-shlwapi-legacy-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-shlwapi-obsolete-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-shutdown-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-shutdown-l1-1-1.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-StringAnsi-L1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-string-l1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-String-L2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-stringloader-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-stringloader-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-string-obsolete-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-string-obsolete-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-synch-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-synch-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-2.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-3.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-threadpool-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-threadpool-legacy-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-threadpool-private-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-timezone-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-url-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-util-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-version-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-error-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-error-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-registration-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-robuffer-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-string-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-wow64-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-xstate-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-xstate-l2-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-devices-config-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-devices-config-L1-1-1.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Eventing-ClassicProvider-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Eventing-Consumer-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Eventing-Controller-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Eventing-Legacy-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Eventing-Provider-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-EventLog-Legacy-L1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-ro-typeresolution-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-base-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-cpwl-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-cryptoapi-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-lsalookup-l2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-lsalookup-l2-1-1.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Security-LsaPolicy-L1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-provider-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-sddl-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-core-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-core-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-management-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-management-l2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-private-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-private-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-winsvc-l1-1-0.dll": {}, + "runtimes/win7-x64/native/ext-ms-win-advapi32-encryptedfile-l1-1-0.dll": {} + } + }, + "runtime.win7.System.Console/4.0.0-beta-23321": { + "dependencies": { + "System.IO": "[4.0.10, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.InteropServices": "[4.0.20, )", "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", "System.Threading": "[4.0.10, )", - "System.Xml.ReaderWriter": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/win7/lib/dotnet/System.Console.dll": {} + } + }, + "runtime.win7.System.Diagnostics.Debug/4.0.11-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/win7/lib/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "runtime.win7.System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "dependencies": { + "System.Globalization": "[4.0.10, )", + "System.IO.FileSystem": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.InteropServices": "[4.0.20, )" }, "compile": { - "ref/dotnet/System.Xml.XDocument.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/System.Xml.XDocument.dll": {} + "runtimes/win7/lib/dotnet/System.Diagnostics.FileVersionInfo.dll": {} } }, - "System.Xml.XmlDocument/4.0.1-beta-23310": { + "runtime.win7.System.Diagnostics.Process/4.1.0-beta-23321": { "dependencies": { + "Microsoft.Win32.Primitives": "[4.0.0, )", + "Microsoft.Win32.Registry": "[4.0.0-beta-23321, )", "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", "System.Globalization": "[4.0.10, )", "System.IO": "[4.0.10, )", + "System.IO.FileSystem": "[4.0.0, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )", "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", "System.Threading": "[4.0.10, )", - "System.Xml.ReaderWriter": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.10, )", + "System.Threading.Thread": "[4.0.0-beta-23321, )", + "System.Threading.ThreadPool": "[4.0.10-beta-23321, )" }, "compile": { - "ref/dotnet/System.Xml.XmlDocument.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/System.Xml.XmlDocument.dll": {} - } - } - }, - "DNXCore,Version=v5.0/win-x64": { - "Microsoft.DiaSymReader.Native/1.1.0-alpha2": { - "native": { - "runtimes/win/native/Microsoft.DiaSymReader.Native.amd64.dll": {}, - "runtimes/win/native/Microsoft.DiaSymReader.Native.x86.dll": {} + "runtimes/win7/lib/dotnet/System.Diagnostics.Process.dll": {} } }, - "Microsoft.NETCore.Platforms/1.0.0": {}, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23310": { - "dependencies": { - "Microsoft.NETCore.Windows.ApiSets": "[1.0.1-beta-23310, )", - "System.Collections": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Diagnostics.Contracts": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Debug": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Diagnostics.StackTrace": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Tools": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Tracing": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Globalization": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Globalization.Calendars": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.IO": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.ObjectModel": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Private.Uri": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Reflection": "[4.1.0-beta-23310, 4.1.0-beta-23310]", - "System.Reflection.Extensions": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Reflection.Primitives": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Resources.ResourceManager": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Runtime": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Runtime.Extensions": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Runtime.Handles": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Runtime.InteropServices": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Text.Encoding": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Text.Encoding.Extensions": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading.Tasks": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading.Timer": "[4.0.1-beta-23310, 4.0.1-beta-23310]" - } - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23310": {}, - "Microsoft.Win32.Primitives/4.0.0": { + "runtime.win7.System.IO.FileSystem/4.0.1-beta-23321": { "dependencies": { + "System.Collections": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", - "System.Runtime.InteropServices": "[4.0.20, )" + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Overlapped": "[4.0.0, )", + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/Microsoft.Win32.Primitives.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/Microsoft.Win32.Primitives.dll": {} + "runtimes/win7/lib/dotnet/System.IO.FileSystem.dll": {} } }, - "Microsoft.Win32.Registry/4.0.0-beta-23310": { + "runtime.win7.System.IO.Pipes/4.0.0-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )" + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Security.Principal": "[4.0.0, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Overlapped": "[4.0.0, )", + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/Microsoft.Win32.Registry.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/DNXCore50/Microsoft.Win32.Registry.dll": {} + "runtimes/win7/lib/dotnet/System.IO.Pipes.dll": {} } }, - "System.AppContext/4.0.1-beta-23310": { + "runtime.win7.System.Private.Uri/4.0.1-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/win7/lib/dotnet/System.Private.Uri.dll": {} + } + }, + "runtime.win7.System.Runtime.Extensions/4.0.11-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Extensions.dll": {} + } + }, + "runtime.win7.System.Threading/4.0.11-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/win7/lib/dotnet/System.Threading.dll": {} + } + }, + "System.AppContext/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1408,9 +1773,9 @@ "lib/DNXCore50/System.AppContext.dll": {} } }, - "System.Collections/4.0.11-beta-23310": { + "System.Collections/4.0.11-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.21-beta-23310, )" + "System.Runtime": "[4.0.21-beta-23321, )" }, "compile": { "ref/dotnet/System.Collections.dll": {} @@ -1419,6 +1784,25 @@ "lib/DNXCore50/System.Collections.dll": {} } }, + "System.Collections.Concurrent/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Globalization": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Collections.Concurrent.dll": {} + }, + "runtime": { + "lib/dotnet/System.Collections.Concurrent.dll": {} + } + }, "System.Collections.Immutable/1.1.36": { "compile": { "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} @@ -1427,26 +1811,16 @@ "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} } }, - "System.Console/4.0.0-beta-23302": { + "System.Console/4.0.0-beta-23321": { "dependencies": { - "System.IO": "[4.0.10, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Console.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Console.dll": {} } }, - "System.Diagnostics.Contracts/4.0.1-beta-23310": { + "System.Diagnostics.Contracts/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1457,47 +1831,34 @@ "lib/DNXCore50/System.Diagnostics.Contracts.dll": {} } }, - "System.Diagnostics.Debug/4.0.11-beta-23310": { + "System.Diagnostics.Debug/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )" }, - "runtime": { - "lib/DNXCore50/System.Diagnostics.Debug.dll": {} + "compile": { + "ref/dotnet/System.Diagnostics.FileVersionInfo.dll": {} } }, - "System.Diagnostics.Process/4.1.0-beta-23310": { + "System.Diagnostics.Process/4.1.0-beta-23321": { "dependencies": { - "Microsoft.Win32.Primitives": "[4.0.0, )", - "Microsoft.Win32.Registry": "[4.0.0-beta-23310, )", - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.IO.FileSystem": "[4.0.0, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )", - "System.Threading.Thread": "[4.0.0-beta-23310, )", - "System.Threading.ThreadPool": "[4.0.10-beta-23310, )" + "System.Text.Encoding": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Diagnostics.Process.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Diagnostics.Process.dll": {} } }, - "System.Diagnostics.StackTrace/4.0.1-beta-23310": { + "System.Diagnostics.StackTrace/4.0.1-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -1509,7 +1870,7 @@ "lib/DNXCore50/System.Diagnostics.StackTrace.dll": {} } }, - "System.Diagnostics.Tools/4.0.1-beta-23310": { + "System.Diagnostics.Tools/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1520,7 +1881,7 @@ "lib/DNXCore50/System.Diagnostics.Tools.dll": {} } }, - "System.Diagnostics.Tracing/4.0.21-beta-23310": { + "System.Diagnostics.Tracing/4.0.21-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1531,7 +1892,32 @@ "lib/DNXCore50/System.Diagnostics.Tracing.dll": {} } }, - "System.Globalization/4.0.11-beta-23310": { + "System.Dynamic.Runtime/4.0.11-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Linq.Expressions": "[4.0.10, )", + "System.ObjectModel": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Emit": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Dynamic.Runtime.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Dynamic.Runtime.dll": {} + } + }, + "System.Globalization/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1542,7 +1928,7 @@ "lib/DNXCore50/System.Globalization.dll": {} } }, - "System.Globalization.Calendars/4.0.1-beta-23310": { + "System.Globalization.Calendars/4.0.1-beta-23321": { "dependencies": { "System.Globalization": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -1554,7 +1940,7 @@ "lib/DNXCore50/System.Globalization.Calendars.dll": {} } }, - "System.IO/4.0.11-beta-23310": { + "System.IO/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.20, )", "System.Text.Encoding": "[4.0.0, )", @@ -1567,30 +1953,20 @@ "lib/DNXCore50/System.IO.dll": {} } }, - "System.IO.FileSystem/4.0.1-beta-23302": { + "System.IO.FileSystem/4.0.1-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.IO": "[4.0.10, )", + "System.IO": "[4.0.0, )", "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Overlapped": "[4.0.0, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Text.Encoding": "[4.0.0, )", + "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.IO.FileSystem.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.IO.FileSystem.dll": {} } }, - "System.IO.FileSystem.Primitives/4.0.1-beta-23310": { + "System.IO.FileSystem.Primitives/4.0.0": { "dependencies": { "System.Runtime": "[4.0.20, )" }, @@ -1601,28 +1977,19 @@ "lib/dotnet/System.IO.FileSystem.Primitives.dll": {} } }, - "System.IO.Pipes/4.0.0-beta-23310": { + "System.IO.Pipes/4.0.0-beta-23321": { "dependencies": { - "System.IO": "[4.0.10, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", "System.Security.Principal": "[4.0.0, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Overlapped": "[4.0.0, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.IO.Pipes.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.IO.Pipes.dll": {} } }, - "System.Linq/4.0.1-beta-23310": { + "System.Linq/4.0.1-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", @@ -1637,7 +2004,32 @@ "lib/dotnet/System.Linq.dll": {} } }, - "System.ObjectModel/4.0.11-beta-23310": { + "System.Linq.Expressions/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.0, )", + "System.Diagnostics.Debug": "[4.0.0, )", + "System.Globalization": "[4.0.0, )", + "System.IO": "[4.0.0, )", + "System.Linq": "[4.0.0, )", + "System.ObjectModel": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit": "[4.0.0, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.0, )", + "System.Threading": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Linq.Expressions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Linq.Expressions.dll": {} + } + }, + "System.ObjectModel/4.0.11-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", @@ -1652,15 +2044,12 @@ "lib/dotnet/System.ObjectModel.dll": {} } }, - "System.Private.Uri/4.0.1-beta-23310": { + "System.Private.Uri/4.0.1-beta-23321": { "compile": { "ref/dnxcore50/_._": {} - }, - "runtime": { - "lib/DNXCore50/System.Private.Uri.dll": {} } }, - "System.Reflection/4.1.0-beta-23310": { + "System.Reflection/4.1.0-beta-23321": { "dependencies": { "System.IO": "[4.0.0, )", "System.Reflection.Primitives": "[4.0.0, )", @@ -1673,7 +2062,49 @@ "lib/DNXCore50/System.Reflection.dll": {} } }, - "System.Reflection.Extensions/4.0.1-beta-23310": { + "System.Reflection.Emit/4.0.0": { + "dependencies": { + "System.IO": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.dll": {} + } + }, + "System.Reflection.Emit.ILGeneration/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.ILGeneration.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.ILGeneration.dll": {} + } + }, + "System.Reflection.Emit.Lightweight/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.Lightweight.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.Lightweight.dll": {} + } + }, + "System.Reflection.Extensions/4.0.1-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -1696,7 +2127,7 @@ "lib/portable-net45+win8/System.Reflection.Metadata.dll": {} } }, - "System.Reflection.Primitives/4.0.1-beta-23310": { + "System.Reflection.Primitives/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1707,7 +2138,19 @@ "lib/DNXCore50/System.Reflection.Primitives.dll": {} } }, - "System.Resources.ResourceManager/4.0.1-beta-23310": { + "System.Reflection.TypeExtensions/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.TypeExtensions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.TypeExtensions.dll": {} + } + }, + "System.Resources.ResourceManager/4.0.1-beta-23321": { "dependencies": { "System.Globalization": "[4.0.0, )", "System.Reflection": "[4.0.0, )", @@ -1720,9 +2163,9 @@ "lib/DNXCore50/System.Resources.ResourceManager.dll": {} } }, - "System.Runtime/4.0.21-beta-23310": { + "System.Runtime/4.0.21-beta-23321": { "dependencies": { - "System.Private.Uri": "[4.0.1-beta-23310, )" + "System.Private.Uri": "[4.0.1-beta-23321, )" }, "compile": { "ref/dotnet/System.Runtime.dll": {} @@ -1731,18 +2174,15 @@ "lib/DNXCore50/System.Runtime.dll": {} } }, - "System.Runtime.Extensions/4.0.11-beta-23310": { + "System.Runtime.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.20, )" }, "compile": { "ref/dotnet/System.Runtime.Extensions.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Runtime.Extensions.dll": {} } }, - "System.Runtime.Handles/4.0.1-beta-23310": { + "System.Runtime.Handles/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1753,7 +2193,7 @@ "lib/DNXCore50/System.Runtime.Handles.dll": {} } }, - "System.Runtime.InteropServices/4.0.21-beta-23310": { + "System.Runtime.InteropServices/4.0.21-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Reflection.Primitives": "[4.0.0, )", @@ -1767,13 +2207,13 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, - "System.Security.Cryptography.Algorithms/4.0.0-beta-23310": { + "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.IO": "[4.0.10, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Security.Cryptography.Primitives": "[4.0.0-beta-23310, )", + "System.Security.Cryptography.Primitives": "[4.0.0-beta-23311, )", "System.Text.Encoding": "[4.0.0, )", "System.Text.Encoding.Extensions": "[4.0.0, )" }, @@ -1784,10 +2224,10 @@ "lib/DNXCore50/System.Security.Cryptography.Algorithms.dll": {} } }, - "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23310": { + "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.Runtime": "[4.0.0, )", - "System.Security.Cryptography.Algorithms": "[4.0.0-beta-23310, )" + "System.Security.Cryptography.Algorithms": "[4.0.0-beta-23311, )" }, "compile": { "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll": {} @@ -1796,7 +2236,7 @@ "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll": {} } }, - "System.Security.Cryptography.Primitives/4.0.0-beta-23310": { + "System.Security.Cryptography.Primitives/4.0.0-beta-23311": { "dependencies": { "System.Diagnostics.Debug": "[4.0.0, )", "System.Globalization": "[4.0.0, )", @@ -1824,7 +2264,7 @@ "lib/dotnet/System.Security.Principal.dll": {} } }, - "System.Text.Encoding/4.0.11-beta-23310": { + "System.Text.Encoding/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1835,7 +2275,7 @@ "lib/DNXCore50/System.Text.Encoding.dll": {} } }, - "System.Text.Encoding.Extensions/4.0.11-beta-23310": { + "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Text.Encoding": "[4.0.10, )" @@ -1847,32 +2287,13 @@ "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {} } }, - "System.Text.RegularExpressions/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/dotnet/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.0.11-beta-23310": { + "System.Threading/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Threading.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Threading.dll": {} } }, "System.Threading.Overlapped/4.0.0": { @@ -1887,7 +2308,7 @@ "lib/DNXCore50/System.Threading.Overlapped.dll": {} } }, - "System.Threading.Tasks/4.0.11-beta-23310": { + "System.Threading.Tasks/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1898,7 +2319,25 @@ "lib/DNXCore50/System.Threading.Tasks.dll": {} } }, - "System.Threading.Thread/4.0.0-beta-23310": { + "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { + "dependencies": { + "System.Collections.Concurrent": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Threading.Tasks.Parallel.dll": {} + }, + "runtime": { + "lib/dotnet/System.Threading.Tasks.Parallel.dll": {} + } + }, + "System.Threading.Thread/4.0.0-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1909,7 +2348,7 @@ "lib/DNXCore50/System.Threading.Thread.dll": {} } }, - "System.Threading.ThreadPool/4.0.10-beta-23310": { + "System.Threading.ThreadPool/4.0.10-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Runtime.InteropServices": "[4.0.0, )" @@ -1921,7 +2360,7 @@ "lib/DNXCore50/System.Threading.ThreadPool.dll": {} } }, - "System.Threading.Timer/4.0.1-beta-23310": { + "System.Threading.Timer/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1931,72 +2370,6 @@ "runtime": { "lib/DNXCore50/System.Threading.Timer.dll": {} } - }, - "System.Xml.ReaderWriter/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.IO.FileSystem": "[4.0.0, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Text.RegularExpressions": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Xml.ReaderWriter.dll": {} - }, - "runtime": { - "lib/dotnet/System.Xml.ReaderWriter.dll": {} - } - }, - "System.Xml.XDocument/4.0.11-beta-23310": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tools": "[4.0.0, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.Reflection": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Xml.ReaderWriter": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Xml.XDocument.dll": {} - }, - "runtime": { - "lib/dotnet/System.Xml.XDocument.dll": {} - } - }, - "System.Xml.XmlDocument/4.0.1-beta-23310": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Xml.ReaderWriter": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Xml.XmlDocument.dll": {} - }, - "runtime": { - "lib/dotnet/System.Xml.XmlDocument.dll": {} - } } } }, @@ -2007,166 +2380,778 @@ "files": [ "[Content_Types].xml", "_rels/.rels", - "Microsoft.DiaSymReader.Native.nuspec", - "package/services/metadata/core-properties/e2e1c0f9faac4ddb951a90d33184740b.psmdcp", - "runtimes/win/native/Microsoft.DiaSymReader.Native.amd64.dll", - "runtimes/win/native/Microsoft.DiaSymReader.Native.x86.dll" + "Microsoft.DiaSymReader.Native.nuspec", + "package/services/metadata/core-properties/e2e1c0f9faac4ddb951a90d33184740b.psmdcp", + "runtimes/win/native/Microsoft.DiaSymReader.Native.amd64.dll", + "runtimes/win/native/Microsoft.DiaSymReader.Native.x86.dll" + ] + }, + "Microsoft.NETCore.Platforms/1.0.1-beta-23321": { + "sha512": "lKmkPSHwJJofKodv616I5e9B3IjapVIZd1F/XAMWnNAaRSc8PMBvVwnQ2fTgH9xIFnXoTAYLjoTrynF/1RoxkA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "Microsoft.NETCore.Platforms.nuspec", + "package/services/metadata/core-properties/a896c08c81124cdab52a9d4c4c8ae1d9.psmdcp", + "runtime.json" + ] + }, + "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "sha512": "zKcosHNyizG5bd6etmmGl7TPQ1JZ7+NCULxAmXacspM/+cJiQorNNuAiaJf8nEbLhdq36OhLrgRzhzlx576yrQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "Microsoft.NETCore.Runtime.CoreCLR.nuspec", + "package/services/metadata/core-properties/00010a5e797f475fab17d46bb28d34fa.psmdcp", + "runtime.json" + ] + }, + "Microsoft.NETCore.TestHost-x64/1.0.0-beta-23213": { + "sha512": "9ewco27jElurDDETH+6SltNecKAJE+ZVzMVNCvb0Ju0gkJEm7B+dOqIvSgtOymHtpyfkko/hwm+PHXjP1CLkCg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "Microsoft.NETCore.TestHost-x64.nuspec", + "package/services/metadata/core-properties/dd955bfbc91347b4a3ef1ab48f8d4700.psmdcp", + "runtimes/win7-x64/native/CoreRun.exe" + ] + }, + "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23321": { + "sha512": "KAkWVwJ1cIzjw8ZLVxxVDUz/EYxoNNrYRYLD6JhFOkP5B8e+/AcKP2t8ainf2792ifWCy/Wv7w4G9YG1HkDcvA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "Microsoft.NETCore.Windows.ApiSets.nuspec", + "package/services/metadata/core-properties/a44f497e174744bd87ee88a376ab34cf.psmdcp", + "runtime.json" + ] + }, + "Microsoft.Win32.Primitives/4.0.0": { + "sha512": "CypEz9/lLOup8CEhiAmvr7aLs1zKPYyEU1sxQeEr6G0Ci8/F0Y6pYR1zzkROjM8j8Mq0typmbu676oYyvErQvg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/Microsoft.Win32.Primitives.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/Microsoft.Win32.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "Microsoft.Win32.Primitives.nuspec", + "package/services/metadata/core-properties/1d4eb9d0228b48b88d2df3822fba2d86.psmdcp", + "ref/dotnet/de/Microsoft.Win32.Primitives.xml", + "ref/dotnet/es/Microsoft.Win32.Primitives.xml", + "ref/dotnet/fr/Microsoft.Win32.Primitives.xml", + "ref/dotnet/it/Microsoft.Win32.Primitives.xml", + "ref/dotnet/ja/Microsoft.Win32.Primitives.xml", + "ref/dotnet/ko/Microsoft.Win32.Primitives.xml", + "ref/dotnet/Microsoft.Win32.Primitives.dll", + "ref/dotnet/Microsoft.Win32.Primitives.xml", + "ref/dotnet/ru/Microsoft.Win32.Primitives.xml", + "ref/dotnet/zh-hans/Microsoft.Win32.Primitives.xml", + "ref/dotnet/zh-hant/Microsoft.Win32.Primitives.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/Microsoft.Win32.Primitives.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._" + ] + }, + "Microsoft.Win32.Registry/4.0.0-beta-23321": { + "sha512": "CgQojFhkkhN/v3W3/kqre1KHc8oq3/7CgZ6GkMaCC/AVRq8Me0N+PKFXNz4L9c/QDL2cGoOnmPejLPXVvTEfmA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/de/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/es/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/fr/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/it/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/ja/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/ko/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/Microsoft.Win32.Registry.dll", + "lib/DNXCore50/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/ru/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/zh-hans/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/zh-hant/Microsoft.Win32.Registry.xml", + "lib/net46/Microsoft.Win32.Registry.dll", + "Microsoft.Win32.Registry.nuspec", + "package/services/metadata/core-properties/c39bd9e439b441eaa21395fb60284134.psmdcp", + "ref/dotnet/Microsoft.Win32.Registry.dll", + "ref/net46/Microsoft.Win32.Registry.dll" + ] + }, + "runtime.linux.System.Diagnostics.Process/4.1.0-beta-23321": { + "sha512": "aEXE8aYQVKUug4zOJacWl2PC6q6cKrS23zJAr1aeXeWPt8g8ndoPx+tlIHdBW6IItLjVGo5kuO3EIF3ksLrP4A==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Diagnostics.Process.dll", + "package/services/metadata/core-properties/06b44f6775674cc082eb395669104637.psmdcp", + "ref/dotnet/_._", + "runtime.linux.System.Diagnostics.Process.nuspec" + ] + }, + "runtime.linux.System.IO.FileSystem/4.0.1-beta-23321": { + "sha512": "CqYBb5voBHI1cJqj9REHvHaBCbXzmPZ2Ar1QvuYjBiNt+OxUHqKvTDstj/L+Oz4jozhbxNY5cgJ19TmhVdDckg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/a58ac09a8468422cb7ae02c78383a133.psmdcp", + "ref/dotnet/_._", + "runtime.linux.System.IO.FileSystem.nuspec", + "runtimes/linux/lib/dotnet/System.IO.FileSystem.dll" + ] + }, + "runtime.linux.System.Runtime.Extensions/4.0.11-beta-23321": { + "sha512": "FBpCttqvczJDMN36u3gYAtbBxUGPdIQ8IdRJYI/M4syPFgvG+wJPcMSNMKkTzeCynhPlBERvX+PkO6c5RncPtg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Runtime.Extensions.dll", + "package/services/metadata/core-properties/f69a35a4730b4622940e9ce65e22cb15.psmdcp", + "ref/dotnet/_._", + "runtime.linux.System.Runtime.Extensions.nuspec" + ] + }, + "runtime.ubuntu.14.04-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "sha512": "utiFbeU7toM0VRG4D6A5qPM7gfeHHdSPeMhKRamOQu3R/T471TsyXqNPZkje8/W/gJMTVLmbQHtmWmVj/kJSxQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/1814a50aaaae4fe8b715f56bc36719fd.psmdcp", + "ref/dotnet/_._", + "runtime.ubuntu.14.04-x64.Microsoft.NETCore.Runtime.CoreCLR.nuspec", + "runtimes/ubuntu.14.04-x64/lib/dotnet/mscorlib.dll", + "runtimes/ubuntu.14.04-x64/native/libcoreclr.so", + "runtimes/ubuntu.14.04-x64/native/libdbgshim.so", + "runtimes/ubuntu.14.04-x64/native/libmscordaccore.so", + "runtimes/ubuntu.14.04-x64/native/libmscordbi.so", + "runtimes/ubuntu.14.04-x64/native/libsos.so", + "runtimes/ubuntu.14.04-x64/native/libsosplugin.so", + "runtimes/ubuntu.14.04-x64/native/System.Native.so", + "runtimes/ubuntu.14.04-x64/native/System.Net.Http.Native.so", + "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.so" + ] + }, + "runtime.unix.System.Console/4.0.0-beta-23321": { + "sha512": "TUJgivTxXatDZ9tnF34ABKJkechD4W0n+JWdTHukMyCX2n8RRZiMh0gC3Vb7TniiBpx/GLr/l1vK05PtxAZ05Q==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Console.dll", + "package/services/metadata/core-properties/4632c1dc3d9f4f46a5f7939edd1f7623.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.Console.nuspec" + ] + }, + "runtime.unix.System.Diagnostics.Debug/4.0.11-beta-23321": { + "sha512": "vjTPBgCbNSSiffP2RoLaCMmnT884Cs0D6depxOounJ0c6ZQlYzVf8T3+bVTuyQgWMfcV7kPlKjQT9cZHb26NKA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Diagnostics.Debug.dll", + "package/services/metadata/core-properties/af09835e71cb460faa6852fc97e3abe5.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.Diagnostics.Debug.nuspec" + ] + }, + "runtime.unix.System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "sha512": "brH89dbxg7LhqNaP4xTIGmrB7mGAmrjQWeXaX4h4Zb4/qcd5ucJYem+0Grrd1cGxF4djyn8iaAL2zcxxzoWFJw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Diagnostics.FileVersionInfo.dll", + "package/services/metadata/core-properties/d8e107b846a0445d8d90c9227858737e.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.Diagnostics.FileVersionInfo.nuspec" + ] + }, + "runtime.unix.System.IO.Pipes/4.0.0-beta-23321": { + "sha512": "6YWi8a3vxEvB3aShy8oBS1r3rX+T3dKeoK5pSgJD3dLgjAcghqPFAVUxjPfkFS3OAdODfjwqinzylTx5yL3/KQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.IO.Pipes.dll", + "package/services/metadata/core-properties/e8d7e18b3f994a43a4479e27ad668cbf.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.IO.Pipes.nuspec" + ] + }, + "runtime.unix.System.Private.Uri/4.0.1-beta-23321": { + "sha512": "TsR8+getuxEne+tsMJEIUlkG4NpY5zsegUla+1o9BRyxcz6nFCZtuuj777rdGnDBMDaRphixfhDJgHRhFZvnLw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Private.Uri.dll", + "package/services/metadata/core-properties/52f0a42066af4157bac8d4eaf35dbecd.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.Private.Uri.nuspec" + ] + }, + "runtime.unix.System.Threading/4.0.11-beta-23321": { + "sha512": "QlIzt08mk+SpmK8PuZJA+H0UfgAurvw5vRcAQImrVxKezS+ILuQ3YTkwQ/Q79koGHfgeFjWMdjYCSGY2KrfVDQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Threading.dll", + "package/services/metadata/core-properties/f9f7805c8f264906b426357403f30393.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.Threading.nuspec" + ] + }, + "runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "sha512": "Pk2hUQvi2iXY6pZtXI+U0YQqq3ojZaGrb0pBtYkcbRu9WgvzPmXTy0Ye2+h0v0THc1sQd4ySKR7IZomDK1yfGA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/09538cc4484247bf90cdf0b934cdc771.psmdcp", + "ref/dotnet/_._", + "runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR.nuspec", + "runtimes/win7-x64/lib/dotnet/mscorlib.ni.dll", + "runtimes/win7-x64/native/clretwrc.dll", + "runtimes/win7-x64/native/coreclr.dll", + "runtimes/win7-x64/native/dbgshim.dll", + "runtimes/win7-x64/native/mscordaccore.dll", + "runtimes/win7-x64/native/mscordbi.dll", + "runtimes/win7-x64/native/mscorrc.debug.dll", + "runtimes/win7-x64/native/mscorrc.dll", + "tools/crossgen.exe", + "tools/sos.dll" + ] + }, + "runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23321": { + "sha512": "A1/dGg9TpjOgGKkvS1nkaI68CKwiyUjzIKxZJBIhcCg9CZ/b1VoKmbTBYli+GpWd+ERzsX6soh1qi29k+Tfh8g==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/1927df1a54284e1e810bbe1163926010.psmdcp", + "runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets.nuspec", + "runtimes/win10-x64/native/_._", + "runtimes/win7-x64/native/API-MS-Win-Base-Util-L1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-com-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-comm-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-com-private-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-console-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-console-l2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-datetime-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-datetime-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-debug-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-debug-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-delayload-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-errorhandling-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-errorhandling-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-fibers-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-fibers-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-file-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-file-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-file-l1-2-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-file-l2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-file-l2-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-handle-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-heap-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-heap-obsolete-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-interlocked-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-io-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-io-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-1.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll", + "runtimes/win7-x64/native/api-ms-win-core-libraryloader-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-libraryloader-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-localization-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-localization-l1-2-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-localization-l2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-localization-obsolete-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-2.dll", + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-3.dll", + "runtimes/win7-x64/native/api-ms-win-core-namedpipe-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-namedpipe-l1-2-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-normalization-l1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-PrivateProfile-L1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-privateprofile-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-processenvironment-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-processenvironment-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-processsecurity-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-2.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-ProcessTopology-Obsolete-L1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-profile-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-psapi-ansi-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-psapi-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-psapi-obsolete-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-realtime-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-registry-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-registry-l2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-rtlsupport-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-shlwapi-legacy-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-shlwapi-obsolete-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-shutdown-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-shutdown-l1-1-1.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-StringAnsi-L1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-string-l1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-String-L2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-stringloader-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-stringloader-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-string-obsolete-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-string-obsolete-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-synch-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-synch-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-2.dll", + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-3.dll", + "runtimes/win7-x64/native/api-ms-win-core-threadpool-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-threadpool-legacy-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-threadpool-private-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-timezone-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-url-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-util-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-version-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-error-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-error-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-registration-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-robuffer-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-string-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-wow64-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-xstate-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-xstate-l2-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-devices-config-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-devices-config-L1-1-1.dll", + "runtimes/win7-x64/native/API-MS-Win-Eventing-ClassicProvider-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Eventing-Consumer-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Eventing-Controller-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Eventing-Legacy-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Eventing-Provider-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-EventLog-Legacy-L1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-ro-typeresolution-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-base-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-cpwl-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-cryptoapi-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-lsalookup-l2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-lsalookup-l2-1-1.dll", + "runtimes/win7-x64/native/API-MS-Win-Security-LsaPolicy-L1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-provider-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-sddl-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-service-core-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-service-core-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-service-management-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-service-management-l2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-service-private-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-service-private-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-service-winsvc-l1-1-0.dll", + "runtimes/win7-x64/native/ext-ms-win-advapi32-encryptedfile-l1-1-0.dll", + "runtimes/win81-x64/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll", + "runtimes/win81-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll", + "runtimes/win81-x64/native/api-ms-win-core-memory-l1-1-3.dll", + "runtimes/win81-x64/native/api-ms-win-core-namedpipe-l1-2-1.dll", + "runtimes/win81-x64/native/api-ms-win-core-string-obsolete-l1-1-1.dll", + "runtimes/win81-x64/native/api-ms-win-core-sysinfo-l1-2-2.dll", + "runtimes/win81-x64/native/api-ms-win-core-sysinfo-l1-2-3.dll", + "runtimes/win81-x64/native/api-ms-win-security-cpwl-l1-1-0.dll", + "runtimes/win8-x64/native/api-ms-win-core-file-l1-2-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-file-l2-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-kernel32-legacy-l1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll", + "runtimes/win8-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-1.dll", + "runtimes/win8-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll", + "runtimes/win8-x64/native/api-ms-win-core-localization-l1-2-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-localization-obsolete-l1-2-0.dll", + "runtimes/win8-x64/native/api-ms-win-core-memory-l1-1-2.dll", + "runtimes/win8-x64/native/api-ms-win-core-memory-l1-1-3.dll", + "runtimes/win8-x64/native/api-ms-win-core-namedpipe-l1-2-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-privateprofile-l1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-processthreads-l1-1-2.dll", + "runtimes/win8-x64/native/api-ms-win-core-shutdown-l1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-stringloader-l1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-string-obsolete-l1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-sysinfo-l1-2-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-sysinfo-l1-2-2.dll", + "runtimes/win8-x64/native/api-ms-win-core-sysinfo-l1-2-3.dll", + "runtimes/win8-x64/native/api-ms-win-core-winrt-error-l1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-xstate-l2-1-0.dll", + "runtimes/win8-x64/native/API-MS-Win-devices-config-L1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-security-cpwl-l1-1-0.dll", + "runtimes/win8-x64/native/api-ms-win-security-cryptoapi-l1-1-0.dll", + "runtimes/win8-x64/native/api-ms-win-security-lsalookup-l2-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-service-private-l1-1-1.dll" + ] + }, + "runtime.win7.System.Console/4.0.0-beta-23321": { + "sha512": "61kioyGlIDh/KZloIbeJETeH/c+kayHx3//siet6tBshxPJCmzK06co0jSIeTzPoVJ3rQ6eASExWBqk4A+K92w==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/e3528864aa2e41f29dd268b751116144.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Console.nuspec", + "runtimes/win7/lib/dotnet/de/System.Console.xml", + "runtimes/win7/lib/dotnet/es/System.Console.xml", + "runtimes/win7/lib/dotnet/fr/System.Console.xml", + "runtimes/win7/lib/dotnet/it/System.Console.xml", + "runtimes/win7/lib/dotnet/ja/System.Console.xml", + "runtimes/win7/lib/dotnet/ko/System.Console.xml", + "runtimes/win7/lib/dotnet/ru/System.Console.xml", + "runtimes/win7/lib/dotnet/System.Console.dll", + "runtimes/win7/lib/dotnet/System.Console.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.Console.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.Console.xml" ] }, - "Microsoft.NETCore.Platforms/1.0.0": { - "sha512": "0N77OwGZpXqUco2C/ynv1os7HqdFYifvNIbveLDKqL5PZaz05Rl9enCwVBjF61aumHKueLWIJ3prnmdAXxww4A==", + "runtime.win7.System.Diagnostics.Debug/4.0.11-beta-23321": { + "sha512": "6hIunPrq23p51PBBtGDeyK8/+bM0eycsM8l5UDr1uKTccHe/xeaO1Cy19m4CqJMaSp6nKmhZHw0O0OgUOPaUdw==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "Microsoft.NETCore.Platforms.nuspec", - "package/services/metadata/core-properties/36b51d4c6b524527902ff1a182a64e42.psmdcp", - "runtime.json" + "package/services/metadata/core-properties/f16c0f762ed84e2cbc7c7af7705153c8.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Diagnostics.Debug.nuspec", + "runtimes/win7/lib/dotnet/de/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/es/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/fr/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/it/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/ja/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/ko/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/ru/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/System.Diagnostics.Debug.dll", + "runtimes/win7/lib/dotnet/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.Diagnostics.Debug.xml" ] }, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23310": { - "sha512": "UvUYERagafTCQeSxiMLbt4SZSG0GoZSqcwZywbmns+1l1EYWlkBIn5Lpv1pDzlvkgdvU1F+Hc6HonQTRHyIaNA==", + "runtime.win7.System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "sha512": "yjiDgct3XkdLvpBiDjHQie3XPrwGthzAGoGPuHylWs+/Sw364dh5e/MpdcgGzlkVI/5sJ3tO2pFBrfIomMqQwA==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "Microsoft.NETCore.Runtime.CoreCLR.nuspec", - "package/services/metadata/core-properties/33d4717d37c24b8db0237f66ef8ca393.psmdcp", - "runtime.json" + "lib/win8/_._", + "lib/wp8/_._", + "lib/wpa81/_._", + "package/services/metadata/core-properties/757e18660fac492c91941935efb59ad2.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Diagnostics.FileVersionInfo.nuspec", + "runtimes/win7/lib/dotnet/de/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/es/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/fr/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/it/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/ja/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/ko/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/ru/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/System.Diagnostics.FileVersionInfo.dll", + "runtimes/win7/lib/dotnet/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.Diagnostics.FileVersionInfo.xml" ] }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23310": { - "sha512": "aI6g2QDn1lW8M9v/k5OZUSjV6tQov+3HSO77YmElp1+8R6RjcDcW5vteImtcxMBlIfeOxzWa7jPbxRPw1B4TKg==", + "runtime.win7.System.Diagnostics.Process/4.1.0-beta-23321": { + "sha512": "OgeiMQV9/NWtqIUpKYJA7GAFB4q4PJ65giL4RrsYiXS/kYxwbNU20g4wxFyCSTT2nhcGFdQf/pPZPS7RPzNGag==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "Microsoft.NETCore.Windows.ApiSets.nuspec", - "package/services/metadata/core-properties/06dc8416878b4213a926f8846bd4ee8d.psmdcp", - "runtime.json" + "lib/win8/_._", + "lib/wp8/_._", + "lib/wpa81/_._", + "package/services/metadata/core-properties/8c4fba688b414c778d3fdc1d0f5d1c25.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Diagnostics.Process.nuspec", + "runtimes/win7/lib/dotnet/de/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/es/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/fr/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/it/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/ja/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/ko/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/ru/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/System.Diagnostics.Process.dll", + "runtimes/win7/lib/dotnet/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.Diagnostics.Process.xml" ] }, - "Microsoft.Win32.Primitives/4.0.0": { - "sha512": "CypEz9/lLOup8CEhiAmvr7aLs1zKPYyEU1sxQeEr6G0Ci8/F0Y6pYR1zzkROjM8j8Mq0typmbu676oYyvErQvg==", + "runtime.win7.System.IO.FileSystem/4.0.1-beta-23321": { + "sha512": "v7sZCxZ1yir0t801C3CdX1niwiWeMJ9iBs5UL86pkAwSfXar2IXoI5IwJAUZ7xuSijP4py4dYuYHjSSWHbjSBg==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "lib/dotnet/Microsoft.Win32.Primitives.dll", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/Microsoft.Win32.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "Microsoft.Win32.Primitives.nuspec", - "package/services/metadata/core-properties/1d4eb9d0228b48b88d2df3822fba2d86.psmdcp", - "ref/dotnet/de/Microsoft.Win32.Primitives.xml", - "ref/dotnet/es/Microsoft.Win32.Primitives.xml", - "ref/dotnet/fr/Microsoft.Win32.Primitives.xml", - "ref/dotnet/it/Microsoft.Win32.Primitives.xml", - "ref/dotnet/ja/Microsoft.Win32.Primitives.xml", - "ref/dotnet/ko/Microsoft.Win32.Primitives.xml", - "ref/dotnet/Microsoft.Win32.Primitives.dll", - "ref/dotnet/Microsoft.Win32.Primitives.xml", - "ref/dotnet/ru/Microsoft.Win32.Primitives.xml", - "ref/dotnet/zh-hans/Microsoft.Win32.Primitives.xml", - "ref/dotnet/zh-hant/Microsoft.Win32.Primitives.xml", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/Microsoft.Win32.Primitives.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._" + "lib/net/_._", + "lib/win8/_._", + "lib/wp8/_._", + "lib/wpa81/_._", + "package/services/metadata/core-properties/5de37bc108fe403399721b60f192e2d3.psmdcp", + "ref/dotnet/_._", + "ref/netcore50/_._", + "runtime.win7.System.IO.FileSystem.nuspec", + "runtimes/win7/lib/dotnet/de/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/es/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/fr/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/it/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/ja/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/ko/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/ru/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/System.IO.FileSystem.dll", + "runtimes/win7/lib/dotnet/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/de/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/es/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/fr/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/it/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/ja/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/ko/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/ru/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/System.IO.FileSystem.dll", + "runtimes/win7/lib/netcore50/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/zh-hans/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/zh-hant/System.IO.FileSystem.xml" ] }, - "Microsoft.Win32.Registry/4.0.0-beta-23310": { - "sha512": "eCmWKKL+EWTUi58LhJYOZS3+VvdRlz+0p5Q9gjjI8k5BryWlvRNasAF3BEA2jR8l1Im7F7iHNAlcKjsJBGTe+w==", + "runtime.win7.System.IO.Pipes/4.0.0-beta-23321": { + "sha512": "+1eLipbqbm6CrEM7xPCdZLPRaSMgq/9+jeEPPIS3nwrWD62qWObqxGFPS8ZVdQjHeaq8rBn05BOUZf2o4R0qIw==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/Microsoft.Win32.Registry.xml", - "es/Microsoft.Win32.Registry.xml", - "fr/Microsoft.Win32.Registry.xml", - "it/Microsoft.Win32.Registry.xml", - "ja/Microsoft.Win32.Registry.xml", - "ko/Microsoft.Win32.Registry.xml", - "lib/DNXCore50/Microsoft.Win32.Registry.dll", - "lib/net46/Microsoft.Win32.Registry.dll", - "Microsoft.Win32.Registry.nuspec", - "Microsoft.Win32.Registry.xml", - "package/services/metadata/core-properties/5e92d30e46f54c73ab4afcd5bddae794.psmdcp", - "ref/dotnet/Microsoft.Win32.Registry.dll", - "ref/net46/Microsoft.Win32.Registry.dll", - "ru/Microsoft.Win32.Registry.xml", - "zh-hans/Microsoft.Win32.Registry.xml", - "zh-hant/Microsoft.Win32.Registry.xml" + "package/services/metadata/core-properties/c1d50fff21d04456a75242c130484e53.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.IO.Pipes.nuspec", + "runtimes/win7/lib/dotnet/de/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/es/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/fr/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/it/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/ja/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/ko/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/ru/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/System.IO.Pipes.dll", + "runtimes/win7/lib/dotnet/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.IO.Pipes.xml" + ] + }, + "runtime.win7.System.Private.Uri/4.0.1-beta-23321": { + "sha512": "WfIDK5opKq/WZLTWFrtv85nOP7pOB+w5pPUHGeD6IxKop1avsk00Le/yu3oU4YEhp3b88isVLvDC1CaEeg90Rg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/70f1c36b41174679b9a1462b84124f6f.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Private.Uri.nuspec", + "runtimes/win7/lib/dotnet/System.Private.Uri.dll" + ] + }, + "runtime.win7.System.Runtime.Extensions/4.0.11-beta-23321": { + "sha512": "jMQn6PkMslU56xyId0aeJ0u+GhRFd8KCensMIC1eIgLDNb4RviMVCcro3off7jSNGjn26/7jCBgzxlca9DT1og==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/de/System.Runtime.Extensions.xml", + "lib/DNXCore50/es/System.Runtime.Extensions.xml", + "lib/DNXCore50/fr/System.Runtime.Extensions.xml", + "lib/DNXCore50/it/System.Runtime.Extensions.xml", + "lib/DNXCore50/ja/System.Runtime.Extensions.xml", + "lib/DNXCore50/ko/System.Runtime.Extensions.xml", + "lib/DNXCore50/ru/System.Runtime.Extensions.xml", + "lib/DNXCore50/System.Runtime.Extensions.dll", + "lib/DNXCore50/System.Runtime.Extensions.xml", + "lib/DNXCore50/zh-hans/System.Runtime.Extensions.xml", + "lib/DNXCore50/zh-hant/System.Runtime.Extensions.xml", + "lib/netcore50/de/System.Runtime.Extensions.xml", + "lib/netcore50/es/System.Runtime.Extensions.xml", + "lib/netcore50/fr/System.Runtime.Extensions.xml", + "lib/netcore50/it/System.Runtime.Extensions.xml", + "lib/netcore50/ja/System.Runtime.Extensions.xml", + "lib/netcore50/ko/System.Runtime.Extensions.xml", + "lib/netcore50/ru/System.Runtime.Extensions.xml", + "lib/netcore50/System.Runtime.Extensions.dll", + "lib/netcore50/System.Runtime.Extensions.xml", + "lib/netcore50/zh-hans/System.Runtime.Extensions.xml", + "lib/netcore50/zh-hant/System.Runtime.Extensions.xml", + "package/services/metadata/core-properties/5fe9fdfb2e8c42af98299ffeba9362f2.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Runtime.Extensions.nuspec", + "runtimes/win8-aot/lib/netcore50/de/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.dll", + "runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Runtime.Extensions.xml" + ] + }, + "runtime.win7.System.Threading/4.0.11-beta-23321": { + "sha512": "9S9vqzTsHTp59g7TSJEBUbG7fgZoSM9i1bbP7QWzksILC+ga7Uw8cgg6G/TSgYoCDc8m0gylokUJRFevDyQJbg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/fbfb81aeaff0453488443fc63880a207.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Threading.nuspec", + "runtimes/win7/lib/dotnet/de/System.Threading.xml", + "runtimes/win7/lib/dotnet/es/System.Threading.xml", + "runtimes/win7/lib/dotnet/fr/System.Threading.xml", + "runtimes/win7/lib/dotnet/it/System.Threading.xml", + "runtimes/win7/lib/dotnet/ja/System.Threading.xml", + "runtimes/win7/lib/dotnet/ko/System.Threading.xml", + "runtimes/win7/lib/dotnet/ru/System.Threading.xml", + "runtimes/win7/lib/dotnet/System.Threading.dll", + "runtimes/win7/lib/dotnet/System.Threading.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.Threading.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.Threading.xml" ] }, - "System.AppContext/4.0.1-beta-23310": { - "sha512": "kBkEyjTSpcPkBavdqcUTpEDOStAhEeM9eGGFpw5lql6q5Pcc1HPIQF5rJSUHlPZ+Um0RcDMEn9f8ouyu8gqPpg==", + "System.AppContext/4.0.1-beta-23321": { + "sha512": "zgHil87pNujqxKijXCLe86T2wWu5cgXScY01WTbbJomJhTy79RWK7Xf+nK8V2AYowhZduMICjPjT7//D+5Os9g==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.AppContext.xml", - "es/System.AppContext.xml", - "fr/System.AppContext.xml", - "it/System.AppContext.xml", - "ja/System.AppContext.xml", - "ko/System.AppContext.xml", "lib/DNXCore50/System.AppContext.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/System.AppContext.dll", + "lib/netcore50/de/System.AppContext.xml", + "lib/netcore50/es/System.AppContext.xml", + "lib/netcore50/fr/System.AppContext.xml", + "lib/netcore50/it/System.AppContext.xml", + "lib/netcore50/ja/System.AppContext.xml", + "lib/netcore50/ko/System.AppContext.xml", + "lib/netcore50/ru/System.AppContext.xml", "lib/netcore50/System.AppContext.dll", + "lib/netcore50/System.AppContext.xml", + "lib/netcore50/zh-hans/System.AppContext.xml", + "lib/netcore50/zh-hant/System.AppContext.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/ae6c59f4f2b9442e801c3e4cae3c48ac.psmdcp", + "package/services/metadata/core-properties/9f60e94389c84a7a89692aa1ff8863bb.psmdcp", "ref/dotnet/System.AppContext.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/System.AppContext.dll", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.AppContext.xml", - "System.AppContext.nuspec", - "System.AppContext.xml", - "zh-hans/System.AppContext.xml", - "zh-hant/System.AppContext.xml" + "System.AppContext.nuspec" ] }, - "System.Collections/4.0.11-beta-23310": { - "sha512": "00LlXSlJZ6vQv7Y1kp81NW08FqUE7/6xyMWhwhAfApFNeuTdvsGvB6Yo5dy79+wkePcL9hxrWd2PB+1UeiH2nw==", + "System.Collections/4.0.11-beta-23321": { + "sha512": "ShjDeJqXRSn2uiTsLq5xDpI9bQcp3petLDf9VlbGxla6BmPb/jiEQa7ljbYMdAuPH70epGItEPW6wS6ql0bXUQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Collections.xml", - "es/System.Collections.xml", - "fr/System.Collections.xml", - "it/System.Collections.xml", - "ja/System.Collections.xml", - "ko/System.Collections.xml", + "lib/DNXCore50/de/System.Collections.xml", + "lib/DNXCore50/es/System.Collections.xml", + "lib/DNXCore50/fr/System.Collections.xml", + "lib/DNXCore50/it/System.Collections.xml", + "lib/DNXCore50/ja/System.Collections.xml", + "lib/DNXCore50/ko/System.Collections.xml", + "lib/DNXCore50/ru/System.Collections.xml", "lib/DNXCore50/System.Collections.dll", + "lib/DNXCore50/System.Collections.xml", + "lib/DNXCore50/zh-hans/System.Collections.xml", + "lib/DNXCore50/zh-hant/System.Collections.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", + "lib/netcore50/de/System.Collections.xml", + "lib/netcore50/es/System.Collections.xml", + "lib/netcore50/fr/System.Collections.xml", + "lib/netcore50/it/System.Collections.xml", + "lib/netcore50/ja/System.Collections.xml", + "lib/netcore50/ko/System.Collections.xml", + "lib/netcore50/ru/System.Collections.xml", "lib/netcore50/System.Collections.dll", + "lib/netcore50/System.Collections.xml", + "lib/netcore50/zh-hans/System.Collections.xml", + "lib/netcore50/zh-hant/System.Collections.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/9799a8f8842e43d48abd31355466f3eb.psmdcp", + "package/services/metadata/core-properties/f833fc65fe5247d2b8974961da40e893.psmdcp", "ref/dotnet/System.Collections.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Collections.xml", "runtimes/win8-aot/lib/netcore50/System.Collections.dll", - "System.Collections.nuspec", - "System.Collections.xml", - "zh-hans/System.Collections.xml", - "zh-hant/System.Collections.xml" + "runtimes/win8-aot/lib/netcore50/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Collections.xml", + "System.Collections.nuspec" + ] + }, + "System.Collections.Concurrent/4.0.10": { + "sha512": "ZtMEqOPAjAIqR8fqom9AOKRaB94a+emO2O8uOP6vyJoNswSPrbiwN7iH53rrVpvjMVx0wr4/OMpI7486uGZjbw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Collections.Concurrent.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/c982a1e1e1644b62952fc4d4dcbe0d42.psmdcp", + "ref/dotnet/de/System.Collections.Concurrent.xml", + "ref/dotnet/es/System.Collections.Concurrent.xml", + "ref/dotnet/fr/System.Collections.Concurrent.xml", + "ref/dotnet/it/System.Collections.Concurrent.xml", + "ref/dotnet/ja/System.Collections.Concurrent.xml", + "ref/dotnet/ko/System.Collections.Concurrent.xml", + "ref/dotnet/ru/System.Collections.Concurrent.xml", + "ref/dotnet/System.Collections.Concurrent.dll", + "ref/dotnet/System.Collections.Concurrent.xml", + "ref/dotnet/zh-hans/System.Collections.Concurrent.xml", + "ref/dotnet/zh-hant/System.Collections.Concurrent.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Collections.Concurrent.nuspec" ] }, "System.Collections.Immutable/1.1.36": { @@ -2182,30 +3167,30 @@ "System.Collections.Immutable.nuspec" ] }, - "System.Console/4.0.0-beta-23302": { - "sha512": "rpWEkJWW29TjVZdDz5zr8VnBv4IN9BQHmP4Ky9tEbvkdhkJRb0ZO59acXMpVD1tSM2VhGlLnq0kpdjOLNmejNA==", + "System.Console/4.0.0-beta-23321": { + "sha512": "T+3GU5sqNEY6FQrcBq+OxgGmR3iocoyCIaH486/jrHvYiDI2fJYuIQQMFfDom7lK9ALuyGQo6DHtIP8gvPtU4w==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "lib/DNXCore50/System.Console.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/System.Console.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/7b3264a37b224ed5912be4d0b9654610.psmdcp", + "package/services/metadata/core-properties/a6484cacbf364fb1bc265b95a9c5ee1e.psmdcp", "ref/dotnet/System.Console.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/System.Console.dll", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", + "runtime.json", "System.Console.nuspec" ] }, - "System.Diagnostics.Contracts/4.0.1-beta-23310": { - "sha512": "F86AfH5Vr2pAuhAQuZt6qXlP8W+h7mfrIrUZsU3PONsJJqG2qga3yeDgrYnFXloAwO9fNhkfBR5RvpT3o/fZ8Q==", + "System.Diagnostics.Contracts/4.0.1-beta-23321": { + "sha512": "uQBLdUyCPp0fwVdlmDb002cVwqDfgdwZOKyAMCQFIaYVvgrDc5LVhBdUC5DbTnD9yoNmKaudN4wphEUZc7UmKw==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2216,7 +3201,7 @@ "lib/win8/_._", "lib/wp80/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/bfcc1beb505d4c1887c130d989f0350c.psmdcp", + "package/services/metadata/core-properties/aa4cbb3734984eeabf9662196665c772.psmdcp", "ref/dotnet/System.Diagnostics.Contracts.dll", "ref/net45/_._", "ref/netcore50/System.Diagnostics.Contracts.dll", @@ -2227,151 +3212,226 @@ "System.Diagnostics.Contracts.nuspec" ] }, - "System.Diagnostics.Debug/4.0.11-beta-23310": { - "sha512": "eJoJMGp+tiQ2CpzV1mlzN2bCyys3BJ7XiJ906XcRiJesmaoatwwEfxl5bg68QuOXijv41n+SxetIU3ASDaFRwQ==", + "System.Diagnostics.Debug/4.0.11-beta-23321": { + "sha512": "4R6FjkoZEnCFNFG7RX7bgugxyLt7K4AMoeM9pobL31WRK7G3l/8AjAArAIxStTP0mYOQBDfnuzEy7A6GtPPVrQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Diagnostics.Debug.xml", - "es/System.Diagnostics.Debug.xml", - "fr/System.Diagnostics.Debug.xml", - "it/System.Diagnostics.Debug.xml", - "ja/System.Diagnostics.Debug.xml", - "ko/System.Diagnostics.Debug.xml", - "lib/DNXCore50/System.Diagnostics.Debug.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", - "lib/netcore50/System.Diagnostics.Debug.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/5101957011a5470cbb8e7212b9fa4987.psmdcp", + "package/services/metadata/core-properties/d09b3b4ae77f4521a143a18383509727.psmdcp", "ref/dotnet/System.Diagnostics.Debug.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Diagnostics.Debug.xml", + "runtime.json", "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Debug.dll", - "System.Diagnostics.Debug.nuspec", - "System.Diagnostics.Debug.xml", - "zh-hans/System.Diagnostics.Debug.xml", - "zh-hant/System.Diagnostics.Debug.xml" + "System.Diagnostics.Debug.nuspec" + ] + }, + "System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "sha512": "8A1yWiMTN/rrxg8u+10hFGLf94zZa/AorhYoVviuRPbl+UeYd6wPjAYt8RVlm05X2iB10MM7H0JgNjgJeCC5Ig==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Diagnostics.FileVersionInfo.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/7e9bd4814bac467ea31b75a1c4b2eaab.psmdcp", + "ref/dotnet/System.Diagnostics.FileVersionInfo.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Diagnostics.FileVersionInfo.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtime.json", + "System.Diagnostics.FileVersionInfo.nuspec" ] }, - "System.Diagnostics.Process/4.1.0-beta-23310": { - "sha512": "wXXswlCCR1ArC/J7/rpYRg1gxvhGjtz1RO8+ix+IPypfGxVx6hVZcss6JfOwVQ49/cyj/j76/vBe3DY6zmHiSg==", + "System.Diagnostics.Process/4.1.0-beta-23321": { + "sha512": "uyJkM1sHuj25J1MCwgWkrtDzj8zDQFf5Lq81MMcuiTN5vPro5OFch6mS1OQeQwh4rMhcuEab56xz+nKWFBpDuA==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Diagnostics.Process.xml", - "es/System.Diagnostics.Process.xml", - "fr/System.Diagnostics.Process.xml", - "it/System.Diagnostics.Process.xml", - "ja/System.Diagnostics.Process.xml", - "ko/System.Diagnostics.Process.xml", - "lib/DNXCore50/System.Diagnostics.Process.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", + "lib/net46/de/System.Diagnostics.Process.xml", + "lib/net46/es/System.Diagnostics.Process.xml", + "lib/net46/fr/System.Diagnostics.Process.xml", + "lib/net46/it/System.Diagnostics.Process.xml", + "lib/net46/ja/System.Diagnostics.Process.xml", + "lib/net46/ko/System.Diagnostics.Process.xml", + "lib/net46/ru/System.Diagnostics.Process.xml", "lib/net46/System.Diagnostics.Process.dll", + "lib/net46/System.Diagnostics.Process.xml", + "lib/net46/zh-hans/System.Diagnostics.Process.xml", + "lib/net46/zh-hant/System.Diagnostics.Process.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/2f8026410d2249c7b80fe059c2bcc308.psmdcp", + "package/services/metadata/core-properties/9f8bf204da1b44bebe5820c2a2f46af0.psmdcp", "ref/dotnet/System.Diagnostics.Process.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", + "ref/net46/de/System.Diagnostics.Process.xml", + "ref/net46/es/System.Diagnostics.Process.xml", + "ref/net46/fr/System.Diagnostics.Process.xml", + "ref/net46/it/System.Diagnostics.Process.xml", + "ref/net46/ja/System.Diagnostics.Process.xml", + "ref/net46/ko/System.Diagnostics.Process.xml", + "ref/net46/ru/System.Diagnostics.Process.xml", "ref/net46/System.Diagnostics.Process.dll", + "ref/net46/System.Diagnostics.Process.xml", + "ref/net46/zh-hans/System.Diagnostics.Process.xml", + "ref/net46/zh-hant/System.Diagnostics.Process.xml", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Diagnostics.Process.xml", - "System.Diagnostics.Process.nuspec", - "System.Diagnostics.Process.xml", - "zh-hans/System.Diagnostics.Process.xml", - "zh-hant/System.Diagnostics.Process.xml" + "runtime.json", + "System.Diagnostics.Process.nuspec" ] }, - "System.Diagnostics.StackTrace/4.0.1-beta-23310": { - "sha512": "924kqdQ0C7wKs0DcSWXGz+GNG2aavaUQOZi7Lv7AeU1XZg5wjO0jlY8QQh9w67NnBrS88y5WoG4Zjz1tC50psw==", + "System.Diagnostics.StackTrace/4.0.1-beta-23321": { + "sha512": "Z6ISAYpE/EFWjHKlKHIwaYKmJdQfTNGFg/It2XXZnVC0iK9wU6n3nCJEQQPtNGCsUFOuS1lR4IcZ1DJg2zOcDw==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Diagnostics.StackTrace.xml", - "es/System.Diagnostics.StackTrace.xml", - "fr/System.Diagnostics.StackTrace.xml", - "it/System.Diagnostics.StackTrace.xml", - "ja/System.Diagnostics.StackTrace.xml", - "ko/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/de/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/es/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/fr/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/it/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/ja/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/ko/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/ru/System.Diagnostics.StackTrace.xml", "lib/DNXCore50/System.Diagnostics.StackTrace.dll", + "lib/DNXCore50/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/zh-hans/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/zh-hant/System.Diagnostics.StackTrace.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", + "lib/net46/de/System.Diagnostics.StackTrace.xml", + "lib/net46/es/System.Diagnostics.StackTrace.xml", + "lib/net46/fr/System.Diagnostics.StackTrace.xml", + "lib/net46/it/System.Diagnostics.StackTrace.xml", + "lib/net46/ja/System.Diagnostics.StackTrace.xml", + "lib/net46/ko/System.Diagnostics.StackTrace.xml", + "lib/net46/ru/System.Diagnostics.StackTrace.xml", "lib/net46/System.Diagnostics.StackTrace.dll", + "lib/net46/System.Diagnostics.StackTrace.xml", + "lib/net46/zh-hans/System.Diagnostics.StackTrace.xml", + "lib/net46/zh-hant/System.Diagnostics.StackTrace.xml", + "lib/netcore50/de/System.Diagnostics.StackTrace.xml", + "lib/netcore50/es/System.Diagnostics.StackTrace.xml", + "lib/netcore50/fr/System.Diagnostics.StackTrace.xml", + "lib/netcore50/it/System.Diagnostics.StackTrace.xml", + "lib/netcore50/ja/System.Diagnostics.StackTrace.xml", + "lib/netcore50/ko/System.Diagnostics.StackTrace.xml", + "lib/netcore50/ru/System.Diagnostics.StackTrace.xml", "lib/netcore50/System.Diagnostics.StackTrace.dll", + "lib/netcore50/System.Diagnostics.StackTrace.xml", + "lib/netcore50/zh-hans/System.Diagnostics.StackTrace.xml", + "lib/netcore50/zh-hant/System.Diagnostics.StackTrace.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/abd16fc6cf0c47f7971050f801144a25.psmdcp", + "package/services/metadata/core-properties/fbc1a675ca0e44bf800a7de202099cfa.psmdcp", "ref/dotnet/System.Diagnostics.StackTrace.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", + "ref/net46/de/System.Diagnostics.StackTrace.xml", + "ref/net46/es/System.Diagnostics.StackTrace.xml", + "ref/net46/fr/System.Diagnostics.StackTrace.xml", + "ref/net46/it/System.Diagnostics.StackTrace.xml", + "ref/net46/ja/System.Diagnostics.StackTrace.xml", + "ref/net46/ko/System.Diagnostics.StackTrace.xml", + "ref/net46/ru/System.Diagnostics.StackTrace.xml", "ref/net46/System.Diagnostics.StackTrace.dll", + "ref/net46/System.Diagnostics.StackTrace.xml", + "ref/net46/zh-hans/System.Diagnostics.StackTrace.xml", + "ref/net46/zh-hant/System.Diagnostics.StackTrace.xml", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Diagnostics.StackTrace.xml", "runtimes/win8-aot/lib/netcore50/System.Diagnostics.StackTrace.dll", - "System.Diagnostics.StackTrace.nuspec", - "System.Diagnostics.StackTrace.xml", - "zh-hans/System.Diagnostics.StackTrace.xml", - "zh-hant/System.Diagnostics.StackTrace.xml" + "runtimes/win8-aot/lib/netcore50/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Diagnostics.StackTrace.xml", + "System.Diagnostics.StackTrace.nuspec" ] }, - "System.Diagnostics.Tools/4.0.1-beta-23310": { - "sha512": "lytBnGjh3IiPeBLKu4+cO5B4Rh87n/wmkEaK8wPGcnCH77YcITerghJuom+ssP6oISodTXervHSaOUIXbTuWIw==", + "System.Diagnostics.Tools/4.0.1-beta-23321": { + "sha512": "xoM7gy0T1QBgDeMvoMkOdCKlWvgQofBFVaFkMNfCKNC57L/ri4zZG5bDmhnkO9LXkjQ+rfbBBU/nwRpXGNBXMg==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Diagnostics.Tools.xml", - "es/System.Diagnostics.Tools.xml", - "fr/System.Diagnostics.Tools.xml", - "it/System.Diagnostics.Tools.xml", - "ja/System.Diagnostics.Tools.xml", - "ko/System.Diagnostics.Tools.xml", + "lib/DNXCore50/de/System.Diagnostics.Tools.xml", + "lib/DNXCore50/es/System.Diagnostics.Tools.xml", + "lib/DNXCore50/fr/System.Diagnostics.Tools.xml", + "lib/DNXCore50/it/System.Diagnostics.Tools.xml", + "lib/DNXCore50/ja/System.Diagnostics.Tools.xml", + "lib/DNXCore50/ko/System.Diagnostics.Tools.xml", + "lib/DNXCore50/ru/System.Diagnostics.Tools.xml", "lib/DNXCore50/System.Diagnostics.Tools.dll", + "lib/DNXCore50/System.Diagnostics.Tools.xml", + "lib/DNXCore50/zh-hans/System.Diagnostics.Tools.xml", + "lib/DNXCore50/zh-hant/System.Diagnostics.Tools.xml", "lib/net45/_._", + "lib/netcore50/de/System.Diagnostics.Tools.xml", + "lib/netcore50/es/System.Diagnostics.Tools.xml", + "lib/netcore50/fr/System.Diagnostics.Tools.xml", + "lib/netcore50/it/System.Diagnostics.Tools.xml", + "lib/netcore50/ja/System.Diagnostics.Tools.xml", + "lib/netcore50/ko/System.Diagnostics.Tools.xml", + "lib/netcore50/ru/System.Diagnostics.Tools.xml", "lib/netcore50/System.Diagnostics.Tools.dll", + "lib/netcore50/System.Diagnostics.Tools.xml", + "lib/netcore50/zh-hans/System.Diagnostics.Tools.xml", + "lib/netcore50/zh-hant/System.Diagnostics.Tools.xml", "lib/win8/_._", "lib/wp80/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/b3f6344974ea4966a70c17b389d1f1c3.psmdcp", + "package/services/metadata/core-properties/96b131cbd7b7440b802f9771a0027282.psmdcp", "ref/dotnet/System.Diagnostics.Tools.dll", "ref/net45/_._", "ref/netcore50/System.Diagnostics.Tools.dll", "ref/win8/_._", "ref/wp80/_._", "ref/wpa81/_._", - "ru/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Diagnostics.Tools.xml", "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tools.dll", - "System.Diagnostics.Tools.nuspec", - "System.Diagnostics.Tools.xml", - "zh-hans/System.Diagnostics.Tools.xml", - "zh-hant/System.Diagnostics.Tools.xml" + "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Diagnostics.Tools.xml", + "System.Diagnostics.Tools.nuspec" ] }, - "System.Diagnostics.Tracing/4.0.21-beta-23310": { - "sha512": "lkbe5RXVagS6+4oqulmll9HQxUOqfPlPWxkFAcEAFWwXLFLjh+pSo0PdsfKZCqAiz5h8vd1h2YLOoGCrS+61Ew==", + "System.Diagnostics.Tracing/4.0.21-beta-23321": { + "sha512": "OiIKj+DaWak1aN8M61SWIUniknrOV5WWhJy5pP1kwcFQ4JkCDWe+yTIXn2EfQdvzAfkLBNqr8u5wa1fVK9OwLg==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Diagnostics.Tracing.xml", - "es/System.Diagnostics.Tracing.xml", - "fr/System.Diagnostics.Tracing.xml", - "it/System.Diagnostics.Tracing.xml", - "ja/System.Diagnostics.Tracing.xml", - "ko/System.Diagnostics.Tracing.xml", "lib/DNXCore50/System.Diagnostics.Tracing.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", @@ -2379,23 +3439,83 @@ "lib/netcore50/System.Diagnostics.Tracing.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/99111b10521449d086b67a00ef9dcd7f.psmdcp", + "package/services/metadata/core-properties/0cf13c4ba4f740cba9eb61b4514f6bbd.psmdcp", "ref/dotnet/System.Diagnostics.Tracing.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Diagnostics.Tracing.xml", "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tracing.dll", - "System.Diagnostics.Tracing.nuspec", - "System.Diagnostics.Tracing.xml", - "zh-hans/System.Diagnostics.Tracing.xml", - "zh-hant/System.Diagnostics.Tracing.xml" + "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Diagnostics.Tracing.xml", + "System.Diagnostics.Tracing.nuspec" + ] + }, + "System.Dynamic.Runtime/4.0.11-beta-23321": { + "sha512": "nLFraVth0r3h7zEizl4mNafksP3NHGJxEX8vl+Rbs41yvs5+6XUw/xeOhySxkjHoUZBp6Y9d6GrU0raP54vhFQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/de/System.Dynamic.Runtime.xml", + "lib/DNXCore50/es/System.Dynamic.Runtime.xml", + "lib/DNXCore50/fr/System.Dynamic.Runtime.xml", + "lib/DNXCore50/it/System.Dynamic.Runtime.xml", + "lib/DNXCore50/ja/System.Dynamic.Runtime.xml", + "lib/DNXCore50/ko/System.Dynamic.Runtime.xml", + "lib/DNXCore50/ru/System.Dynamic.Runtime.xml", + "lib/DNXCore50/System.Dynamic.Runtime.dll", + "lib/DNXCore50/System.Dynamic.Runtime.xml", + "lib/DNXCore50/zh-hans/System.Dynamic.Runtime.xml", + "lib/DNXCore50/zh-hant/System.Dynamic.Runtime.xml", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/de/System.Dynamic.Runtime.xml", + "lib/netcore50/es/System.Dynamic.Runtime.xml", + "lib/netcore50/fr/System.Dynamic.Runtime.xml", + "lib/netcore50/it/System.Dynamic.Runtime.xml", + "lib/netcore50/ja/System.Dynamic.Runtime.xml", + "lib/netcore50/ko/System.Dynamic.Runtime.xml", + "lib/netcore50/ru/System.Dynamic.Runtime.xml", + "lib/netcore50/System.Dynamic.Runtime.dll", + "lib/netcore50/System.Dynamic.Runtime.xml", + "lib/netcore50/zh-hans/System.Dynamic.Runtime.xml", + "lib/netcore50/zh-hant/System.Dynamic.Runtime.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/800b57cff91d4981b9f0ba8129029f78.psmdcp", + "ref/dotnet/System.Dynamic.Runtime.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/de/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/System.Dynamic.Runtime.dll", + "runtimes/win8-aot/lib/netcore50/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Dynamic.Runtime.xml", + "System.Dynamic.Runtime.nuspec" ] }, - "System.Globalization/4.0.11-beta-23310": { - "sha512": "Xuoyqp1diV1dKNEAP+V98XvGXkcufEF9S7vRXMOaz/9gp9i81O9WcCSPAhiGgHaRCo29hdMQYbqsKLdgZgZJPA==", + "System.Globalization/4.0.11-beta-23321": { + "sha512": "x2xt0ZWdRlG2HdyTCE2Nw5rVvCVAB/VUwQdD51MN/ymGIQpqgrijiMCaqY3NA2sCFdViTuJOwBOaOjd02PKquQ==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2407,7 +3527,7 @@ "lib/netcore50/System.Globalization.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/abb295d9081644e6aaf47a415738b7dc.psmdcp", + "package/services/metadata/core-properties/fbfb4b8becac4cf6b73f30cb91af51e0.psmdcp", "ref/dotnet/System.Globalization.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -2418,8 +3538,8 @@ "System.Globalization.nuspec" ] }, - "System.Globalization.Calendars/4.0.1-beta-23310": { - "sha512": "dSF4mwREyLcpp2zSi8KiZ9eid0x3C+w49kFZ42j1dq602vP51RbeKv6KLbCe40+OD2qZH9d+dyXygYfcreITMg==", + "System.Globalization.Calendars/4.0.1-beta-23321": { + "sha512": "nPrmcTQHZGygVw8njyFVXDMNyHDyA5YLrfnBR8Do0vR02OmWAkfLA8jETZIiroIBHfynPda56GVVyUxHjXDhoQ==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2431,7 +3551,7 @@ "lib/netcore50/System.Globalization.Calendars.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/bb2c4aed55eb4a0cba73e69fbba0dfba.psmdcp", + "package/services/metadata/core-properties/2a5ed4057ec745739a290228c7436f53.psmdcp", "ref/dotnet/System.Globalization.Calendars.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -2442,200 +3562,244 @@ "System.Globalization.Calendars.nuspec" ] }, - "System.IO/4.0.11-beta-23310": { - "sha512": "6xSQJONw692DeSWJ3VwmbnlL+XkwnYTb3YLl22sND6eQps74VWCxeHlXqUy1REKXkk5EgzwpCz6MDv9HrLLdgg==", + "System.IO/4.0.11-beta-23321": { + "sha512": "HozIN1RtKBRBNLePHGKUkvaLDs3d2ytO7jYD0PJEjfprB5tEapX69hEH8MpWu8a2JtuWH4n8Sqb2MJ4I0whQ6Q==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.IO.xml", - "es/System.IO.xml", - "fr/System.IO.xml", - "it/System.IO.xml", - "ja/System.IO.xml", - "ko/System.IO.xml", + "lib/DNXCore50/de/System.IO.xml", + "lib/DNXCore50/es/System.IO.xml", + "lib/DNXCore50/fr/System.IO.xml", + "lib/DNXCore50/it/System.IO.xml", + "lib/DNXCore50/ja/System.IO.xml", + "lib/DNXCore50/ko/System.IO.xml", + "lib/DNXCore50/ru/System.IO.xml", "lib/DNXCore50/System.IO.dll", + "lib/DNXCore50/System.IO.xml", + "lib/DNXCore50/zh-hans/System.IO.xml", + "lib/DNXCore50/zh-hant/System.IO.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", + "lib/netcore50/de/System.IO.xml", + "lib/netcore50/es/System.IO.xml", + "lib/netcore50/fr/System.IO.xml", + "lib/netcore50/it/System.IO.xml", + "lib/netcore50/ja/System.IO.xml", + "lib/netcore50/ko/System.IO.xml", + "lib/netcore50/ru/System.IO.xml", "lib/netcore50/System.IO.dll", + "lib/netcore50/System.IO.xml", + "lib/netcore50/zh-hans/System.IO.xml", + "lib/netcore50/zh-hant/System.IO.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/d20b4f9571f94180bdb50d5889eb59c5.psmdcp", + "package/services/metadata/core-properties/56ba00f750f24a5da2376c4023582747.psmdcp", "ref/dotnet/System.IO.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/de/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/es/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/it/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.IO.xml", "runtimes/win8-aot/lib/netcore50/System.IO.dll", - "System.IO.nuspec", - "System.IO.xml", - "zh-hans/System.IO.xml", - "zh-hant/System.IO.xml" + "runtimes/win8-aot/lib/netcore50/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.IO.xml", + "System.IO.nuspec" ] }, - "System.IO.FileSystem/4.0.1-beta-23302": { - "sha512": "wnuZBIgGmS9Vj5fDzaeJ1641VTSFXW559VMFmuASU3wQEjYjE+PGaP8UY57aFS74vl00ymGLGmG5VXz1R7lQ1Q==", + "System.IO.FileSystem/4.0.1-beta-23321": { + "sha512": "4HrW5zPva1J19l/g1a5tDfm35fGV98sSgT1dDr/DQcxBA4njuzWdML3dU6NAWZw0lTlmLedd1qNc9emAzMGUaw==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "lib/DNXCore50/System.IO.FileSystem.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/System.IO.FileSystem.dll", - "lib/netcore50/System.IO.FileSystem.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/448bc12fa4fe4b00ad0ba50f573d316d.psmdcp", + "package/services/metadata/core-properties/51d437692fb84181b0a8db020860cea9.psmdcp", "ref/dotnet/System.IO.FileSystem.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/System.IO.FileSystem.dll", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", + "runtime.json", "System.IO.FileSystem.nuspec" ] }, - "System.IO.FileSystem.Primitives/4.0.1-beta-23310": { - "sha512": "gzhQDPnvvUQnMxxTkXnifOEiEV+EoCHsWogESLR3sftSW5hNs/tDEHe/JInxSWyP0H5NM/pNKLufbVMjjV02gA==", + "System.IO.FileSystem.Primitives/4.0.0": { + "sha512": "7pJUvYi/Yq3A5nagqCCiOw3+aJp3xXc/Cjr8dnJDnER3/6kX3LEencfqmXUcPl9+7OvRNyPMNhqsLAcMK6K/KA==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.IO.FileSystem.Primitives.xml", - "es/System.IO.FileSystem.Primitives.xml", - "fr/System.IO.FileSystem.Primitives.xml", - "it/System.IO.FileSystem.Primitives.xml", - "ja/System.IO.FileSystem.Primitives.xml", - "ko/System.IO.FileSystem.Primitives.xml", "lib/dotnet/System.IO.FileSystem.Primitives.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/System.IO.FileSystem.Primitives.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/d06a7a9f8aa54012b1fb23c8d5191600.psmdcp", + "package/services/metadata/core-properties/2cf3542156f0426483f92b9e37d8d381.psmdcp", + "ref/dotnet/de/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/es/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/fr/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/it/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/ja/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/ko/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/ru/System.IO.FileSystem.Primitives.xml", "ref/dotnet/System.IO.FileSystem.Primitives.dll", + "ref/dotnet/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/zh-hans/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/zh-hant/System.IO.FileSystem.Primitives.xml", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/System.IO.FileSystem.Primitives.dll", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.IO.FileSystem.Primitives.xml", - "System.IO.FileSystem.Primitives.nuspec", - "System.IO.FileSystem.Primitives.xml", - "zh-hans/System.IO.FileSystem.Primitives.xml", - "zh-hant/System.IO.FileSystem.Primitives.xml" + "System.IO.FileSystem.Primitives.nuspec" ] }, - "System.IO.Pipes/4.0.0-beta-23310": { - "sha512": "mKPNHkbq5iTdncSjVEBjAdfpdfduc5/fO4nmZMV//7Blx5wMs1wbVAeftcRMW12xNCASTl+E/DfM4pyRW2hSaQ==", + "System.IO.Pipes/4.0.0-beta-23321": { + "sha512": "1wL5QKz+W6qD41HEeWizKQr3vtO/htd2pm/Y80jUSMnsEhih3LZqLjgTbJK95nVYwYpaltWCx+lA2gGgG2dZJw==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.IO.Pipes.xml", - "es/System.IO.Pipes.xml", - "fr/System.IO.Pipes.xml", - "it/System.IO.Pipes.xml", - "ja/System.IO.Pipes.xml", - "ko/System.IO.Pipes.xml", - "lib/DNXCore50/System.IO.Pipes.dll", "lib/net46/System.IO.Pipes.dll", - "package/services/metadata/core-properties/7000d59a59c2435395661f40203583d1.psmdcp", + "package/services/metadata/core-properties/fbdfaaee2e974aa3b62dcd9c3a0caf16.psmdcp", "ref/dotnet/System.IO.Pipes.dll", "ref/net46/System.IO.Pipes.dll", - "ru/System.IO.Pipes.xml", - "System.IO.Pipes.nuspec", - "System.IO.Pipes.xml", - "zh-hans/System.IO.Pipes.xml", - "zh-hant/System.IO.Pipes.xml" + "runtime.json", + "System.IO.Pipes.nuspec" ] }, - "System.Linq/4.0.1-beta-23310": { - "sha512": "LWlC6mAtBXdAE6B4cPJlllMwz9bnHs2IDSGm3JLKGzsi2fgjQUbqX8J2yFXcGM33re647DY1zR6Y7u0Y9ZdD8Q==", + "System.Linq/4.0.1-beta-23321": { + "sha512": "uw60zm0oDkqeZ1tX/1Ok1o3P1JCDVd4iVjUNNb+zhm8ZcmXZC4LSJKAO4hrkwmCxZlsUskBK9H/f1mJbG3cv4g==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Linq.xml", - "es/System.Linq.xml", - "fr/System.Linq.xml", - "it/System.Linq.xml", - "ja/System.Linq.xml", - "ko/System.Linq.xml", + "lib/dotnet/de/System.Linq.xml", + "lib/dotnet/es/System.Linq.xml", + "lib/dotnet/fr/System.Linq.xml", + "lib/dotnet/it/System.Linq.xml", + "lib/dotnet/ja/System.Linq.xml", + "lib/dotnet/ko/System.Linq.xml", + "lib/dotnet/ru/System.Linq.xml", "lib/dotnet/System.Linq.dll", + "lib/dotnet/System.Linq.xml", + "lib/dotnet/zh-hans/System.Linq.xml", + "lib/dotnet/zh-hant/System.Linq.xml", "lib/net45/_._", "lib/netcore50/System.Linq.dll", + "lib/netcore50/System.Linq.xml", "lib/win8/_._", "lib/wp80/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/382f5db13ee44cbfb2444a411ae6737a.psmdcp", + "package/services/metadata/core-properties/62d6902652794f8a9216c34686d9ba4b.psmdcp", "ref/dotnet/System.Linq.dll", "ref/net45/_._", "ref/netcore50/System.Linq.dll", "ref/win8/_._", "ref/wp80/_._", "ref/wpa81/_._", - "ru/System.Linq.xml", - "System.Linq.nuspec", - "System.Linq.xml", - "zh-hans/System.Linq.xml", - "zh-hant/System.Linq.xml" + "System.Linq.nuspec" + ] + }, + "System.Linq.Expressions/4.0.10": { + "sha512": "qhFkPqRsTfXBaacjQhxwwwUoU7TEtwlBIULj7nG7i4qAkvivil31VvOvDKppCSui5yGw0/325ZeNaMYRvTotXw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Linq.Expressions.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Linq.Expressions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/4e3c061f7c0a427fa5b65bd3d84e9bc3.psmdcp", + "ref/dotnet/de/System.Linq.Expressions.xml", + "ref/dotnet/es/System.Linq.Expressions.xml", + "ref/dotnet/fr/System.Linq.Expressions.xml", + "ref/dotnet/it/System.Linq.Expressions.xml", + "ref/dotnet/ja/System.Linq.Expressions.xml", + "ref/dotnet/ko/System.Linq.Expressions.xml", + "ref/dotnet/ru/System.Linq.Expressions.xml", + "ref/dotnet/System.Linq.Expressions.dll", + "ref/dotnet/System.Linq.Expressions.xml", + "ref/dotnet/zh-hans/System.Linq.Expressions.xml", + "ref/dotnet/zh-hant/System.Linq.Expressions.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtime.json", + "runtimes/win8-aot/lib/netcore50/System.Linq.Expressions.dll", + "System.Linq.Expressions.nuspec" ] }, - "System.ObjectModel/4.0.11-beta-23310": { - "sha512": "GSlwciGSaW5plBrafIg8sd65TAtEXOhAdQm7qdnZ3YnucLbDdE9T/SHXn1dZzBaTImhJ/e52wK50sIdLHgemYA==", + "System.ObjectModel/4.0.11-beta-23321": { + "sha512": "EzC3uRo6wziGKAOLxgeXSc3vL7g/hE2xbjyM4bB6kJWYKqKyIX7Vie4pq/lYiY4ioXtwXgLz+leNszROISMnDQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.ObjectModel.xml", - "es/System.ObjectModel.xml", - "fr/System.ObjectModel.xml", - "it/System.ObjectModel.xml", - "ja/System.ObjectModel.xml", - "ko/System.ObjectModel.xml", + "lib/dotnet/de/System.ObjectModel.xml", + "lib/dotnet/es/System.ObjectModel.xml", + "lib/dotnet/fr/System.ObjectModel.xml", + "lib/dotnet/it/System.ObjectModel.xml", + "lib/dotnet/ja/System.ObjectModel.xml", + "lib/dotnet/ko/System.ObjectModel.xml", + "lib/dotnet/ru/System.ObjectModel.xml", "lib/dotnet/System.ObjectModel.dll", + "lib/dotnet/System.ObjectModel.xml", + "lib/dotnet/zh-hans/System.ObjectModel.xml", + "lib/dotnet/zh-hant/System.ObjectModel.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/ecf762b27b3e46db80c58ef05077fff3.psmdcp", + "package/services/metadata/core-properties/23e34926ef6542f29940c58292841cfd.psmdcp", "ref/dotnet/System.ObjectModel.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.ObjectModel.xml", - "System.ObjectModel.nuspec", - "System.ObjectModel.xml", - "zh-hans/System.ObjectModel.xml", - "zh-hant/System.ObjectModel.xml" + "System.ObjectModel.nuspec" ] }, - "System.Private.Uri/4.0.1-beta-23310": { - "sha512": "FK8XwCUZsomvteON/mzdNS0t3J8bIKUDq1UpvIFTCUzPaKorSDba2BsmQl4Xtsfqso5UEMZzXYx1SWoxhbEzzQ==", + "System.Private.Uri/4.0.1-beta-23321": { + "sha512": "aYzUbfsIO9LHpGeBJFbuBRzbg8NhSxCWWAjJNdyKV6SrgawsuCsec+MOWsx+H4JR8NOE2CG5C3oDVj4eI9Pgtw==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "lib/DNXCore50/System.Private.Uri.dll", - "lib/netcore50/System.Private.Uri.dll", - "package/services/metadata/core-properties/5268168096a04ab896ae721e5666da87.psmdcp", + "package/services/metadata/core-properties/2b2f854d867f4735aacb6bd366df1127.psmdcp", "ref/dnxcore50/_._", "ref/netcore50/_._", + "runtime.json", "runtimes/win8-aot/lib/netcore50/System.Private.Uri.dll", "System.Private.Uri.nuspec" ] }, - "System.Reflection/4.1.0-beta-23310": { - "sha512": "hA91IBMuPJKBZjMpkjP+lfeQJiRu5qKlbdSetM871/imbwwRvdGXMPVZP+czgHefG1d8iYqSTvk6oy0Tz6UFPQ==", + "System.Reflection/4.1.0-beta-23321": { + "sha512": "BJmxSgtH9BJ6cbLcF2xodAf3NT9igbAKfUr/XmwcOL7/T4GOTYONIj3k/vy8CTIIgn/zcxQODG3Hjf5jh5iRBg==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2647,7 +3811,7 @@ "lib/netcore50/System.Reflection.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/3f69d785fbca4645be37292dcff887fd.psmdcp", + "package/services/metadata/core-properties/01c08beb33b54545a71b58b9083cabb6.psmdcp", "ref/dotnet/System.Reflection.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -2658,37 +3822,120 @@ "System.Reflection.nuspec" ] }, - "System.Reflection.Extensions/4.0.1-beta-23310": { - "sha512": "Nj/zwFRYQo8tTG7wwbkQNfjR35arZDHH8Qx4DXfK8dVXp2tTVl6wNAfZ/h3do4HytlgYoPphJU0MSZvS9a4s2A==", + "System.Reflection.Emit/4.0.0": { + "sha512": "CqnQz5LbNbiSxN10cv3Ehnw3j1UZOBCxnE0OO0q/keGQ5ENjyFM6rIG4gm/i0dX6EjdpYkAgKcI/mhZZCaBq4A==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Reflection.Emit.dll", + "lib/MonoAndroid10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.dll", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/f6dc998f8a6b43d7b08f33375407a384.psmdcp", + "ref/dotnet/de/System.Reflection.Emit.xml", + "ref/dotnet/es/System.Reflection.Emit.xml", + "ref/dotnet/fr/System.Reflection.Emit.xml", + "ref/dotnet/it/System.Reflection.Emit.xml", + "ref/dotnet/ja/System.Reflection.Emit.xml", + "ref/dotnet/ko/System.Reflection.Emit.xml", + "ref/dotnet/ru/System.Reflection.Emit.xml", + "ref/dotnet/System.Reflection.Emit.dll", + "ref/dotnet/System.Reflection.Emit.xml", + "ref/dotnet/zh-hans/System.Reflection.Emit.xml", + "ref/dotnet/zh-hant/System.Reflection.Emit.xml", + "ref/MonoAndroid10/_._", + "ref/net45/_._", + "ref/xamarinmac20/_._", + "System.Reflection.Emit.nuspec" + ] + }, + "System.Reflection.Emit.ILGeneration/4.0.0": { + "sha512": "02okuusJ0GZiHZSD2IOLIN41GIn6qOr7i5+86C98BPuhlwWqVABwebiGNvhDiXP1f9a6CxEigC7foQD42klcDg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Reflection.Emit.ILGeneration.dll", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", + "lib/wp80/_._", + "package/services/metadata/core-properties/d044dd882ed2456486ddb05f1dd0420f.psmdcp", + "ref/dotnet/de/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/es/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/fr/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/it/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/ja/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/ko/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/ru/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/System.Reflection.Emit.ILGeneration.dll", + "ref/dotnet/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/zh-hans/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/zh-hant/System.Reflection.Emit.ILGeneration.xml", + "ref/net45/_._", + "ref/wp80/_._", + "System.Reflection.Emit.ILGeneration.nuspec" + ] + }, + "System.Reflection.Emit.Lightweight/4.0.0": { + "sha512": "DJZhHiOdkN08xJgsJfDjkuOreLLmMcU8qkEEqEHqyhkPUZMMQs0lE8R+6+68BAFWgcdzxtNu0YmIOtEug8j00w==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Reflection.Emit.Lightweight.dll", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.Lightweight.dll", + "lib/wp80/_._", + "package/services/metadata/core-properties/52abced289cd46eebf8599b9b4c1c67b.psmdcp", + "ref/dotnet/de/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/es/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/fr/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/it/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/ja/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/ko/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/ru/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/System.Reflection.Emit.Lightweight.dll", + "ref/dotnet/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/zh-hans/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/zh-hant/System.Reflection.Emit.Lightweight.xml", + "ref/net45/_._", + "ref/wp80/_._", + "System.Reflection.Emit.Lightweight.nuspec" + ] + }, + "System.Reflection.Extensions/4.0.1-beta-23321": { + "sha512": "0ZYEtazFr/3jf31RFBqeGrphKcLEvZbtiQLxrHbqOxlGYB4TScf5/AXTAX7Dxxj8OESosgigfzofry8SYEfXYg==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Reflection.Extensions.xml", - "es/System.Reflection.Extensions.xml", - "fr/System.Reflection.Extensions.xml", - "it/System.Reflection.Extensions.xml", - "ja/System.Reflection.Extensions.xml", - "ko/System.Reflection.Extensions.xml", "lib/DNXCore50/System.Reflection.Extensions.dll", "lib/net45/_._", "lib/netcore50/System.Reflection.Extensions.dll", "lib/win8/_._", "lib/wp80/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/7b9edf5b7ca742bfb8921dbf53c6f3da.psmdcp", + "package/services/metadata/core-properties/7126a90e098846608d931321e1efd181.psmdcp", "ref/dotnet/System.Reflection.Extensions.dll", "ref/net45/_._", "ref/netcore50/System.Reflection.Extensions.dll", "ref/win8/_._", "ref/wp80/_._", "ref/wpa81/_._", - "ru/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Reflection.Extensions.xml", "runtimes/win8-aot/lib/netcore50/System.Reflection.Extensions.dll", - "System.Reflection.Extensions.nuspec", - "System.Reflection.Extensions.xml", - "zh-hans/System.Reflection.Extensions.xml", - "zh-hant/System.Reflection.Extensions.xml" + "runtimes/win8-aot/lib/netcore50/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Reflection.Extensions.xml", + "System.Reflection.Extensions.nuspec" ] }, "System.Reflection.Metadata/1.1.0-alpha-00014": { @@ -2704,210 +3951,282 @@ "System.Reflection.Metadata.nuspec" ] }, - "System.Reflection.Primitives/4.0.1-beta-23310": { - "sha512": "INCGnTD+oh+BjtVr4+jbMxROFisqIG0C76d2WB7g+r4x8rosfrKHdBAqy5yn+U8QUhqX3jejxZmF7BYkKfzA5Q==", + "System.Reflection.Primitives/4.0.1-beta-23321": { + "sha512": "BNg1/j5QPmRovdYXRFbtuoxX444casrq/f0wJY4Cy3FPRn7JeQs028oNfr8vN66xk1P+p3NBP//7FtopwAGN+g==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Reflection.Primitives.xml", - "es/System.Reflection.Primitives.xml", - "fr/System.Reflection.Primitives.xml", - "it/System.Reflection.Primitives.xml", - "ja/System.Reflection.Primitives.xml", - "ko/System.Reflection.Primitives.xml", "lib/DNXCore50/System.Reflection.Primitives.dll", "lib/net45/_._", "lib/netcore50/System.Reflection.Primitives.dll", "lib/win8/_._", "lib/wp80/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/6c498ae47c3d43f9aeba1544db1faca8.psmdcp", + "package/services/metadata/core-properties/071daab6331442f48da7f5599bcf079e.psmdcp", "ref/dotnet/System.Reflection.Primitives.dll", "ref/net45/_._", "ref/netcore50/System.Reflection.Primitives.dll", "ref/win8/_._", "ref/wp80/_._", "ref/wpa81/_._", - "ru/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Reflection.Primitives.xml", "runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.dll", - "System.Reflection.Primitives.nuspec", - "System.Reflection.Primitives.xml", - "zh-hans/System.Reflection.Primitives.xml", - "zh-hant/System.Reflection.Primitives.xml" + "runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Reflection.Primitives.xml", + "System.Reflection.Primitives.nuspec" + ] + }, + "System.Reflection.TypeExtensions/4.0.0": { + "sha512": "YRM/msNAM86hdxPyXcuZSzmTO0RQFh7YMEPBLTY8cqXvFPYIx2x99bOyPkuU81wRYQem1c1HTkImQ2DjbOBfew==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Reflection.TypeExtensions.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Reflection.TypeExtensions.dll", + "lib/netcore50/System.Reflection.TypeExtensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/a37798ee61124eb7b6c56400aee24da1.psmdcp", + "ref/dotnet/de/System.Reflection.TypeExtensions.xml", + "ref/dotnet/es/System.Reflection.TypeExtensions.xml", + "ref/dotnet/fr/System.Reflection.TypeExtensions.xml", + "ref/dotnet/it/System.Reflection.TypeExtensions.xml", + "ref/dotnet/ja/System.Reflection.TypeExtensions.xml", + "ref/dotnet/ko/System.Reflection.TypeExtensions.xml", + "ref/dotnet/ru/System.Reflection.TypeExtensions.xml", + "ref/dotnet/System.Reflection.TypeExtensions.dll", + "ref/dotnet/System.Reflection.TypeExtensions.xml", + "ref/dotnet/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/dotnet/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Reflection.TypeExtensions.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.Reflection.TypeExtensions.dll", + "System.Reflection.TypeExtensions.nuspec" ] }, - "System.Resources.ResourceManager/4.0.1-beta-23310": { - "sha512": "whO+5muY0ATivwyP0uQIl54/A/Q5+qRULBLQvukj2kPlfI3AXqs+5I9AQUMJ2QzU2Htxliv585yW3I3xr7SBbw==", + "System.Resources.ResourceManager/4.0.1-beta-23321": { + "sha512": "Xb2b2WouJJyVwrwm2TCWkmTpzdW37VyVmQZhYnx9oFEeE+e+Wvl/k+0jNQrB57kWJFre00u/g+mDykAgBoKWOg==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Resources.ResourceManager.xml", - "es/System.Resources.ResourceManager.xml", - "fr/System.Resources.ResourceManager.xml", - "it/System.Resources.ResourceManager.xml", - "ja/System.Resources.ResourceManager.xml", - "ko/System.Resources.ResourceManager.xml", "lib/DNXCore50/System.Resources.ResourceManager.dll", "lib/net45/_._", "lib/netcore50/System.Resources.ResourceManager.dll", "lib/win8/_._", "lib/wp80/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/2da69566986045fdb55f055463bcde38.psmdcp", + "package/services/metadata/core-properties/97c30e7c67b449309795182925a582aa.psmdcp", "ref/dotnet/System.Resources.ResourceManager.dll", "ref/net45/_._", "ref/netcore50/System.Resources.ResourceManager.dll", "ref/win8/_._", "ref/wp80/_._", "ref/wpa81/_._", - "ru/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Resources.ResourceManager.xml", "runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.dll", - "System.Resources.ResourceManager.nuspec", - "System.Resources.ResourceManager.xml", - "zh-hans/System.Resources.ResourceManager.xml", - "zh-hant/System.Resources.ResourceManager.xml" + "runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Resources.ResourceManager.xml", + "System.Resources.ResourceManager.nuspec" ] }, - "System.Runtime/4.0.21-beta-23310": { - "sha512": "X077Ed9GAGprGEARujtbWq4/uExEloi62eB1SXN95zEEXRMWTCsXT7ogcKyWL3iqrrEwlxetKDLm2rdFkdYK7Q==", + "System.Runtime/4.0.21-beta-23321": { + "sha512": "1cXiVm2L7F48anx94AXMlaMMkW34ECCyFiE/EJ+sJ3cVRiCIbzeGP/HgfWvAmR6Vb7HDyx4WUYeM2ID1jcwSiQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Runtime.xml", - "es/System.Runtime.xml", - "fr/System.Runtime.xml", - "it/System.Runtime.xml", - "ja/System.Runtime.xml", - "ko/System.Runtime.xml", + "lib/DNXCore50/de/System.Runtime.xml", + "lib/DNXCore50/es/System.Runtime.xml", + "lib/DNXCore50/fr/System.Runtime.xml", + "lib/DNXCore50/it/System.Runtime.xml", + "lib/DNXCore50/ja/System.Runtime.xml", + "lib/DNXCore50/ko/System.Runtime.xml", + "lib/DNXCore50/ru/System.Runtime.xml", "lib/DNXCore50/System.Runtime.dll", + "lib/DNXCore50/System.Runtime.xml", + "lib/DNXCore50/zh-hans/System.Runtime.xml", + "lib/DNXCore50/zh-hant/System.Runtime.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", + "lib/netcore50/de/System.Runtime.xml", + "lib/netcore50/es/System.Runtime.xml", + "lib/netcore50/fr/System.Runtime.xml", + "lib/netcore50/it/System.Runtime.xml", + "lib/netcore50/ja/System.Runtime.xml", + "lib/netcore50/ko/System.Runtime.xml", + "lib/netcore50/ru/System.Runtime.xml", "lib/netcore50/System.Runtime.dll", + "lib/netcore50/System.Runtime.xml", + "lib/netcore50/zh-hans/System.Runtime.xml", + "lib/netcore50/zh-hant/System.Runtime.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/ccb07484a8d744d98268d9c316e9f68f.psmdcp", + "package/services/metadata/core-properties/7673ec88ee024db58f262b21c8ee84bc.psmdcp", "ref/dotnet/System.Runtime.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Runtime.xml", "runtimes/win8-aot/lib/netcore50/System.Runtime.dll", - "System.Runtime.nuspec", - "System.Runtime.xml", - "zh-hans/System.Runtime.xml", - "zh-hant/System.Runtime.xml" + "runtimes/win8-aot/lib/netcore50/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Runtime.xml", + "System.Runtime.nuspec" ] }, - "System.Runtime.Extensions/4.0.11-beta-23310": { - "sha512": "B6IjBByKkEQAYB9vS73Trw82vlT/fbQPW39QsDdaCFHZaWXuCl3hCG2QAVeY2r85lvv0XscPPv3i83RKP8MfRA==", + "System.Runtime.Extensions/4.0.11-beta-23321": { + "sha512": "iqvpTN0WhcIGVz9quiA2PotxXLDYmu+pK6hLPuoIkyoQF8IJN7/uDV02sOl0ujB8oxoHBC+tASA7QA3nEeZeMQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Runtime.Extensions.xml", - "es/System.Runtime.Extensions.xml", - "fr/System.Runtime.Extensions.xml", - "it/System.Runtime.Extensions.xml", - "ja/System.Runtime.Extensions.xml", - "ko/System.Runtime.Extensions.xml", - "lib/DNXCore50/System.Runtime.Extensions.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", - "lib/netcore50/System.Runtime.Extensions.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/d39f3294a03a4cc7bda9d3f5c1df5e2c.psmdcp", + "package/services/metadata/core-properties/aa40024f803a4c37a959fddfb6cf0d2a.psmdcp", "ref/dotnet/System.Runtime.Extensions.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Runtime.Extensions.xml", - "runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.dll", - "System.Runtime.Extensions.nuspec", - "System.Runtime.Extensions.xml", - "zh-hans/System.Runtime.Extensions.xml", - "zh-hant/System.Runtime.Extensions.xml" + "runtime.json", + "System.Runtime.Extensions.nuspec" ] }, - "System.Runtime.Handles/4.0.1-beta-23310": { - "sha512": "YWQStfeukEjAFgvMjw6tzOJeh118hdGxGWLgvQ0X9ni5aT4X9ayaJn9AprhTDjTrswZwMVi8It10k0iMK5k9VA==", + "System.Runtime.Handles/4.0.1-beta-23321": { + "sha512": "BLg+2M7bIZTM39Y9sO17CnS0xc+xzKAHncXjexGciJx+hyrUl78YJ6QAfbHAJ14Z+e+oiTQVO8cj7AOq3xqaJA==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Runtime.Handles.xml", - "es/System.Runtime.Handles.xml", - "fr/System.Runtime.Handles.xml", - "it/System.Runtime.Handles.xml", - "ja/System.Runtime.Handles.xml", - "ko/System.Runtime.Handles.xml", + "lib/DNXCore50/de/System.Runtime.Handles.xml", + "lib/DNXCore50/es/System.Runtime.Handles.xml", + "lib/DNXCore50/fr/System.Runtime.Handles.xml", + "lib/DNXCore50/it/System.Runtime.Handles.xml", + "lib/DNXCore50/ja/System.Runtime.Handles.xml", + "lib/DNXCore50/ko/System.Runtime.Handles.xml", + "lib/DNXCore50/ru/System.Runtime.Handles.xml", "lib/DNXCore50/System.Runtime.Handles.dll", + "lib/DNXCore50/System.Runtime.Handles.xml", + "lib/DNXCore50/zh-hans/System.Runtime.Handles.xml", + "lib/DNXCore50/zh-hant/System.Runtime.Handles.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", + "lib/netcore50/de/System.Runtime.Handles.xml", + "lib/netcore50/es/System.Runtime.Handles.xml", + "lib/netcore50/fr/System.Runtime.Handles.xml", + "lib/netcore50/it/System.Runtime.Handles.xml", + "lib/netcore50/ja/System.Runtime.Handles.xml", + "lib/netcore50/ko/System.Runtime.Handles.xml", + "lib/netcore50/ru/System.Runtime.Handles.xml", "lib/netcore50/System.Runtime.Handles.dll", + "lib/netcore50/System.Runtime.Handles.xml", + "lib/netcore50/zh-hans/System.Runtime.Handles.xml", + "lib/netcore50/zh-hant/System.Runtime.Handles.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/89c12df682684b6d8e5a07ebf22381cb.psmdcp", + "package/services/metadata/core-properties/4c3f0754f0eb4acf8da1fc993b79df9d.psmdcp", "ref/dotnet/System.Runtime.Handles.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Runtime.Handles.xml", "runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.dll", - "System.Runtime.Handles.nuspec", - "System.Runtime.Handles.xml", - "zh-hans/System.Runtime.Handles.xml", - "zh-hant/System.Runtime.Handles.xml" + "runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Runtime.Handles.xml", + "System.Runtime.Handles.nuspec" ] }, - "System.Runtime.InteropServices/4.0.21-beta-23310": { - "sha512": "F1MV+Joc/+dO7J3jrktw7TXv8Rcw9MwFfuUpU/a4YD7QFTRKcjcj6BNHpBOraUeVAjeSpcdZeMxhG2rbD3Rz4w==", + "System.Runtime.InteropServices/4.0.21-beta-23321": { + "sha512": "QaHgkctkiMo9uD8AJmTEw/6/XogvYYp6Z0CH99+4j9WcXaSiBrRs/z0D4Wrcr0qQMls3gv3LDm8fve+XsYO67A==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Runtime.InteropServices.xml", - "es/System.Runtime.InteropServices.xml", - "fr/System.Runtime.InteropServices.xml", - "it/System.Runtime.InteropServices.xml", - "ja/System.Runtime.InteropServices.xml", - "ko/System.Runtime.InteropServices.xml", + "lib/DNXCore50/de/System.Runtime.InteropServices.xml", + "lib/DNXCore50/es/System.Runtime.InteropServices.xml", + "lib/DNXCore50/fr/System.Runtime.InteropServices.xml", + "lib/DNXCore50/it/System.Runtime.InteropServices.xml", + "lib/DNXCore50/ja/System.Runtime.InteropServices.xml", + "lib/DNXCore50/ko/System.Runtime.InteropServices.xml", + "lib/DNXCore50/ru/System.Runtime.InteropServices.xml", "lib/DNXCore50/System.Runtime.InteropServices.dll", + "lib/DNXCore50/System.Runtime.InteropServices.xml", + "lib/DNXCore50/zh-hans/System.Runtime.InteropServices.xml", + "lib/DNXCore50/zh-hant/System.Runtime.InteropServices.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", + "lib/netcore50/de/System.Runtime.InteropServices.xml", + "lib/netcore50/es/System.Runtime.InteropServices.xml", + "lib/netcore50/fr/System.Runtime.InteropServices.xml", + "lib/netcore50/it/System.Runtime.InteropServices.xml", + "lib/netcore50/ja/System.Runtime.InteropServices.xml", + "lib/netcore50/ko/System.Runtime.InteropServices.xml", + "lib/netcore50/ru/System.Runtime.InteropServices.xml", "lib/netcore50/System.Runtime.InteropServices.dll", + "lib/netcore50/System.Runtime.InteropServices.xml", + "lib/netcore50/zh-hans/System.Runtime.InteropServices.xml", + "lib/netcore50/zh-hant/System.Runtime.InteropServices.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/eb4f54e029d04a5abde38eaf61f94346.psmdcp", + "package/services/metadata/core-properties/6c73e975deea494b8deacccbdab960b0.psmdcp", "ref/dotnet/System.Runtime.InteropServices.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Runtime.InteropServices.xml", "runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.dll", - "System.Runtime.InteropServices.nuspec", - "System.Runtime.InteropServices.xml", - "zh-hans/System.Runtime.InteropServices.xml", - "zh-hant/System.Runtime.InteropServices.xml" + "System.Runtime.InteropServices.nuspec" ] }, - "System.Security.Cryptography.Algorithms/4.0.0-beta-23310": { - "sha512": "4O8Ea8Ak3j+oQAX/KyeRlJW3uCR0o8gv5FULkqtSYtmAwbl2MP2LIggOHT36mgsHzLaffTe3jONl41tvzJI4XA==", + "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { + "sha512": "1l9b838cbDrV/KUwlnLmGTF2JbHBt7yJ0tw9mCl2LXZk31y+W0vzo0gA0RUfdr4ASvhF1dOzq6cUwolPScc7wQ==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2918,7 +4237,7 @@ "lib/net46/System.Security.Cryptography.Algorithms.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/926085ab1d124b92aa392493fabe0880.psmdcp", + "package/services/metadata/core-properties/da0ade3d3f8d461c8c5ecd436f3b2a22.psmdcp", "ref/dotnet/System.Security.Cryptography.Algorithms.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -2928,8 +4247,8 @@ "System.Security.Cryptography.Algorithms.nuspec" ] }, - "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23310": { - "sha512": "WNmu8M5GHBOFJlVIL1W3vqjiwQUWcWeDt5f2iMLp66S+oEZlrqpzmVKq+3N1UEUpUXoIPq/vrZT/yQnmnWAUNg==", + "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23311": { + "sha512": "OR5tGGelqx20MGQpWT3kMw1pDg/auXwevZ/SynUt6Dl0Ac2SQ38WEzqmBvovvoTH/sqlKQFvBhQ/0yd4F/b2Ag==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2941,7 +4260,7 @@ "ja/System.Security.Cryptography.Hashing.Algorithms.xml", "ko/System.Security.Cryptography.Hashing.Algorithms.xml", "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll", - "package/services/metadata/core-properties/d96553917d3f4d9fa8827adc4fe855c8.psmdcp", + "package/services/metadata/core-properties/b491eccd83fc4bd0a4d0bcf7686b45f0.psmdcp", "ru/System.Security.Cryptography.Hashing.Algorithms.xml", "System.Security.Cryptography.Hashing.Algorithms.nuspec", "System.Security.Cryptography.Hashing.Algorithms.xml", @@ -2949,8 +4268,8 @@ "zh-hant/System.Security.Cryptography.Hashing.Algorithms.xml" ] }, - "System.Security.Cryptography.Primitives/4.0.0-beta-23310": { - "sha512": "GB0A7LWkHmA61Dt3C5oLLAz/3+Wf89bvHlDfVaUE7ccmdETpg9ULdLZZ4MX3K+oFK9+POaratSNa8+46SC5pZw==", + "System.Security.Cryptography.Primitives/4.0.0-beta-23311": { + "sha512": "znDa+79gOts4Kgfvy/JmZ6m5xLE4q7CJSCxkPFl3t+BJE7IXwwkUQ489oc7E02YrIm1EpnYTcyUnnI0EqmgGXQ==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2961,7 +4280,7 @@ "lib/net46/System.Security.Cryptography.Primitives.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/2af28caf8ec44158aaa8c57f4dfe9ae2.psmdcp", + "package/services/metadata/core-properties/f6e14f094dde4d3b88a6965aafad62f1.psmdcp", "ref/dotnet/System.Security.Cryptography.Primitives.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -3004,8 +4323,8 @@ "System.Security.Principal.nuspec" ] }, - "System.Text.Encoding/4.0.11-beta-23310": { - "sha512": "h0p1C0yctkNK6T2GwO6zypbtGNO/mO0hy7dyjdasoUm74Dqzhe0nvMrRLxviCpyq5tepbLRfuTpNqdnlFA9e8g==", + "System.Text.Encoding/4.0.11-beta-23321": { + "sha512": "ln7Yt9MrJUPmG1kS91ZmBFMCELsxCnP5vctGpqpjzZV9kT7+Tp8oLIftVVes+ET+i1vy/qo3dln+dvwXjjCKHA==", "type": "Package", "files": [ "[Content_Types].xml", @@ -3017,7 +4336,7 @@ "lib/netcore50/System.Text.Encoding.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/627cefac01454f11b15eb8b8f809093e.psmdcp", + "package/services/metadata/core-properties/7c7a11974e514ddd8c6a6c8fb25bbdf9.psmdcp", "ref/dotnet/System.Text.Encoding.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -3028,8 +4347,8 @@ "System.Text.Encoding.nuspec" ] }, - "System.Text.Encoding.Extensions/4.0.11-beta-23310": { - "sha512": "t4LVH9zDRvw913HiL4ADhBSQCF+KgQKT+5+khtDf8JCo6l+KrHY6i9DDZVmpM7yjeYbwhaB2G+yzsRIst9ouGg==", + "System.Text.Encoding.Extensions/4.0.11-beta-23321": { + "sha512": "DfR8dxgjAyrPeFGLG+O9mLvC5eP76hMMLrOsBMqVBnfwxSa/TYjlNfjluR+bHI/qQZ/W0JELViC93lNX9LGsSQ==", "type": "Package", "files": [ "[Content_Types].xml", @@ -3041,7 +4360,7 @@ "lib/netcore50/System.Text.Encoding.Extensions.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/0f9385e1cacf40f989bd7da0015c1a0e.psmdcp", + "package/services/metadata/core-properties/399d4c41e1ee472bb75d0c6e733ee91a.psmdcp", "ref/dotnet/System.Text.Encoding.Extensions.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -3052,70 +4371,27 @@ "System.Text.Encoding.Extensions.nuspec" ] }, - "System.Text.RegularExpressions/4.0.10": { - "sha512": "0vDuHXJePpfMCecWBNOabOKCvzfTbFMNcGgklt3l5+RqHV5SzmF7RUVpuet8V0rJX30ROlL66xdehw2Rdsn2DA==", - "type": "Package", - "files": [ - "[Content_Types].xml", - "_rels/.rels", - "lib/dotnet/System.Text.RegularExpressions.dll", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/548eb1bd139e4c8cbc55e9f7f4f404dd.psmdcp", - "ref/dotnet/de/System.Text.RegularExpressions.xml", - "ref/dotnet/es/System.Text.RegularExpressions.xml", - "ref/dotnet/fr/System.Text.RegularExpressions.xml", - "ref/dotnet/it/System.Text.RegularExpressions.xml", - "ref/dotnet/ja/System.Text.RegularExpressions.xml", - "ref/dotnet/ko/System.Text.RegularExpressions.xml", - "ref/dotnet/ru/System.Text.RegularExpressions.xml", - "ref/dotnet/System.Text.RegularExpressions.dll", - "ref/dotnet/System.Text.RegularExpressions.xml", - "ref/dotnet/zh-hans/System.Text.RegularExpressions.xml", - "ref/dotnet/zh-hant/System.Text.RegularExpressions.xml", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "System.Text.RegularExpressions.nuspec" - ] - }, - "System.Threading/4.0.11-beta-23310": { - "sha512": "PTPQJhwv57e3lDRI/YyLGwwyy57uDsIchBZrgik4IbI3E+mVT55uasNyfVKq0pcwgILVnNcGGeFTQS++BFtQKw==", + "System.Threading/4.0.11-beta-23321": { + "sha512": "PeQJ218GGDU4Cccsp8Im1sO5B4zvMIbLxWnYLVhFIIOry0diB/YhuBjwIG8xDuXNYmlB4qrIfxzBZCrZR4nsCA==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Threading.xml", - "es/System.Threading.xml", - "fr/System.Threading.xml", - "it/System.Threading.xml", - "ja/System.Threading.xml", - "ko/System.Threading.xml", - "lib/DNXCore50/System.Threading.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", - "lib/netcore50/System.Threading.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/5048896aa02a4935abf1b30248a4257c.psmdcp", + "package/services/metadata/core-properties/f541871dcbcc410595a9f545225eebef.psmdcp", "ref/dotnet/System.Threading.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Threading.xml", + "runtime.json", "runtimes/win8-aot/lib/netcore50/System.Threading.dll", - "System.Threading.nuspec", - "System.Threading.xml", - "zh-hans/System.Threading.xml", - "zh-hant/System.Threading.xml" + "System.Threading.nuspec" ] }, "System.Threading.Overlapped/4.0.0": { @@ -3143,42 +4419,93 @@ "System.Threading.Overlapped.nuspec" ] }, - "System.Threading.Tasks/4.0.11-beta-23310": { - "sha512": "hsvtJRImhRLXqTF6SCouZjrD8VhwgcZ2pDloh1fSgwzoe5JM1FR0qtMGsd58o1/+TFJxWKfOQVqYyuTbioO2Xw==", + "System.Threading.Tasks/4.0.11-beta-23321": { + "sha512": "itQejciEb+mDCZdLwL+kjRisCLYXL1ZA15CiqUG6B3tKrDe96vyMFN4I8Lqt3r4GNf3mHNmfuQgPd8aF4qZ4EQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Threading.Tasks.xml", - "es/System.Threading.Tasks.xml", - "fr/System.Threading.Tasks.xml", - "it/System.Threading.Tasks.xml", - "ja/System.Threading.Tasks.xml", - "ko/System.Threading.Tasks.xml", + "lib/DNXCore50/de/System.Threading.Tasks.xml", + "lib/DNXCore50/es/System.Threading.Tasks.xml", + "lib/DNXCore50/fr/System.Threading.Tasks.xml", + "lib/DNXCore50/it/System.Threading.Tasks.xml", + "lib/DNXCore50/ja/System.Threading.Tasks.xml", + "lib/DNXCore50/ko/System.Threading.Tasks.xml", + "lib/DNXCore50/ru/System.Threading.Tasks.xml", "lib/DNXCore50/System.Threading.Tasks.dll", + "lib/DNXCore50/System.Threading.Tasks.xml", + "lib/DNXCore50/zh-hans/System.Threading.Tasks.xml", + "lib/DNXCore50/zh-hant/System.Threading.Tasks.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", + "lib/netcore50/de/System.Threading.Tasks.xml", + "lib/netcore50/es/System.Threading.Tasks.xml", + "lib/netcore50/fr/System.Threading.Tasks.xml", + "lib/netcore50/it/System.Threading.Tasks.xml", + "lib/netcore50/ja/System.Threading.Tasks.xml", + "lib/netcore50/ko/System.Threading.Tasks.xml", + "lib/netcore50/ru/System.Threading.Tasks.xml", "lib/netcore50/System.Threading.Tasks.dll", + "lib/netcore50/System.Threading.Tasks.xml", + "lib/netcore50/zh-hans/System.Threading.Tasks.xml", + "lib/netcore50/zh-hant/System.Threading.Tasks.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/dcdaa0223f864e29b37117b290794690.psmdcp", + "package/services/metadata/core-properties/9aa11746a67a430098b88e80fb39e238.psmdcp", "ref/dotnet/System.Threading.Tasks.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Threading.Tasks.xml", "runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.dll", - "System.Threading.Tasks.nuspec", - "System.Threading.Tasks.xml", - "zh-hans/System.Threading.Tasks.xml", - "zh-hant/System.Threading.Tasks.xml" + "runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Threading.Tasks.xml", + "System.Threading.Tasks.nuspec" + ] + }, + "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { + "sha512": "wDGHoyzdxm2h/QrDxcsCYzeJUvkS9hoW9gllghEvxqzgZoYZfsh4wbxxASDHdUoI1KSeHsdrzLLeIDGhSaWFOQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/de/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/es/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/fr/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/it/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/ja/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/ko/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/ru/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/System.Threading.Tasks.Parallel.dll", + "lib/dotnet/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/zh-hans/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/zh-hant/System.Threading.Tasks.Parallel.xml", + "lib/net45/_._", + "lib/netcore50/System.Threading.Tasks.Parallel.dll", + "lib/netcore50/System.Threading.Tasks.Parallel.xml", + "lib/win8/_._", + "lib/wpa81/_._", + "package/services/metadata/core-properties/1c6312253e7f4649ae729f75de7dd476.psmdcp", + "ref/dotnet/System.Threading.Tasks.Parallel.dll", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.Parallel.dll", + "ref/win8/_._", + "ref/wpa81/_._", + "System.Threading.Tasks.Parallel.nuspec" ] }, - "System.Threading.Thread/4.0.0-beta-23310": { - "sha512": "ZEIZIACgh+YooMOF00BCGbq6O7puvmOwDI/nF9Bywrf/HfuA/HfBnJnBOQ3IU+s2+lQk5Nv3j6lkt2kzhLizRw==", + "System.Threading.Thread/4.0.0-beta-23321": { + "sha512": "LiwEM9FfFcKHbKKbJzBIU4RIVEDK1d3KdwGwV01putKnO2DEsxjRiunjCIaV5NYPqSTi/0gMybkak5iyomOZfA==", "type": "Package", "files": [ "[Content_Types].xml", @@ -3189,7 +4516,7 @@ "lib/net46/System.Threading.Thread.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/78f8c491169d448f8970966fc879c5b3.psmdcp", + "package/services/metadata/core-properties/dc446787b13447b19378f30cb7d39391.psmdcp", "ref/dotnet/System.Threading.Thread.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -3199,8 +4526,8 @@ "System.Threading.Thread.nuspec" ] }, - "System.Threading.ThreadPool/4.0.10-beta-23310": { - "sha512": "pK4zwN/JuqrgGKtDfcaOpvQXgxiq9W1WyQOY7P+71vMiRPmC8VDajMD8zs7fRsnp10aYuNpgDeEuZHPN3nn35Q==", + "System.Threading.ThreadPool/4.0.10-beta-23321": { + "sha512": "C9n2qyHG1ywYg1YGZLfeF4Xn6p0eqjDchxvZNF4Ac3nH4GKmLizFTRLdQ5NbNrPJ0Ry1JDg2LEhcVEaztWk61Q==", "type": "Package", "files": [ "[Content_Types].xml", @@ -3211,7 +4538,7 @@ "lib/net46/System.Threading.ThreadPool.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/427d4b4083374c788472d9c593951139.psmdcp", + "package/services/metadata/core-properties/4fc77e5b5a4241c6b0d212f20d229ef8.psmdcp", "ref/dotnet/System.Threading.ThreadPool.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -3221,8 +4548,8 @@ "System.Threading.ThreadPool.nuspec" ] }, - "System.Threading.Timer/4.0.1-beta-23310": { - "sha512": "OerRw5Mywq9+V1kuyHKi7tPMoX0QPew0fcA4hcAanPvy/ptl3vQEwHk3sv5NXXQIHxCRp5HFGt+W5xpFdHA8VA==", + "System.Threading.Timer/4.0.1-beta-23321": { + "sha512": "tgujlu3HLwLyVl1uDqnNyW3vHMNfiYaUNhdne2qDuyY0S/W5EJLS1eVCofH+s0Em251uLDkJGJPEzo30NWUW8g==", "type": "Package", "files": [ "[Content_Types].xml", @@ -3232,7 +4559,7 @@ "lib/netcore50/System.Threading.Timer.dll", "lib/win81/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/a8f3361dac054af886e2801f53e9d4f4.psmdcp", + "package/services/metadata/core-properties/4eff7df69a0146c8bf5f24a4e7c66492.psmdcp", "ref/dotnet/System.Threading.Timer.dll", "ref/net451/_._", "ref/netcore50/System.Threading.Timer.dll", @@ -3241,136 +4568,25 @@ "runtimes/win8-aot/lib/netcore50/System.Threading.Timer.dll", "System.Threading.Timer.nuspec" ] - }, - "System.Xml.ReaderWriter/4.0.10": { - "sha512": "VdmWWMH7otrYV7D+cviUo7XjX0jzDnD/lTGSZTlZqfIQ5PhXk85j+6P0TK9od3PnOd5ZIM+pOk01G/J+3nh9/w==", - "type": "Package", - "files": [ - "[Content_Types].xml", - "_rels/.rels", - "lib/dotnet/System.Xml.ReaderWriter.dll", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/ef76b636720e4f2d8cfd570899d52df8.psmdcp", - "ref/dotnet/de/System.Xml.ReaderWriter.xml", - "ref/dotnet/es/System.Xml.ReaderWriter.xml", - "ref/dotnet/fr/System.Xml.ReaderWriter.xml", - "ref/dotnet/it/System.Xml.ReaderWriter.xml", - "ref/dotnet/ja/System.Xml.ReaderWriter.xml", - "ref/dotnet/ko/System.Xml.ReaderWriter.xml", - "ref/dotnet/ru/System.Xml.ReaderWriter.xml", - "ref/dotnet/System.Xml.ReaderWriter.dll", - "ref/dotnet/System.Xml.ReaderWriter.xml", - "ref/dotnet/zh-hans/System.Xml.ReaderWriter.xml", - "ref/dotnet/zh-hant/System.Xml.ReaderWriter.xml", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "System.Xml.ReaderWriter.nuspec" - ] - }, - "System.Xml.XDocument/4.0.11-beta-23310": { - "sha512": "UPFwKYiHh9lLDe7zBtJrFMiOJWiuk+XdhZGYJTy0J7fPFVoUx1QAd2PROFV7UtOrZvyw2tkZKSdT1z9FPYBWCA==", - "type": "Package", - "files": [ - "[Content_Types].xml", - "_rels/.rels", - "de/System.Xml.XDocument.xml", - "es/System.Xml.XDocument.xml", - "fr/System.Xml.XDocument.xml", - "it/System.Xml.XDocument.xml", - "ja/System.Xml.XDocument.xml", - "ko/System.Xml.XDocument.xml", - "lib/dotnet/System.Xml.XDocument.dll", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/e992977d01db4fd4af549ae5a0d552dc.psmdcp", - "ref/dotnet/System.Xml.XDocument.dll", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ru/System.Xml.XDocument.xml", - "System.Xml.XDocument.nuspec", - "System.Xml.XDocument.xml", - "zh-hans/System.Xml.XDocument.xml", - "zh-hant/System.Xml.XDocument.xml" - ] - }, - "System.Xml.XmlDocument/4.0.1-beta-23310": { - "sha512": "NqrQC4Pp4EiQuhJ2nogc2kOgg66dLkWs/dHOZFJn1MM2sAvGdnWhKlZMZ+xepUH5YyozXLqAv1ze1yeeK9m+DA==", - "type": "Package", - "files": [ - "[Content_Types].xml", - "_rels/.rels", - "de/System.Xml.XmlDocument.xml", - "es/System.Xml.XmlDocument.xml", - "fr/System.Xml.XmlDocument.xml", - "it/System.Xml.XmlDocument.xml", - "ja/System.Xml.XmlDocument.xml", - "ko/System.Xml.XmlDocument.xml", - "lib/dotnet/System.Xml.XmlDocument.dll", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XmlDocument.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/dfbc6b97ed034d8fa8a254bdfbc9d4f3.psmdcp", - "ref/dotnet/System.Xml.XmlDocument.dll", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XmlDocument.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ru/System.Xml.XmlDocument.xml", - "System.Xml.XmlDocument.nuspec", - "System.Xml.XmlDocument.xml", - "zh-hans/System.Xml.XmlDocument.xml", - "zh-hant/System.Xml.XmlDocument.xml" - ] } }, "projectFileDependencyGroups": { "": [ - "Microsoft.NETCore.Platforms >= 1.0.0", - "Microsoft.NETCore.Runtime.CoreCLR >= 1.0.1-beta-23310", - "System.AppContext >= 4.0.1-beta-23310", - "System.Collections >= 4.0.11-beta-23310", - "System.Console >= 4.0.0-beta-23302", - "System.Diagnostics.Debug >= 4.0.11-beta-23310", - "System.Diagnostics.Process >= 4.1.0-beta-23310", - "System.Diagnostics.Tools >= 4.0.1-beta-23310", - "System.Globalization >= 4.0.11-beta-23310", - "System.IO >= 4.0.11-beta-23310", - "System.IO.FileSystem >= 4.0.1-beta-23302", - "System.IO.FileSystem.Primitives >= 4.0.1-beta-23310", - "System.IO.Pipes >= 4.0.0-beta-23310", - "System.Linq >= 4.0.1-beta-23310", - "System.Private.Uri >= 4.0.1-beta-23310", - "System.Reflection >= 4.1.0-beta-23310", - "System.Reflection.Primitives >= 4.0.1-beta-23310", - "System.Resources.ResourceManager >= 4.0.1-beta-23310", - "System.Runtime >= 4.0.21-beta-23310", - "System.Runtime.Extensions >= 4.0.11-beta-23310", - "System.Runtime.Handles >= 4.0.1-beta-23310", - "System.Runtime.InteropServices >= 4.0.21-beta-23310", - "System.Security.Cryptography.Hashing.Algorithms >= 4.0.0-beta-23310", - "System.Text.Encoding >= 4.0.11-beta-23310", - "System.Text.Encoding.Extensions >= 4.0.11-beta-23310", - "System.Threading >= 4.0.11-beta-23310", - "System.Threading.Tasks >= 4.0.11-beta-23310", - "System.Threading.Thread >= 4.0.0-beta-23310", - "System.Xml.XDocument >= 4.0.11-beta-23310", - "System.Xml.XmlDocument >= 4.0.1-beta-23310" + "Microsoft.NETCore.Platforms >= 1.0.1-beta-23321", + "Microsoft.NETCore.Runtime.CoreCLR >= 1.0.1-beta-23321", + "Microsoft.NETCore.TestHost-x64 >= 1.0.0-beta-23213", + "System.AppContext >= 4.0.1-beta-23321", + "System.Collections.Immutable >= 1.1.36", + "System.Console >= 4.0.0-beta-23321", + "System.Diagnostics.FileVersionInfo >= 4.0.0-beta-23321", + "System.Diagnostics.Process >= 4.1.0-beta-23321", + "System.Dynamic.Runtime >= 4.0.11-beta-23321", + "System.IO.FileSystem >= 4.0.1-beta-23321", + "System.IO.Pipes >= 4.0.0-beta-23321", + "System.Linq >= 4.0.1-beta-23321", + "System.Security.Cryptography.Hashing.Algorithms >= 4.0.0-beta-23311", + "System.Threading.Tasks.Parallel >= 4.0.1-beta-23321", + "System.Threading.Thread >= 4.0.0-beta-23321" ], "DNXCore,Version=v5.0": [] } diff --git a/src/Compilers/VisualBasic/VbcCore/VbcCore.csproj b/src/Compilers/VisualBasic/VbcCore/VbcCore.csproj index fe7da28d37e2e..c4b816eb62210 100644 --- a/src/Compilers/VisualBasic/VbcCore/VbcCore.csproj +++ b/src/Compilers/VisualBasic/VbcCore/VbcCore.csproj @@ -77,6 +77,9 @@ + + PreserveNewest + PreserveNewest diff --git a/src/Compilers/VisualBasic/VbcCore/project.json b/src/Compilers/VisualBasic/VbcCore/project.json index 1c5087f0f5642..22b3ad78321a5 100644 --- a/src/Compilers/VisualBasic/VbcCore/project.json +++ b/src/Compilers/VisualBasic/VbcCore/project.json @@ -1,35 +1,20 @@ { "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.0", - "Microsoft.NETCore.Runtime.CoreCLR": "1.0.1-beta-23310", - "System.AppContext": "4.0.1-beta-23310", - "System.Collections": "4.0.11-beta-23310", - "System.Console": "4.0.0-beta-23302", - "System.Diagnostics.Debug": "4.0.11-beta-23310", - "System.Diagnostics.Process": "4.1.0-beta-23310", - "System.Diagnostics.Tools": "4.0.1-beta-23310", - "System.Globalization": "4.0.11-beta-23310", - "System.IO": "4.0.11-beta-23310", - "System.IO.FileSystem": "4.0.1-beta-23302", - "System.IO.FileSystem.Primitives": "4.0.1-beta-23310", - "System.IO.Pipes": "4.0.0-beta-23310", - "System.Linq": "4.0.1-beta-23310", - "System.Private.Uri": "4.0.1-beta-23310", - "System.Reflection": "4.1.0-beta-23310", - "System.Reflection.Primitives": "4.0.1-beta-23310", - "System.Resources.ResourceManager": "4.0.1-beta-23310", - "System.Runtime": "4.0.21-beta-23310", - "System.Runtime.Extensions": "4.0.11-beta-23310", - "System.Runtime.Handles": "4.0.1-beta-23310", - "System.Runtime.InteropServices": "4.0.21-beta-23310", - "System.Security.Cryptography.Hashing.Algorithms": "4.0.0-beta-23310", - "System.Text.Encoding": "4.0.11-beta-23310", - "System.Text.Encoding.Extensions": "4.0.11-beta-23310", - "System.Threading": "4.0.11-beta-23310", - "System.Threading.Tasks": "4.0.11-beta-23310", - "System.Threading.Thread": "4.0.0-beta-23310", - "System.Xml.XDocument": "4.0.11-beta-23310", - "System.Xml.XmlDocument": "4.0.1-beta-23310", + "Microsoft.NETCore.Platforms": "1.0.1-beta-23321", + "Microsoft.NETCore.Runtime.CoreCLR": "1.0.1-beta-23321", + "Microsoft.NETCore.TestHost-x64": "1.0.0-beta-23213", + "System.AppContext": "4.0.1-beta-23321", + "System.Collections.Immutable": "1.1.36", + "System.Console": "4.0.0-beta-23321", + "System.Diagnostics.FileVersionInfo": "4.0.0-beta-23321", + "System.Diagnostics.Process": "4.1.0-beta-23321", + "System.Dynamic.Runtime": "4.0.11-beta-23321", + "System.IO.FileSystem": "4.0.1-beta-23321", + "System.IO.Pipes": "4.0.0-beta-23321", + "System.Linq": "4.0.1-beta-23321", + "System.Security.Cryptography.Hashing.Algorithms": "4.0.0-beta-23311", + "System.Threading.Tasks.Parallel": "4.0.1-beta-23321", + "System.Threading.Thread": "4.0.0-beta-23321", }, "frameworks": { "dnxcore50": { @@ -37,7 +22,7 @@ } }, "runtimes": { - "win-x64": {}, - "linux-x64": {} + "win7-x64": { }, + "ubuntu.14.04-x64": { }, } } diff --git a/src/Compilers/VisualBasic/VbcCore/project.lock.json b/src/Compilers/VisualBasic/VbcCore/project.lock.json index 4b2152a090a63..420c33978f0a4 100644 --- a/src/Compilers/VisualBasic/VbcCore/project.lock.json +++ b/src/Compilers/VisualBasic/VbcCore/project.lock.json @@ -4,86 +4,77 @@ "targets": { "DNXCore,Version=v5.0": { "Microsoft.DiaSymReader.Native/1.1.0-alpha2": {}, - "Microsoft.NETCore.Platforms/1.0.0": {}, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23310": { - "dependencies": { - "Microsoft.NETCore.Windows.ApiSets": "[1.0.1-beta-23310, )", - "System.Collections": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Diagnostics.Contracts": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Debug": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Diagnostics.StackTrace": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Tools": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Tracing": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Globalization": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Globalization.Calendars": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.IO": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.ObjectModel": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Private.Uri": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Reflection": "[4.1.0-beta-23310, 4.1.0-beta-23310]", - "System.Reflection.Extensions": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Reflection.Primitives": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Resources.ResourceManager": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Runtime": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Runtime.Extensions": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Runtime.Handles": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Runtime.InteropServices": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Text.Encoding": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Text.Encoding.Extensions": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading.Tasks": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading.Timer": "[4.0.1-beta-23310, 4.0.1-beta-23310]" - } - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23310": {}, - "Microsoft.Win32.Primitives/4.0.0": { - "dependencies": { - "System.Runtime": "[4.0.20, )", - "System.Runtime.InteropServices": "[4.0.20, )" - }, - "compile": { - "ref/dotnet/Microsoft.Win32.Primitives.dll": {} - }, - "runtime": { - "lib/dotnet/Microsoft.Win32.Primitives.dll": {} - } - }, - "Microsoft.Win32.Registry/4.0.0-beta-23310": { + "Microsoft.NETCore.Platforms/1.0.1-beta-23321": {}, + "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "dependencies": { + "Microsoft.NETCore.Windows.ApiSets": "[1.0.1-beta-23321, )", + "System.Collections": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Diagnostics.Contracts": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Debug": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Diagnostics.StackTrace": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Tools": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Tracing": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Globalization": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Globalization.Calendars": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.IO": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.ObjectModel": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Private.Uri": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Reflection": "[4.1.0-beta-23321, 4.1.0-beta-23321]", + "System.Reflection.Extensions": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Reflection.Primitives": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Resources.ResourceManager": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Runtime": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Runtime.Extensions": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Runtime.Handles": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Runtime.InteropServices": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Text.Encoding": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Text.Encoding.Extensions": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading.Tasks": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading.Timer": "[4.0.1-beta-23321, 4.0.1-beta-23321]" + } + }, + "Microsoft.NETCore.TestHost-x64/1.0.0-beta-23213": {}, + "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23321": {}, + "System.AppContext/4.0.1-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )" + "System.Runtime": "[4.0.0, )" }, "compile": { - "ref/dotnet/Microsoft.Win32.Registry.dll": {} + "ref/dotnet/System.AppContext.dll": {} }, "runtime": { - "lib/DNXCore50/Microsoft.Win32.Registry.dll": {} + "lib/DNXCore50/System.AppContext.dll": {} } }, - "System.AppContext/4.0.1-beta-23310": { + "System.Collections/4.0.11-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )" + "System.Runtime": "[4.0.21-beta-23321, )" }, "compile": { - "ref/dotnet/System.AppContext.dll": {} + "ref/dotnet/System.Collections.dll": {} }, "runtime": { - "lib/DNXCore50/System.AppContext.dll": {} + "lib/DNXCore50/System.Collections.dll": {} } }, - "System.Collections/4.0.11-beta-23310": { + "System.Collections.Concurrent/4.0.10": { "dependencies": { - "System.Runtime": "[4.0.21-beta-23310, )" + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Globalization": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Collections.dll": {} + "ref/dotnet/System.Collections.Concurrent.dll": {} }, "runtime": { - "lib/DNXCore50/System.Collections.dll": {} + "lib/dotnet/System.Collections.Concurrent.dll": {} } }, "System.Collections.Immutable/1.1.36": { @@ -94,26 +85,16 @@ "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} } }, - "System.Console/4.0.0-beta-23302": { + "System.Console/4.0.0-beta-23321": { "dependencies": { - "System.IO": "[4.0.10, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Console.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Console.dll": {} } }, - "System.Diagnostics.Contracts/4.0.1-beta-23310": { + "System.Diagnostics.Contracts/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -124,47 +105,34 @@ "lib/DNXCore50/System.Diagnostics.Contracts.dll": {} } }, - "System.Diagnostics.Debug/4.0.11-beta-23310": { + "System.Diagnostics.Debug/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )" }, - "runtime": { - "lib/DNXCore50/System.Diagnostics.Debug.dll": {} + "compile": { + "ref/dotnet/System.Diagnostics.FileVersionInfo.dll": {} } }, - "System.Diagnostics.Process/4.1.0-beta-23310": { + "System.Diagnostics.Process/4.1.0-beta-23321": { "dependencies": { - "Microsoft.Win32.Primitives": "[4.0.0, )", - "Microsoft.Win32.Registry": "[4.0.0-beta-23310, )", - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.IO.FileSystem": "[4.0.0, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )", - "System.Threading.Thread": "[4.0.0-beta-23310, )", - "System.Threading.ThreadPool": "[4.0.10-beta-23310, )" + "System.Text.Encoding": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Diagnostics.Process.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Diagnostics.Process.dll": {} } }, - "System.Diagnostics.StackTrace/4.0.1-beta-23310": { + "System.Diagnostics.StackTrace/4.0.1-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -176,7 +144,7 @@ "lib/DNXCore50/System.Diagnostics.StackTrace.dll": {} } }, - "System.Diagnostics.Tools/4.0.1-beta-23310": { + "System.Diagnostics.Tools/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -187,7 +155,7 @@ "lib/DNXCore50/System.Diagnostics.Tools.dll": {} } }, - "System.Diagnostics.Tracing/4.0.21-beta-23310": { + "System.Diagnostics.Tracing/4.0.21-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -198,7 +166,32 @@ "lib/DNXCore50/System.Diagnostics.Tracing.dll": {} } }, - "System.Globalization/4.0.11-beta-23310": { + "System.Dynamic.Runtime/4.0.11-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Linq.Expressions": "[4.0.10, )", + "System.ObjectModel": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Emit": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Dynamic.Runtime.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Dynamic.Runtime.dll": {} + } + }, + "System.Globalization/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -209,7 +202,7 @@ "lib/DNXCore50/System.Globalization.dll": {} } }, - "System.Globalization.Calendars/4.0.1-beta-23310": { + "System.Globalization.Calendars/4.0.1-beta-23321": { "dependencies": { "System.Globalization": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -221,7 +214,7 @@ "lib/DNXCore50/System.Globalization.Calendars.dll": {} } }, - "System.IO/4.0.11-beta-23310": { + "System.IO/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.20, )", "System.Text.Encoding": "[4.0.0, )", @@ -234,30 +227,20 @@ "lib/DNXCore50/System.IO.dll": {} } }, - "System.IO.FileSystem/4.0.1-beta-23302": { + "System.IO.FileSystem/4.0.1-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.IO": "[4.0.10, )", + "System.IO": "[4.0.0, )", "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Overlapped": "[4.0.0, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Text.Encoding": "[4.0.0, )", + "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.IO.FileSystem.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.IO.FileSystem.dll": {} } }, - "System.IO.FileSystem.Primitives/4.0.1-beta-23310": { + "System.IO.FileSystem.Primitives/4.0.0": { "dependencies": { "System.Runtime": "[4.0.20, )" }, @@ -268,28 +251,19 @@ "lib/dotnet/System.IO.FileSystem.Primitives.dll": {} } }, - "System.IO.Pipes/4.0.0-beta-23310": { + "System.IO.Pipes/4.0.0-beta-23321": { "dependencies": { - "System.IO": "[4.0.10, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", "System.Security.Principal": "[4.0.0, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Overlapped": "[4.0.0, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.IO.Pipes.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.IO.Pipes.dll": {} } }, - "System.Linq/4.0.1-beta-23310": { + "System.Linq/4.0.1-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", @@ -304,7 +278,32 @@ "lib/dotnet/System.Linq.dll": {} } }, - "System.ObjectModel/4.0.11-beta-23310": { + "System.Linq.Expressions/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.0, )", + "System.Diagnostics.Debug": "[4.0.0, )", + "System.Globalization": "[4.0.0, )", + "System.IO": "[4.0.0, )", + "System.Linq": "[4.0.0, )", + "System.ObjectModel": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit": "[4.0.0, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.0, )", + "System.Threading": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Linq.Expressions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Linq.Expressions.dll": {} + } + }, + "System.ObjectModel/4.0.11-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", @@ -319,15 +318,12 @@ "lib/dotnet/System.ObjectModel.dll": {} } }, - "System.Private.Uri/4.0.1-beta-23310": { + "System.Private.Uri/4.0.1-beta-23321": { "compile": { "ref/dnxcore50/_._": {} - }, - "runtime": { - "lib/DNXCore50/System.Private.Uri.dll": {} } }, - "System.Reflection/4.1.0-beta-23310": { + "System.Reflection/4.1.0-beta-23321": { "dependencies": { "System.IO": "[4.0.0, )", "System.Reflection.Primitives": "[4.0.0, )", @@ -340,7 +336,35 @@ "lib/DNXCore50/System.Reflection.dll": {} } }, - "System.Reflection.Extensions/4.0.1-beta-23310": { + "System.Reflection.Emit/4.0.0": { + "dependencies": { + "System.IO": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.dll": {} + } + }, + "System.Reflection.Emit.ILGeneration/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.ILGeneration.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.ILGeneration.dll": {} + } + }, + "System.Reflection.Extensions/4.0.1-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -363,7 +387,7 @@ "lib/portable-net45+win8/System.Reflection.Metadata.dll": {} } }, - "System.Reflection.Primitives/4.0.1-beta-23310": { + "System.Reflection.Primitives/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -374,7 +398,19 @@ "lib/DNXCore50/System.Reflection.Primitives.dll": {} } }, - "System.Resources.ResourceManager/4.0.1-beta-23310": { + "System.Reflection.TypeExtensions/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.TypeExtensions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.TypeExtensions.dll": {} + } + }, + "System.Resources.ResourceManager/4.0.1-beta-23321": { "dependencies": { "System.Globalization": "[4.0.0, )", "System.Reflection": "[4.0.0, )", @@ -387,9 +423,9 @@ "lib/DNXCore50/System.Resources.ResourceManager.dll": {} } }, - "System.Runtime/4.0.21-beta-23310": { + "System.Runtime/4.0.21-beta-23321": { "dependencies": { - "System.Private.Uri": "[4.0.1-beta-23310, )" + "System.Private.Uri": "[4.0.1-beta-23321, )" }, "compile": { "ref/dotnet/System.Runtime.dll": {} @@ -398,18 +434,15 @@ "lib/DNXCore50/System.Runtime.dll": {} } }, - "System.Runtime.Extensions/4.0.11-beta-23310": { + "System.Runtime.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.20, )" }, "compile": { "ref/dotnet/System.Runtime.Extensions.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Runtime.Extensions.dll": {} } }, - "System.Runtime.Handles/4.0.1-beta-23310": { + "System.Runtime.Handles/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -420,7 +453,7 @@ "lib/DNXCore50/System.Runtime.Handles.dll": {} } }, - "System.Runtime.InteropServices/4.0.21-beta-23310": { + "System.Runtime.InteropServices/4.0.21-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Reflection.Primitives": "[4.0.0, )", @@ -434,13 +467,13 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, - "System.Security.Cryptography.Algorithms/4.0.0-beta-23310": { + "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.IO": "[4.0.10, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Security.Cryptography.Primitives": "[4.0.0-beta-23310, )", + "System.Security.Cryptography.Primitives": "[4.0.0-beta-23311, )", "System.Text.Encoding": "[4.0.0, )", "System.Text.Encoding.Extensions": "[4.0.0, )" }, @@ -451,10 +484,10 @@ "lib/DNXCore50/System.Security.Cryptography.Algorithms.dll": {} } }, - "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23310": { + "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.Runtime": "[4.0.0, )", - "System.Security.Cryptography.Algorithms": "[4.0.0-beta-23310, )" + "System.Security.Cryptography.Algorithms": "[4.0.0-beta-23311, )" }, "compile": { "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll": {} @@ -463,7 +496,7 @@ "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll": {} } }, - "System.Security.Cryptography.Primitives/4.0.0-beta-23310": { + "System.Security.Cryptography.Primitives/4.0.0-beta-23311": { "dependencies": { "System.Diagnostics.Debug": "[4.0.0, )", "System.Globalization": "[4.0.0, )", @@ -491,7 +524,7 @@ "lib/dotnet/System.Security.Principal.dll": {} } }, - "System.Text.Encoding/4.0.11-beta-23310": { + "System.Text.Encoding/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -502,7 +535,7 @@ "lib/DNXCore50/System.Text.Encoding.dll": {} } }, - "System.Text.Encoding.Extensions/4.0.11-beta-23310": { + "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Text.Encoding": "[4.0.10, )" @@ -514,58 +547,45 @@ "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {} } }, - "System.Text.RegularExpressions/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/dotnet/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.0.11-beta-23310": { + "System.Threading/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Threading.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Threading.dll": {} } }, - "System.Threading.Overlapped/4.0.0": { + "System.Threading.Tasks/4.0.11-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )", - "System.Runtime.Handles": "[4.0.0, )" + "System.Runtime": "[4.0.0, )" }, "compile": { - "ref/dotnet/System.Threading.Overlapped.dll": {} + "ref/dotnet/System.Threading.Tasks.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Overlapped.dll": {} + "lib/DNXCore50/System.Threading.Tasks.dll": {} } }, - "System.Threading.Tasks/4.0.11-beta-23310": { + "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )" + "System.Collections.Concurrent": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Threading.Tasks.dll": {} + "ref/dotnet/System.Threading.Tasks.Parallel.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Tasks.dll": {} + "lib/dotnet/System.Threading.Tasks.Parallel.dll": {} } }, - "System.Threading.Thread/4.0.0-beta-23310": { + "System.Threading.Thread/4.0.0-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -576,31 +596,67 @@ "lib/DNXCore50/System.Threading.Thread.dll": {} } }, - "System.Threading.ThreadPool/4.0.10-beta-23310": { + "System.Threading.Timer/4.0.1-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.0, )" + "System.Runtime": "[4.0.0, )" }, "compile": { - "ref/dotnet/System.Threading.ThreadPool.dll": {} + "ref/dotnet/System.Threading.Timer.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.ThreadPool.dll": {} + "lib/DNXCore50/System.Threading.Timer.dll": {} } - }, - "System.Threading.Timer/4.0.1-beta-23310": { + } + }, + "DNXCore,Version=v5.0/ubuntu.14.04-x64": { + "Microsoft.DiaSymReader.Native/1.1.0-alpha2": {}, + "Microsoft.NETCore.Platforms/1.0.1-beta-23321": {}, + "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "dependencies": { + "Microsoft.NETCore.Windows.ApiSets": "[1.0.1-beta-23321, )", + "System.Collections": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Diagnostics.Contracts": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Debug": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Diagnostics.StackTrace": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Tools": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Tracing": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Globalization": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Globalization.Calendars": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.IO": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.ObjectModel": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Private.Uri": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Reflection": "[4.1.0-beta-23321, 4.1.0-beta-23321]", + "System.Reflection.Extensions": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Reflection.Primitives": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Resources.ResourceManager": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Runtime": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Runtime.Extensions": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Runtime.Handles": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Runtime.InteropServices": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Text.Encoding": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Text.Encoding.Extensions": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading.Tasks": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading.Timer": "[4.0.1-beta-23321, 4.0.1-beta-23321]" + } + }, + "Microsoft.NETCore.TestHost-x64/1.0.0-beta-23213": {}, + "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23321": {}, + "Microsoft.Win32.Primitives/4.0.0": { "dependencies": { - "System.Runtime": "[4.0.0, )" + "System.Runtime": "[4.0.20, )", + "System.Runtime.InteropServices": "[4.0.20, )" }, "compile": { - "ref/dotnet/System.Threading.Timer.dll": {} + "ref/dotnet/Microsoft.Win32.Primitives.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Timer.dll": {} + "lib/dotnet/Microsoft.Win32.Primitives.dll": {} } }, - "System.Xml.ReaderWriter/4.0.10": { + "runtime.linux.System.Diagnostics.Process/4.1.0-beta-23321": { "dependencies": { + "Microsoft.Win32.Primitives": "[4.0.0, )", "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", "System.Globalization": "[4.0.10, )", @@ -610,125 +666,152 @@ "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", "System.Runtime.InteropServices": "[4.0.20, )", "System.Text.Encoding": "[4.0.10, )", "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Text.RegularExpressions": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )", + "System.Threading.ThreadPool": "[4.0.10-beta-23321, )" }, "compile": { - "ref/dotnet/System.Xml.ReaderWriter.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/System.Xml.ReaderWriter.dll": {} + "lib/dotnet/System.Diagnostics.Process.dll": {} } }, - "System.Xml.XDocument/4.0.11-beta-23310": { + "runtime.linux.System.IO.FileSystem/4.0.1-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tools": "[4.0.0, )", - "System.Globalization": "[4.0.10, )", "System.IO": "[4.0.10, )", - "System.Reflection": "[4.0.10, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )", "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", "System.Threading": "[4.0.10, )", - "System.Xml.ReaderWriter": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/linux/lib/dotnet/System.IO.FileSystem.dll": {} + } + }, + "runtime.linux.System.Runtime.Extensions/4.0.11-beta-23321": { + "compile": { + "ref/dotnet/_._": {} }, + "runtime": { + "lib/dotnet/System.Runtime.Extensions.dll": {} + } + }, + "runtime.ubuntu.14.04-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { "compile": { - "ref/dotnet/System.Xml.XDocument.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/System.Xml.XDocument.dll": {} + "runtimes/ubuntu.14.04-x64/lib/dotnet/mscorlib.dll": {} + }, + "native": { + "runtimes/ubuntu.14.04-x64/native/libcoreclr.so": {}, + "runtimes/ubuntu.14.04-x64/native/libdbgshim.so": {}, + "runtimes/ubuntu.14.04-x64/native/libmscordaccore.so": {}, + "runtimes/ubuntu.14.04-x64/native/libmscordbi.so": {}, + "runtimes/ubuntu.14.04-x64/native/libsos.so": {}, + "runtimes/ubuntu.14.04-x64/native/libsosplugin.so": {}, + "runtimes/ubuntu.14.04-x64/native/System.Native.so": {}, + "runtimes/ubuntu.14.04-x64/native/System.Net.Http.Native.so": {}, + "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.so": {} } }, - "System.Xml.XmlDocument/4.0.1-beta-23310": { + "runtime.unix.System.Console/4.0.0-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", "System.IO": "[4.0.10, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )", "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", "System.Threading": "[4.0.10, )", - "System.Xml.ReaderWriter": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Xml.XmlDocument.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/System.Xml.XmlDocument.dll": {} + "lib/dotnet/System.Console.dll": {} } - } - }, - "DNXCore,Version=v5.0/linux-x64": { - "Microsoft.DiaSymReader.Native/1.1.0-alpha2": {}, - "Microsoft.NETCore.Platforms/1.0.0": {}, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23310": { - "dependencies": { - "Microsoft.NETCore.Windows.ApiSets": "[1.0.1-beta-23310, )", - "System.Collections": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Diagnostics.Contracts": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Debug": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Diagnostics.StackTrace": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Tools": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Tracing": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Globalization": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Globalization.Calendars": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.IO": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.ObjectModel": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Private.Uri": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Reflection": "[4.1.0-beta-23310, 4.1.0-beta-23310]", - "System.Reflection.Extensions": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Reflection.Primitives": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Resources.ResourceManager": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Runtime": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Runtime.Extensions": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Runtime.Handles": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Runtime.InteropServices": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Text.Encoding": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Text.Encoding.Extensions": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading.Tasks": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading.Timer": "[4.0.1-beta-23310, 4.0.1-beta-23310]" - } - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23310": {}, - "Microsoft.Win32.Primitives/4.0.0": { + }, + "runtime.unix.System.Diagnostics.Debug/4.0.11-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "lib/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "runtime.unix.System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { "dependencies": { + "System.IO": "[4.0.10, )", + "System.IO.FileSystem": "[4.0.0, )", + "System.Reflection.Metadata": "[1.0.22, )", "System.Runtime": "[4.0.20, )", - "System.Runtime.InteropServices": "[4.0.20, )" + "System.Runtime.Extensions": "[4.0.10, )" }, "compile": { - "ref/dotnet/Microsoft.Win32.Primitives.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/Microsoft.Win32.Primitives.dll": {} + "lib/dotnet/System.Diagnostics.FileVersionInfo.dll": {} } }, - "Microsoft.Win32.Registry/4.0.0-beta-23310": { + "runtime.unix.System.IO.Pipes/4.0.0-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.IO": "[4.0.10, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )" + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Security.Principal": "[4.0.0, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/Microsoft.Win32.Registry.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/DNXCore50/Microsoft.Win32.Registry.dll": {} + "lib/dotnet/System.IO.Pipes.dll": {} + } + }, + "runtime.unix.System.Private.Uri/4.0.1-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "lib/dotnet/System.Private.Uri.dll": {} } }, - "System.AppContext/4.0.1-beta-23310": { + "runtime.unix.System.Threading/4.0.11-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "lib/dotnet/System.Threading.dll": {} + } + }, + "System.AppContext/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -739,9 +822,9 @@ "lib/DNXCore50/System.AppContext.dll": {} } }, - "System.Collections/4.0.11-beta-23310": { + "System.Collections/4.0.11-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.21-beta-23310, )" + "System.Runtime": "[4.0.21-beta-23321, )" }, "compile": { "ref/dotnet/System.Collections.dll": {} @@ -750,6 +833,25 @@ "lib/DNXCore50/System.Collections.dll": {} } }, + "System.Collections.Concurrent/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Globalization": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Collections.Concurrent.dll": {} + }, + "runtime": { + "lib/dotnet/System.Collections.Concurrent.dll": {} + } + }, "System.Collections.Immutable/1.1.36": { "compile": { "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} @@ -758,26 +860,16 @@ "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} } }, - "System.Console/4.0.0-beta-23302": { + "System.Console/4.0.0-beta-23321": { "dependencies": { - "System.IO": "[4.0.10, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Console.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Console.dll": {} } }, - "System.Diagnostics.Contracts/4.0.1-beta-23310": { + "System.Diagnostics.Contracts/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -788,47 +880,34 @@ "lib/DNXCore50/System.Diagnostics.Contracts.dll": {} } }, - "System.Diagnostics.Debug/4.0.11-beta-23310": { + "System.Diagnostics.Debug/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )" }, - "runtime": { - "lib/DNXCore50/System.Diagnostics.Debug.dll": {} + "compile": { + "ref/dotnet/System.Diagnostics.FileVersionInfo.dll": {} } }, - "System.Diagnostics.Process/4.1.0-beta-23310": { + "System.Diagnostics.Process/4.1.0-beta-23321": { "dependencies": { - "Microsoft.Win32.Primitives": "[4.0.0, )", - "Microsoft.Win32.Registry": "[4.0.0-beta-23310, )", - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.IO.FileSystem": "[4.0.0, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )", - "System.Threading.Thread": "[4.0.0-beta-23310, )", - "System.Threading.ThreadPool": "[4.0.10-beta-23310, )" + "System.Text.Encoding": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Diagnostics.Process.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Diagnostics.Process.dll": {} } }, - "System.Diagnostics.StackTrace/4.0.1-beta-23310": { + "System.Diagnostics.StackTrace/4.0.1-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -840,7 +919,7 @@ "lib/DNXCore50/System.Diagnostics.StackTrace.dll": {} } }, - "System.Diagnostics.Tools/4.0.1-beta-23310": { + "System.Diagnostics.Tools/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -851,7 +930,7 @@ "lib/DNXCore50/System.Diagnostics.Tools.dll": {} } }, - "System.Diagnostics.Tracing/4.0.21-beta-23310": { + "System.Diagnostics.Tracing/4.0.21-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -862,7 +941,32 @@ "lib/DNXCore50/System.Diagnostics.Tracing.dll": {} } }, - "System.Globalization/4.0.11-beta-23310": { + "System.Dynamic.Runtime/4.0.11-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Linq.Expressions": "[4.0.10, )", + "System.ObjectModel": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Emit": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Dynamic.Runtime.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Dynamic.Runtime.dll": {} + } + }, + "System.Globalization/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -873,7 +977,7 @@ "lib/DNXCore50/System.Globalization.dll": {} } }, - "System.Globalization.Calendars/4.0.1-beta-23310": { + "System.Globalization.Calendars/4.0.1-beta-23321": { "dependencies": { "System.Globalization": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -885,7 +989,7 @@ "lib/DNXCore50/System.Globalization.Calendars.dll": {} } }, - "System.IO/4.0.11-beta-23310": { + "System.IO/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.20, )", "System.Text.Encoding": "[4.0.0, )", @@ -898,30 +1002,20 @@ "lib/DNXCore50/System.IO.dll": {} } }, - "System.IO.FileSystem/4.0.1-beta-23302": { + "System.IO.FileSystem/4.0.1-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.IO": "[4.0.10, )", + "System.IO": "[4.0.0, )", "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Overlapped": "[4.0.0, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Text.Encoding": "[4.0.0, )", + "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.IO.FileSystem.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.IO.FileSystem.dll": {} } }, - "System.IO.FileSystem.Primitives/4.0.1-beta-23310": { + "System.IO.FileSystem.Primitives/4.0.0": { "dependencies": { "System.Runtime": "[4.0.20, )" }, @@ -932,28 +1026,19 @@ "lib/dotnet/System.IO.FileSystem.Primitives.dll": {} } }, - "System.IO.Pipes/4.0.0-beta-23310": { + "System.IO.Pipes/4.0.0-beta-23321": { "dependencies": { - "System.IO": "[4.0.10, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", "System.Security.Principal": "[4.0.0, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Overlapped": "[4.0.0, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.IO.Pipes.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.IO.Pipes.dll": {} } }, - "System.Linq/4.0.1-beta-23310": { + "System.Linq/4.0.1-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", @@ -968,7 +1053,32 @@ "lib/dotnet/System.Linq.dll": {} } }, - "System.ObjectModel/4.0.11-beta-23310": { + "System.Linq.Expressions/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.0, )", + "System.Diagnostics.Debug": "[4.0.0, )", + "System.Globalization": "[4.0.0, )", + "System.IO": "[4.0.0, )", + "System.Linq": "[4.0.0, )", + "System.ObjectModel": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit": "[4.0.0, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.0, )", + "System.Threading": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Linq.Expressions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Linq.Expressions.dll": {} + } + }, + "System.ObjectModel/4.0.11-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", @@ -983,15 +1093,12 @@ "lib/dotnet/System.ObjectModel.dll": {} } }, - "System.Private.Uri/4.0.1-beta-23310": { + "System.Private.Uri/4.0.1-beta-23321": { "compile": { "ref/dnxcore50/_._": {} - }, - "runtime": { - "lib/DNXCore50/System.Private.Uri.dll": {} } }, - "System.Reflection/4.1.0-beta-23310": { + "System.Reflection/4.1.0-beta-23321": { "dependencies": { "System.IO": "[4.0.0, )", "System.Reflection.Primitives": "[4.0.0, )", @@ -1004,7 +1111,49 @@ "lib/DNXCore50/System.Reflection.dll": {} } }, - "System.Reflection.Extensions/4.0.1-beta-23310": { + "System.Reflection.Emit/4.0.0": { + "dependencies": { + "System.IO": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.dll": {} + } + }, + "System.Reflection.Emit.ILGeneration/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.ILGeneration.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.ILGeneration.dll": {} + } + }, + "System.Reflection.Emit.Lightweight/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.Lightweight.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.Lightweight.dll": {} + } + }, + "System.Reflection.Extensions/4.0.1-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -1027,7 +1176,7 @@ "lib/portable-net45+win8/System.Reflection.Metadata.dll": {} } }, - "System.Reflection.Primitives/4.0.1-beta-23310": { + "System.Reflection.Primitives/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1038,7 +1187,19 @@ "lib/DNXCore50/System.Reflection.Primitives.dll": {} } }, - "System.Resources.ResourceManager/4.0.1-beta-23310": { + "System.Reflection.TypeExtensions/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.TypeExtensions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.TypeExtensions.dll": {} + } + }, + "System.Resources.ResourceManager/4.0.1-beta-23321": { "dependencies": { "System.Globalization": "[4.0.0, )", "System.Reflection": "[4.0.0, )", @@ -1051,9 +1212,9 @@ "lib/DNXCore50/System.Resources.ResourceManager.dll": {} } }, - "System.Runtime/4.0.21-beta-23310": { + "System.Runtime/4.0.21-beta-23321": { "dependencies": { - "System.Private.Uri": "[4.0.1-beta-23310, )" + "System.Private.Uri": "[4.0.1-beta-23321, )" }, "compile": { "ref/dotnet/System.Runtime.dll": {} @@ -1062,18 +1223,15 @@ "lib/DNXCore50/System.Runtime.dll": {} } }, - "System.Runtime.Extensions/4.0.11-beta-23310": { + "System.Runtime.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.20, )" }, "compile": { "ref/dotnet/System.Runtime.Extensions.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Runtime.Extensions.dll": {} } }, - "System.Runtime.Handles/4.0.1-beta-23310": { + "System.Runtime.Handles/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1084,7 +1242,7 @@ "lib/DNXCore50/System.Runtime.Handles.dll": {} } }, - "System.Runtime.InteropServices/4.0.21-beta-23310": { + "System.Runtime.InteropServices/4.0.21-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Reflection.Primitives": "[4.0.0, )", @@ -1098,13 +1256,13 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, - "System.Security.Cryptography.Algorithms/4.0.0-beta-23310": { + "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.IO": "[4.0.10, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Security.Cryptography.Primitives": "[4.0.0-beta-23310, )", + "System.Security.Cryptography.Primitives": "[4.0.0-beta-23311, )", "System.Text.Encoding": "[4.0.0, )", "System.Text.Encoding.Extensions": "[4.0.0, )" }, @@ -1115,10 +1273,10 @@ "lib/DNXCore50/System.Security.Cryptography.Algorithms.dll": {} } }, - "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23310": { + "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.Runtime": "[4.0.0, )", - "System.Security.Cryptography.Algorithms": "[4.0.0-beta-23310, )" + "System.Security.Cryptography.Algorithms": "[4.0.0-beta-23311, )" }, "compile": { "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll": {} @@ -1127,7 +1285,7 @@ "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll": {} } }, - "System.Security.Cryptography.Primitives/4.0.0-beta-23310": { + "System.Security.Cryptography.Primitives/4.0.0-beta-23311": { "dependencies": { "System.Diagnostics.Debug": "[4.0.0, )", "System.Globalization": "[4.0.0, )", @@ -1155,7 +1313,7 @@ "lib/dotnet/System.Security.Principal.dll": {} } }, - "System.Text.Encoding/4.0.11-beta-23310": { + "System.Text.Encoding/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1166,7 +1324,7 @@ "lib/DNXCore50/System.Text.Encoding.dll": {} } }, - "System.Text.Encoding.Extensions/4.0.11-beta-23310": { + "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Text.Encoding": "[4.0.10, )" @@ -1178,58 +1336,45 @@ "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {} } }, - "System.Text.RegularExpressions/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/dotnet/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.0.11-beta-23310": { + "System.Threading/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Threading.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Threading.dll": {} } }, - "System.Threading.Overlapped/4.0.0": { + "System.Threading.Tasks/4.0.11-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )", - "System.Runtime.Handles": "[4.0.0, )" + "System.Runtime": "[4.0.0, )" }, "compile": { - "ref/dotnet/System.Threading.Overlapped.dll": {} + "ref/dotnet/System.Threading.Tasks.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Overlapped.dll": {} + "lib/DNXCore50/System.Threading.Tasks.dll": {} } }, - "System.Threading.Tasks/4.0.11-beta-23310": { + "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )" + "System.Collections.Concurrent": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Threading.Tasks.dll": {} + "ref/dotnet/System.Threading.Tasks.Parallel.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Tasks.dll": {} + "lib/dotnet/System.Threading.Tasks.Parallel.dll": {} } }, - "System.Threading.Thread/4.0.0-beta-23310": { + "System.Threading.Thread/4.0.0-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1240,7 +1385,7 @@ "lib/DNXCore50/System.Threading.Thread.dll": {} } }, - "System.Threading.ThreadPool/4.0.10-beta-23310": { + "System.Threading.ThreadPool/4.0.10-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Runtime.InteropServices": "[4.0.0, )" @@ -1252,7 +1397,7 @@ "lib/DNXCore50/System.Threading.ThreadPool.dll": {} } }, - "System.Threading.Timer/4.0.1-beta-23310": { + "System.Threading.Timer/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1262,142 +1407,362 @@ "runtime": { "lib/DNXCore50/System.Threading.Timer.dll": {} } + } + }, + "DNXCore,Version=v5.0/win7-x64": { + "Microsoft.DiaSymReader.Native/1.1.0-alpha2": { + "native": { + "runtimes/win/native/Microsoft.DiaSymReader.Native.amd64.dll": {}, + "runtimes/win/native/Microsoft.DiaSymReader.Native.x86.dll": {} + } + }, + "Microsoft.NETCore.Platforms/1.0.1-beta-23321": {}, + "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "dependencies": { + "Microsoft.NETCore.Windows.ApiSets": "[1.0.1-beta-23321, )", + "System.Collections": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Diagnostics.Contracts": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Debug": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Diagnostics.StackTrace": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Tools": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Diagnostics.Tracing": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Globalization": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Globalization.Calendars": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.IO": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.ObjectModel": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Private.Uri": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Reflection": "[4.1.0-beta-23321, 4.1.0-beta-23321]", + "System.Reflection.Extensions": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Reflection.Primitives": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Resources.ResourceManager": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Runtime": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Runtime.Extensions": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Runtime.Handles": "[4.0.1-beta-23321, 4.0.1-beta-23321]", + "System.Runtime.InteropServices": "[4.0.21-beta-23321, 4.0.21-beta-23321]", + "System.Text.Encoding": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Text.Encoding.Extensions": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading.Tasks": "[4.0.11-beta-23321, 4.0.11-beta-23321]", + "System.Threading.Timer": "[4.0.1-beta-23321, 4.0.1-beta-23321]" + } + }, + "Microsoft.NETCore.TestHost-x64/1.0.0-beta-23213": { + "native": { + "runtimes/win7-x64/native/CoreRun.exe": {} + } }, - "System.Xml.ReaderWriter/4.0.10": { + "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23321": {}, + "Microsoft.Win32.Primitives/4.0.0": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.IO.FileSystem": "[4.0.0, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Text.RegularExpressions": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Runtime.InteropServices": "[4.0.20, )" }, "compile": { - "ref/dotnet/System.Xml.ReaderWriter.dll": {} + "ref/dotnet/Microsoft.Win32.Primitives.dll": {} }, "runtime": { - "lib/dotnet/System.Xml.ReaderWriter.dll": {} + "lib/dotnet/Microsoft.Win32.Primitives.dll": {} } }, - "System.Xml.XDocument/4.0.11-beta-23310": { + "Microsoft.Win32.Registry/4.0.0-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tools": "[4.0.0, )", "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.Reflection": "[4.0.10, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )" + }, + "compile": { + "ref/dotnet/Microsoft.Win32.Registry.dll": {} + }, + "runtime": { + "lib/DNXCore50/Microsoft.Win32.Registry.dll": {} + } + }, + "runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/win7-x64/lib/dotnet/mscorlib.ni.dll": {} + }, + "native": { + "runtimes/win7-x64/native/clretwrc.dll": {}, + "runtimes/win7-x64/native/coreclr.dll": {}, + "runtimes/win7-x64/native/dbgshim.dll": {}, + "runtimes/win7-x64/native/mscordaccore.dll": {}, + "runtimes/win7-x64/native/mscordbi.dll": {}, + "runtimes/win7-x64/native/mscorrc.debug.dll": {}, + "runtimes/win7-x64/native/mscorrc.dll": {} + } + }, + "runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23321": { + "native": { + "runtimes/win7-x64/native/API-MS-Win-Base-Util-L1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-com-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-comm-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-com-private-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-console-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-console-l2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-datetime-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-datetime-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-debug-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-debug-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-delayload-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-errorhandling-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-errorhandling-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-fibers-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-fibers-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-file-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-file-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-file-l1-2-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-file-l2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-file-l2-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-handle-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-heap-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-heap-obsolete-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-interlocked-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-io-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-io-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-1.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-libraryloader-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-libraryloader-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-localization-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-localization-l1-2-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-localization-l2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-localization-obsolete-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-2.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-3.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-namedpipe-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-namedpipe-l1-2-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-normalization-l1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-PrivateProfile-L1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-privateprofile-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-processenvironment-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-processenvironment-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-processsecurity-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-2.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-ProcessTopology-Obsolete-L1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-profile-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-psapi-ansi-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-psapi-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-psapi-obsolete-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-realtime-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-registry-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-registry-l2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-rtlsupport-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-shlwapi-legacy-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-shlwapi-obsolete-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-shutdown-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-shutdown-l1-1-1.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-StringAnsi-L1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-string-l1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Core-String-L2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-stringloader-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-stringloader-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-string-obsolete-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-string-obsolete-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-synch-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-synch-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-2.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-3.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-threadpool-l1-2-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-threadpool-legacy-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-threadpool-private-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-timezone-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-url-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-util-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-version-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-error-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-error-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-registration-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-robuffer-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-winrt-string-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-wow64-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-xstate-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-core-xstate-l2-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-devices-config-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-devices-config-L1-1-1.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Eventing-ClassicProvider-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Eventing-Consumer-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Eventing-Controller-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Eventing-Legacy-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Eventing-Provider-L1-1-0.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-EventLog-Legacy-L1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-ro-typeresolution-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-base-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-cpwl-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-cryptoapi-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-lsalookup-l2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-lsalookup-l2-1-1.dll": {}, + "runtimes/win7-x64/native/API-MS-Win-Security-LsaPolicy-L1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-provider-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-security-sddl-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-core-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-core-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-management-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-management-l2-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-private-l1-1-0.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-private-l1-1-1.dll": {}, + "runtimes/win7-x64/native/api-ms-win-service-winsvc-l1-1-0.dll": {}, + "runtimes/win7-x64/native/ext-ms-win-advapi32-encryptedfile-l1-1-0.dll": {} + } + }, + "runtime.win7.System.Console/4.0.0-beta-23321": { + "dependencies": { + "System.IO": "[4.0.10, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.InteropServices": "[4.0.20, )", "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", "System.Threading": "[4.0.10, )", - "System.Xml.ReaderWriter": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/win7/lib/dotnet/System.Console.dll": {} + } + }, + "runtime.win7.System.Diagnostics.Debug/4.0.11-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/win7/lib/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "runtime.win7.System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "dependencies": { + "System.Globalization": "[4.0.10, )", + "System.IO.FileSystem": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.InteropServices": "[4.0.20, )" }, "compile": { - "ref/dotnet/System.Xml.XDocument.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/System.Xml.XDocument.dll": {} + "runtimes/win7/lib/dotnet/System.Diagnostics.FileVersionInfo.dll": {} } }, - "System.Xml.XmlDocument/4.0.1-beta-23310": { + "runtime.win7.System.Diagnostics.Process/4.1.0-beta-23321": { "dependencies": { + "Microsoft.Win32.Primitives": "[4.0.0, )", + "Microsoft.Win32.Registry": "[4.0.0-beta-23321, )", "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", "System.Globalization": "[4.0.10, )", "System.IO": "[4.0.10, )", + "System.IO.FileSystem": "[4.0.0, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )", "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", "System.Threading": "[4.0.10, )", - "System.Xml.ReaderWriter": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.10, )", + "System.Threading.Thread": "[4.0.0-beta-23321, )", + "System.Threading.ThreadPool": "[4.0.10-beta-23321, )" }, "compile": { - "ref/dotnet/System.Xml.XmlDocument.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/System.Xml.XmlDocument.dll": {} - } - } - }, - "DNXCore,Version=v5.0/win-x64": { - "Microsoft.DiaSymReader.Native/1.1.0-alpha2": { - "native": { - "runtimes/win/native/Microsoft.DiaSymReader.Native.amd64.dll": {}, - "runtimes/win/native/Microsoft.DiaSymReader.Native.x86.dll": {} + "runtimes/win7/lib/dotnet/System.Diagnostics.Process.dll": {} } }, - "Microsoft.NETCore.Platforms/1.0.0": {}, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23310": { - "dependencies": { - "Microsoft.NETCore.Windows.ApiSets": "[1.0.1-beta-23310, )", - "System.Collections": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Diagnostics.Contracts": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Debug": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Diagnostics.StackTrace": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Tools": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Diagnostics.Tracing": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Globalization": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Globalization.Calendars": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.IO": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.ObjectModel": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Private.Uri": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Reflection": "[4.1.0-beta-23310, 4.1.0-beta-23310]", - "System.Reflection.Extensions": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Reflection.Primitives": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Resources.ResourceManager": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Runtime": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Runtime.Extensions": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Runtime.Handles": "[4.0.1-beta-23310, 4.0.1-beta-23310]", - "System.Runtime.InteropServices": "[4.0.21-beta-23310, 4.0.21-beta-23310]", - "System.Text.Encoding": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Text.Encoding.Extensions": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading.Tasks": "[4.0.11-beta-23310, 4.0.11-beta-23310]", - "System.Threading.Timer": "[4.0.1-beta-23310, 4.0.1-beta-23310]" - } - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23310": {}, - "Microsoft.Win32.Primitives/4.0.0": { + "runtime.win7.System.IO.FileSystem/4.0.1-beta-23321": { "dependencies": { + "System.Collections": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", - "System.Runtime.InteropServices": "[4.0.20, )" + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Overlapped": "[4.0.0, )", + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/Microsoft.Win32.Primitives.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/dotnet/Microsoft.Win32.Primitives.dll": {} + "runtimes/win7/lib/dotnet/System.IO.FileSystem.dll": {} } }, - "Microsoft.Win32.Registry/4.0.0-beta-23310": { + "runtime.win7.System.IO.Pipes/4.0.0-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )" + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Security.Principal": "[4.0.0, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Overlapped": "[4.0.0, )", + "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/Microsoft.Win32.Registry.dll": {} + "ref/dotnet/_._": {} }, "runtime": { - "lib/DNXCore50/Microsoft.Win32.Registry.dll": {} + "runtimes/win7/lib/dotnet/System.IO.Pipes.dll": {} } }, - "System.AppContext/4.0.1-beta-23310": { + "runtime.win7.System.Private.Uri/4.0.1-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/win7/lib/dotnet/System.Private.Uri.dll": {} + } + }, + "runtime.win7.System.Runtime.Extensions/4.0.11-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Extensions.dll": {} + } + }, + "runtime.win7.System.Threading/4.0.11-beta-23321": { + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/win7/lib/dotnet/System.Threading.dll": {} + } + }, + "System.AppContext/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1408,9 +1773,9 @@ "lib/DNXCore50/System.AppContext.dll": {} } }, - "System.Collections/4.0.11-beta-23310": { + "System.Collections/4.0.11-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.21-beta-23310, )" + "System.Runtime": "[4.0.21-beta-23321, )" }, "compile": { "ref/dotnet/System.Collections.dll": {} @@ -1419,6 +1784,25 @@ "lib/DNXCore50/System.Collections.dll": {} } }, + "System.Collections.Concurrent/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Globalization": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Collections.Concurrent.dll": {} + }, + "runtime": { + "lib/dotnet/System.Collections.Concurrent.dll": {} + } + }, "System.Collections.Immutable/1.1.36": { "compile": { "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} @@ -1427,26 +1811,16 @@ "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} } }, - "System.Console/4.0.0-beta-23302": { + "System.Console/4.0.0-beta-23321": { "dependencies": { - "System.IO": "[4.0.10, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Console.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Console.dll": {} } }, - "System.Diagnostics.Contracts/4.0.1-beta-23310": { + "System.Diagnostics.Contracts/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1457,47 +1831,34 @@ "lib/DNXCore50/System.Diagnostics.Contracts.dll": {} } }, - "System.Diagnostics.Debug/4.0.11-beta-23310": { + "System.Diagnostics.Debug/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Diagnostics.Debug.dll": {} + } + }, + "System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )" }, - "runtime": { - "lib/DNXCore50/System.Diagnostics.Debug.dll": {} + "compile": { + "ref/dotnet/System.Diagnostics.FileVersionInfo.dll": {} } }, - "System.Diagnostics.Process/4.1.0-beta-23310": { + "System.Diagnostics.Process/4.1.0-beta-23321": { "dependencies": { - "Microsoft.Win32.Primitives": "[4.0.0, )", - "Microsoft.Win32.Registry": "[4.0.0-beta-23310, )", - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.IO.FileSystem": "[4.0.0, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )", - "System.Threading.Thread": "[4.0.0-beta-23310, )", - "System.Threading.ThreadPool": "[4.0.10-beta-23310, )" + "System.Text.Encoding": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Diagnostics.Process.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Diagnostics.Process.dll": {} } }, - "System.Diagnostics.StackTrace/4.0.1-beta-23310": { + "System.Diagnostics.StackTrace/4.0.1-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -1509,7 +1870,7 @@ "lib/DNXCore50/System.Diagnostics.StackTrace.dll": {} } }, - "System.Diagnostics.Tools/4.0.1-beta-23310": { + "System.Diagnostics.Tools/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1520,7 +1881,7 @@ "lib/DNXCore50/System.Diagnostics.Tools.dll": {} } }, - "System.Diagnostics.Tracing/4.0.21-beta-23310": { + "System.Diagnostics.Tracing/4.0.21-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1531,7 +1892,32 @@ "lib/DNXCore50/System.Diagnostics.Tracing.dll": {} } }, - "System.Globalization/4.0.11-beta-23310": { + "System.Dynamic.Runtime/4.0.11-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Linq.Expressions": "[4.0.10, )", + "System.ObjectModel": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Emit": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Dynamic.Runtime.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Dynamic.Runtime.dll": {} + } + }, + "System.Globalization/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1542,7 +1928,7 @@ "lib/DNXCore50/System.Globalization.dll": {} } }, - "System.Globalization.Calendars/4.0.1-beta-23310": { + "System.Globalization.Calendars/4.0.1-beta-23321": { "dependencies": { "System.Globalization": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -1554,7 +1940,7 @@ "lib/DNXCore50/System.Globalization.Calendars.dll": {} } }, - "System.IO/4.0.11-beta-23310": { + "System.IO/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.20, )", "System.Text.Encoding": "[4.0.0, )", @@ -1567,30 +1953,20 @@ "lib/DNXCore50/System.IO.dll": {} } }, - "System.IO.FileSystem/4.0.1-beta-23302": { + "System.IO.FileSystem/4.0.1-beta-23321": { "dependencies": { - "System.Collections": "[4.0.10, )", - "System.IO": "[4.0.10, )", + "System.IO": "[4.0.0, )", "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Overlapped": "[4.0.0, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Text.Encoding": "[4.0.0, )", + "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.IO.FileSystem.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.IO.FileSystem.dll": {} } }, - "System.IO.FileSystem.Primitives/4.0.1-beta-23310": { + "System.IO.FileSystem.Primitives/4.0.0": { "dependencies": { "System.Runtime": "[4.0.20, )" }, @@ -1601,28 +1977,19 @@ "lib/dotnet/System.IO.FileSystem.Primitives.dll": {} } }, - "System.IO.Pipes/4.0.0-beta-23310": { + "System.IO.Pipes/4.0.0-beta-23321": { "dependencies": { - "System.IO": "[4.0.10, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", + "System.IO": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Runtime.InteropServices": "[4.0.20, )", "System.Security.Principal": "[4.0.0, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Overlapped": "[4.0.0, )", - "System.Threading.Tasks": "[4.0.10, )" + "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.IO.Pipes.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.IO.Pipes.dll": {} } }, - "System.Linq/4.0.1-beta-23310": { + "System.Linq/4.0.1-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", @@ -1637,7 +2004,32 @@ "lib/dotnet/System.Linq.dll": {} } }, - "System.ObjectModel/4.0.11-beta-23310": { + "System.Linq.Expressions/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.0, )", + "System.Diagnostics.Debug": "[4.0.0, )", + "System.Globalization": "[4.0.0, )", + "System.IO": "[4.0.0, )", + "System.Linq": "[4.0.0, )", + "System.ObjectModel": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit": "[4.0.0, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.0, )", + "System.Threading": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Linq.Expressions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Linq.Expressions.dll": {} + } + }, + "System.ObjectModel/4.0.11-beta-23321": { "dependencies": { "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", @@ -1652,15 +2044,12 @@ "lib/dotnet/System.ObjectModel.dll": {} } }, - "System.Private.Uri/4.0.1-beta-23310": { + "System.Private.Uri/4.0.1-beta-23321": { "compile": { "ref/dnxcore50/_._": {} - }, - "runtime": { - "lib/DNXCore50/System.Private.Uri.dll": {} } }, - "System.Reflection/4.1.0-beta-23310": { + "System.Reflection/4.1.0-beta-23321": { "dependencies": { "System.IO": "[4.0.0, )", "System.Reflection.Primitives": "[4.0.0, )", @@ -1673,7 +2062,49 @@ "lib/DNXCore50/System.Reflection.dll": {} } }, - "System.Reflection.Extensions/4.0.1-beta-23310": { + "System.Reflection.Emit/4.0.0": { + "dependencies": { + "System.IO": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.dll": {} + } + }, + "System.Reflection.Emit.ILGeneration/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.ILGeneration.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.ILGeneration.dll": {} + } + }, + "System.Reflection.Emit.Lightweight/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Reflection.Emit.ILGeneration": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.Emit.Lightweight.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.Emit.Lightweight.dll": {} + } + }, + "System.Reflection.Extensions/4.0.1-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Runtime": "[4.0.0, )" @@ -1696,7 +2127,7 @@ "lib/portable-net45+win8/System.Reflection.Metadata.dll": {} } }, - "System.Reflection.Primitives/4.0.1-beta-23310": { + "System.Reflection.Primitives/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1707,7 +2138,19 @@ "lib/DNXCore50/System.Reflection.Primitives.dll": {} } }, - "System.Resources.ResourceManager/4.0.1-beta-23310": { + "System.Reflection.TypeExtensions/4.0.0": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Reflection.TypeExtensions.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Reflection.TypeExtensions.dll": {} + } + }, + "System.Resources.ResourceManager/4.0.1-beta-23321": { "dependencies": { "System.Globalization": "[4.0.0, )", "System.Reflection": "[4.0.0, )", @@ -1720,9 +2163,9 @@ "lib/DNXCore50/System.Resources.ResourceManager.dll": {} } }, - "System.Runtime/4.0.21-beta-23310": { + "System.Runtime/4.0.21-beta-23321": { "dependencies": { - "System.Private.Uri": "[4.0.1-beta-23310, )" + "System.Private.Uri": "[4.0.1-beta-23321, )" }, "compile": { "ref/dotnet/System.Runtime.dll": {} @@ -1731,18 +2174,15 @@ "lib/DNXCore50/System.Runtime.dll": {} } }, - "System.Runtime.Extensions/4.0.11-beta-23310": { + "System.Runtime.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.20, )" }, "compile": { "ref/dotnet/System.Runtime.Extensions.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Runtime.Extensions.dll": {} } }, - "System.Runtime.Handles/4.0.1-beta-23310": { + "System.Runtime.Handles/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1753,7 +2193,7 @@ "lib/DNXCore50/System.Runtime.Handles.dll": {} } }, - "System.Runtime.InteropServices/4.0.21-beta-23310": { + "System.Runtime.InteropServices/4.0.21-beta-23321": { "dependencies": { "System.Reflection": "[4.0.0, )", "System.Reflection.Primitives": "[4.0.0, )", @@ -1767,13 +2207,13 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, - "System.Security.Cryptography.Algorithms/4.0.0-beta-23310": { + "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.IO": "[4.0.10, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Handles": "[4.0.0, )", - "System.Security.Cryptography.Primitives": "[4.0.0-beta-23310, )", + "System.Security.Cryptography.Primitives": "[4.0.0-beta-23311, )", "System.Text.Encoding": "[4.0.0, )", "System.Text.Encoding.Extensions": "[4.0.0, )" }, @@ -1784,10 +2224,10 @@ "lib/DNXCore50/System.Security.Cryptography.Algorithms.dll": {} } }, - "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23310": { + "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.Runtime": "[4.0.0, )", - "System.Security.Cryptography.Algorithms": "[4.0.0-beta-23310, )" + "System.Security.Cryptography.Algorithms": "[4.0.0-beta-23311, )" }, "compile": { "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll": {} @@ -1796,7 +2236,7 @@ "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll": {} } }, - "System.Security.Cryptography.Primitives/4.0.0-beta-23310": { + "System.Security.Cryptography.Primitives/4.0.0-beta-23311": { "dependencies": { "System.Diagnostics.Debug": "[4.0.0, )", "System.Globalization": "[4.0.0, )", @@ -1824,7 +2264,7 @@ "lib/dotnet/System.Security.Principal.dll": {} } }, - "System.Text.Encoding/4.0.11-beta-23310": { + "System.Text.Encoding/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1835,7 +2275,7 @@ "lib/DNXCore50/System.Text.Encoding.dll": {} } }, - "System.Text.Encoding.Extensions/4.0.11-beta-23310": { + "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Text.Encoding": "[4.0.10, )" @@ -1847,32 +2287,13 @@ "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {} } }, - "System.Text.RegularExpressions/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/dotnet/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.0.11-beta-23310": { + "System.Threading/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Threading.Tasks": "[4.0.0, )" }, "compile": { "ref/dotnet/System.Threading.dll": {} - }, - "runtime": { - "lib/DNXCore50/System.Threading.dll": {} } }, "System.Threading.Overlapped/4.0.0": { @@ -1887,7 +2308,7 @@ "lib/DNXCore50/System.Threading.Overlapped.dll": {} } }, - "System.Threading.Tasks/4.0.11-beta-23310": { + "System.Threading.Tasks/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1898,7 +2319,25 @@ "lib/DNXCore50/System.Threading.Tasks.dll": {} } }, - "System.Threading.Thread/4.0.0-beta-23310": { + "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { + "dependencies": { + "System.Collections.Concurrent": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Threading.Tasks.Parallel.dll": {} + }, + "runtime": { + "lib/dotnet/System.Threading.Tasks.Parallel.dll": {} + } + }, + "System.Threading.Thread/4.0.0-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1909,7 +2348,7 @@ "lib/DNXCore50/System.Threading.Thread.dll": {} } }, - "System.Threading.ThreadPool/4.0.10-beta-23310": { + "System.Threading.ThreadPool/4.0.10-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", "System.Runtime.InteropServices": "[4.0.0, )" @@ -1921,7 +2360,7 @@ "lib/DNXCore50/System.Threading.ThreadPool.dll": {} } }, - "System.Threading.Timer/4.0.1-beta-23310": { + "System.Threading.Timer/4.0.1-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" }, @@ -1931,72 +2370,6 @@ "runtime": { "lib/DNXCore50/System.Threading.Timer.dll": {} } - }, - "System.Xml.ReaderWriter/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.IO.FileSystem": "[4.0.0, )", - "System.IO.FileSystem.Primitives": "[4.0.0, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Runtime.InteropServices": "[4.0.20, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Text.Encoding.Extensions": "[4.0.10, )", - "System.Text.RegularExpressions": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Xml.ReaderWriter.dll": {} - }, - "runtime": { - "lib/dotnet/System.Xml.ReaderWriter.dll": {} - } - }, - "System.Xml.XDocument/4.0.11-beta-23310": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tools": "[4.0.0, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.Reflection": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Xml.ReaderWriter": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Xml.XDocument.dll": {} - }, - "runtime": { - "lib/dotnet/System.Xml.XDocument.dll": {} - } - }, - "System.Xml.XmlDocument/4.0.1-beta-23310": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Globalization": "[4.0.10, )", - "System.IO": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Text.Encoding": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Xml.ReaderWriter": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Xml.XmlDocument.dll": {} - }, - "runtime": { - "lib/dotnet/System.Xml.XmlDocument.dll": {} - } } } }, @@ -2007,166 +2380,778 @@ "files": [ "[Content_Types].xml", "_rels/.rels", - "Microsoft.DiaSymReader.Native.nuspec", - "package/services/metadata/core-properties/e2e1c0f9faac4ddb951a90d33184740b.psmdcp", - "runtimes/win/native/Microsoft.DiaSymReader.Native.amd64.dll", - "runtimes/win/native/Microsoft.DiaSymReader.Native.x86.dll" + "Microsoft.DiaSymReader.Native.nuspec", + "package/services/metadata/core-properties/e2e1c0f9faac4ddb951a90d33184740b.psmdcp", + "runtimes/win/native/Microsoft.DiaSymReader.Native.amd64.dll", + "runtimes/win/native/Microsoft.DiaSymReader.Native.x86.dll" + ] + }, + "Microsoft.NETCore.Platforms/1.0.1-beta-23321": { + "sha512": "lKmkPSHwJJofKodv616I5e9B3IjapVIZd1F/XAMWnNAaRSc8PMBvVwnQ2fTgH9xIFnXoTAYLjoTrynF/1RoxkA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "Microsoft.NETCore.Platforms.nuspec", + "package/services/metadata/core-properties/a896c08c81124cdab52a9d4c4c8ae1d9.psmdcp", + "runtime.json" + ] + }, + "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "sha512": "zKcosHNyizG5bd6etmmGl7TPQ1JZ7+NCULxAmXacspM/+cJiQorNNuAiaJf8nEbLhdq36OhLrgRzhzlx576yrQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "Microsoft.NETCore.Runtime.CoreCLR.nuspec", + "package/services/metadata/core-properties/00010a5e797f475fab17d46bb28d34fa.psmdcp", + "runtime.json" + ] + }, + "Microsoft.NETCore.TestHost-x64/1.0.0-beta-23213": { + "sha512": "9ewco27jElurDDETH+6SltNecKAJE+ZVzMVNCvb0Ju0gkJEm7B+dOqIvSgtOymHtpyfkko/hwm+PHXjP1CLkCg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "Microsoft.NETCore.TestHost-x64.nuspec", + "package/services/metadata/core-properties/dd955bfbc91347b4a3ef1ab48f8d4700.psmdcp", + "runtimes/win7-x64/native/CoreRun.exe" + ] + }, + "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23321": { + "sha512": "KAkWVwJ1cIzjw8ZLVxxVDUz/EYxoNNrYRYLD6JhFOkP5B8e+/AcKP2t8ainf2792ifWCy/Wv7w4G9YG1HkDcvA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "Microsoft.NETCore.Windows.ApiSets.nuspec", + "package/services/metadata/core-properties/a44f497e174744bd87ee88a376ab34cf.psmdcp", + "runtime.json" + ] + }, + "Microsoft.Win32.Primitives/4.0.0": { + "sha512": "CypEz9/lLOup8CEhiAmvr7aLs1zKPYyEU1sxQeEr6G0Ci8/F0Y6pYR1zzkROjM8j8Mq0typmbu676oYyvErQvg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/Microsoft.Win32.Primitives.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/Microsoft.Win32.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "Microsoft.Win32.Primitives.nuspec", + "package/services/metadata/core-properties/1d4eb9d0228b48b88d2df3822fba2d86.psmdcp", + "ref/dotnet/de/Microsoft.Win32.Primitives.xml", + "ref/dotnet/es/Microsoft.Win32.Primitives.xml", + "ref/dotnet/fr/Microsoft.Win32.Primitives.xml", + "ref/dotnet/it/Microsoft.Win32.Primitives.xml", + "ref/dotnet/ja/Microsoft.Win32.Primitives.xml", + "ref/dotnet/ko/Microsoft.Win32.Primitives.xml", + "ref/dotnet/Microsoft.Win32.Primitives.dll", + "ref/dotnet/Microsoft.Win32.Primitives.xml", + "ref/dotnet/ru/Microsoft.Win32.Primitives.xml", + "ref/dotnet/zh-hans/Microsoft.Win32.Primitives.xml", + "ref/dotnet/zh-hant/Microsoft.Win32.Primitives.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/Microsoft.Win32.Primitives.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._" + ] + }, + "Microsoft.Win32.Registry/4.0.0-beta-23321": { + "sha512": "CgQojFhkkhN/v3W3/kqre1KHc8oq3/7CgZ6GkMaCC/AVRq8Me0N+PKFXNz4L9c/QDL2cGoOnmPejLPXVvTEfmA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/de/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/es/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/fr/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/it/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/ja/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/ko/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/Microsoft.Win32.Registry.dll", + "lib/DNXCore50/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/ru/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/zh-hans/Microsoft.Win32.Registry.xml", + "lib/DNXCore50/zh-hant/Microsoft.Win32.Registry.xml", + "lib/net46/Microsoft.Win32.Registry.dll", + "Microsoft.Win32.Registry.nuspec", + "package/services/metadata/core-properties/c39bd9e439b441eaa21395fb60284134.psmdcp", + "ref/dotnet/Microsoft.Win32.Registry.dll", + "ref/net46/Microsoft.Win32.Registry.dll" + ] + }, + "runtime.linux.System.Diagnostics.Process/4.1.0-beta-23321": { + "sha512": "aEXE8aYQVKUug4zOJacWl2PC6q6cKrS23zJAr1aeXeWPt8g8ndoPx+tlIHdBW6IItLjVGo5kuO3EIF3ksLrP4A==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Diagnostics.Process.dll", + "package/services/metadata/core-properties/06b44f6775674cc082eb395669104637.psmdcp", + "ref/dotnet/_._", + "runtime.linux.System.Diagnostics.Process.nuspec" + ] + }, + "runtime.linux.System.IO.FileSystem/4.0.1-beta-23321": { + "sha512": "CqYBb5voBHI1cJqj9REHvHaBCbXzmPZ2Ar1QvuYjBiNt+OxUHqKvTDstj/L+Oz4jozhbxNY5cgJ19TmhVdDckg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/a58ac09a8468422cb7ae02c78383a133.psmdcp", + "ref/dotnet/_._", + "runtime.linux.System.IO.FileSystem.nuspec", + "runtimes/linux/lib/dotnet/System.IO.FileSystem.dll" + ] + }, + "runtime.linux.System.Runtime.Extensions/4.0.11-beta-23321": { + "sha512": "FBpCttqvczJDMN36u3gYAtbBxUGPdIQ8IdRJYI/M4syPFgvG+wJPcMSNMKkTzeCynhPlBERvX+PkO6c5RncPtg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Runtime.Extensions.dll", + "package/services/metadata/core-properties/f69a35a4730b4622940e9ce65e22cb15.psmdcp", + "ref/dotnet/_._", + "runtime.linux.System.Runtime.Extensions.nuspec" + ] + }, + "runtime.ubuntu.14.04-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "sha512": "utiFbeU7toM0VRG4D6A5qPM7gfeHHdSPeMhKRamOQu3R/T471TsyXqNPZkje8/W/gJMTVLmbQHtmWmVj/kJSxQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/1814a50aaaae4fe8b715f56bc36719fd.psmdcp", + "ref/dotnet/_._", + "runtime.ubuntu.14.04-x64.Microsoft.NETCore.Runtime.CoreCLR.nuspec", + "runtimes/ubuntu.14.04-x64/lib/dotnet/mscorlib.dll", + "runtimes/ubuntu.14.04-x64/native/libcoreclr.so", + "runtimes/ubuntu.14.04-x64/native/libdbgshim.so", + "runtimes/ubuntu.14.04-x64/native/libmscordaccore.so", + "runtimes/ubuntu.14.04-x64/native/libmscordbi.so", + "runtimes/ubuntu.14.04-x64/native/libsos.so", + "runtimes/ubuntu.14.04-x64/native/libsosplugin.so", + "runtimes/ubuntu.14.04-x64/native/System.Native.so", + "runtimes/ubuntu.14.04-x64/native/System.Net.Http.Native.so", + "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.so" + ] + }, + "runtime.unix.System.Console/4.0.0-beta-23321": { + "sha512": "TUJgivTxXatDZ9tnF34ABKJkechD4W0n+JWdTHukMyCX2n8RRZiMh0gC3Vb7TniiBpx/GLr/l1vK05PtxAZ05Q==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Console.dll", + "package/services/metadata/core-properties/4632c1dc3d9f4f46a5f7939edd1f7623.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.Console.nuspec" + ] + }, + "runtime.unix.System.Diagnostics.Debug/4.0.11-beta-23321": { + "sha512": "vjTPBgCbNSSiffP2RoLaCMmnT884Cs0D6depxOounJ0c6ZQlYzVf8T3+bVTuyQgWMfcV7kPlKjQT9cZHb26NKA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Diagnostics.Debug.dll", + "package/services/metadata/core-properties/af09835e71cb460faa6852fc97e3abe5.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.Diagnostics.Debug.nuspec" + ] + }, + "runtime.unix.System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "sha512": "brH89dbxg7LhqNaP4xTIGmrB7mGAmrjQWeXaX4h4Zb4/qcd5ucJYem+0Grrd1cGxF4djyn8iaAL2zcxxzoWFJw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Diagnostics.FileVersionInfo.dll", + "package/services/metadata/core-properties/d8e107b846a0445d8d90c9227858737e.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.Diagnostics.FileVersionInfo.nuspec" + ] + }, + "runtime.unix.System.IO.Pipes/4.0.0-beta-23321": { + "sha512": "6YWi8a3vxEvB3aShy8oBS1r3rX+T3dKeoK5pSgJD3dLgjAcghqPFAVUxjPfkFS3OAdODfjwqinzylTx5yL3/KQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.IO.Pipes.dll", + "package/services/metadata/core-properties/e8d7e18b3f994a43a4479e27ad668cbf.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.IO.Pipes.nuspec" + ] + }, + "runtime.unix.System.Private.Uri/4.0.1-beta-23321": { + "sha512": "TsR8+getuxEne+tsMJEIUlkG4NpY5zsegUla+1o9BRyxcz6nFCZtuuj777rdGnDBMDaRphixfhDJgHRhFZvnLw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Private.Uri.dll", + "package/services/metadata/core-properties/52f0a42066af4157bac8d4eaf35dbecd.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.Private.Uri.nuspec" + ] + }, + "runtime.unix.System.Threading/4.0.11-beta-23321": { + "sha512": "QlIzt08mk+SpmK8PuZJA+H0UfgAurvw5vRcAQImrVxKezS+ILuQ3YTkwQ/Q79koGHfgeFjWMdjYCSGY2KrfVDQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Threading.dll", + "package/services/metadata/core-properties/f9f7805c8f264906b426357403f30393.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.Threading.nuspec" + ] + }, + "runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23321": { + "sha512": "Pk2hUQvi2iXY6pZtXI+U0YQqq3ojZaGrb0pBtYkcbRu9WgvzPmXTy0Ye2+h0v0THc1sQd4ySKR7IZomDK1yfGA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/09538cc4484247bf90cdf0b934cdc771.psmdcp", + "ref/dotnet/_._", + "runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR.nuspec", + "runtimes/win7-x64/lib/dotnet/mscorlib.ni.dll", + "runtimes/win7-x64/native/clretwrc.dll", + "runtimes/win7-x64/native/coreclr.dll", + "runtimes/win7-x64/native/dbgshim.dll", + "runtimes/win7-x64/native/mscordaccore.dll", + "runtimes/win7-x64/native/mscordbi.dll", + "runtimes/win7-x64/native/mscorrc.debug.dll", + "runtimes/win7-x64/native/mscorrc.dll", + "tools/crossgen.exe", + "tools/sos.dll" + ] + }, + "runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23321": { + "sha512": "A1/dGg9TpjOgGKkvS1nkaI68CKwiyUjzIKxZJBIhcCg9CZ/b1VoKmbTBYli+GpWd+ERzsX6soh1qi29k+Tfh8g==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/1927df1a54284e1e810bbe1163926010.psmdcp", + "runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets.nuspec", + "runtimes/win10-x64/native/_._", + "runtimes/win7-x64/native/API-MS-Win-Base-Util-L1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-com-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-comm-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-com-private-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-console-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-console-l2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-datetime-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-datetime-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-debug-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-debug-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-delayload-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-errorhandling-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-errorhandling-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-fibers-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-fibers-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-file-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-file-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-file-l1-2-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-file-l2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-file-l2-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-handle-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-heap-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-heap-obsolete-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-interlocked-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-io-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-io-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-1.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll", + "runtimes/win7-x64/native/api-ms-win-core-libraryloader-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-libraryloader-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-localization-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-localization-l1-2-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-localization-l2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-localization-obsolete-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-2.dll", + "runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-3.dll", + "runtimes/win7-x64/native/api-ms-win-core-namedpipe-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-namedpipe-l1-2-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-normalization-l1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-PrivateProfile-L1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-privateprofile-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-processenvironment-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-processenvironment-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-processsecurity-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-2.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-ProcessTopology-Obsolete-L1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-profile-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-psapi-ansi-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-psapi-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-psapi-obsolete-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-realtime-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-registry-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-registry-l2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-rtlsupport-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-shlwapi-legacy-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-shlwapi-obsolete-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-shutdown-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-shutdown-l1-1-1.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-StringAnsi-L1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-string-l1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Core-String-L2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-stringloader-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-stringloader-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-string-obsolete-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-string-obsolete-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-synch-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-synch-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-2.dll", + "runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-3.dll", + "runtimes/win7-x64/native/api-ms-win-core-threadpool-l1-2-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-threadpool-legacy-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-threadpool-private-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-timezone-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-url-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-util-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-version-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-error-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-error-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-registration-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-robuffer-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-winrt-string-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-wow64-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-xstate-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-core-xstate-l2-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-devices-config-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-devices-config-L1-1-1.dll", + "runtimes/win7-x64/native/API-MS-Win-Eventing-ClassicProvider-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Eventing-Consumer-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Eventing-Controller-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Eventing-Legacy-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-Eventing-Provider-L1-1-0.dll", + "runtimes/win7-x64/native/API-MS-Win-EventLog-Legacy-L1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-ro-typeresolution-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-base-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-cpwl-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-cryptoapi-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-lsalookup-l2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-lsalookup-l2-1-1.dll", + "runtimes/win7-x64/native/API-MS-Win-Security-LsaPolicy-L1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-provider-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-security-sddl-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-service-core-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-service-core-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-service-management-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-service-management-l2-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-service-private-l1-1-0.dll", + "runtimes/win7-x64/native/api-ms-win-service-private-l1-1-1.dll", + "runtimes/win7-x64/native/api-ms-win-service-winsvc-l1-1-0.dll", + "runtimes/win7-x64/native/ext-ms-win-advapi32-encryptedfile-l1-1-0.dll", + "runtimes/win81-x64/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll", + "runtimes/win81-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll", + "runtimes/win81-x64/native/api-ms-win-core-memory-l1-1-3.dll", + "runtimes/win81-x64/native/api-ms-win-core-namedpipe-l1-2-1.dll", + "runtimes/win81-x64/native/api-ms-win-core-string-obsolete-l1-1-1.dll", + "runtimes/win81-x64/native/api-ms-win-core-sysinfo-l1-2-2.dll", + "runtimes/win81-x64/native/api-ms-win-core-sysinfo-l1-2-3.dll", + "runtimes/win81-x64/native/api-ms-win-security-cpwl-l1-1-0.dll", + "runtimes/win8-x64/native/api-ms-win-core-file-l1-2-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-file-l2-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-kernel32-legacy-l1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll", + "runtimes/win8-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-1.dll", + "runtimes/win8-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll", + "runtimes/win8-x64/native/api-ms-win-core-localization-l1-2-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-localization-obsolete-l1-2-0.dll", + "runtimes/win8-x64/native/api-ms-win-core-memory-l1-1-2.dll", + "runtimes/win8-x64/native/api-ms-win-core-memory-l1-1-3.dll", + "runtimes/win8-x64/native/api-ms-win-core-namedpipe-l1-2-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-privateprofile-l1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-processthreads-l1-1-2.dll", + "runtimes/win8-x64/native/api-ms-win-core-shutdown-l1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-stringloader-l1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-string-obsolete-l1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-sysinfo-l1-2-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-sysinfo-l1-2-2.dll", + "runtimes/win8-x64/native/api-ms-win-core-sysinfo-l1-2-3.dll", + "runtimes/win8-x64/native/api-ms-win-core-winrt-error-l1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-core-xstate-l2-1-0.dll", + "runtimes/win8-x64/native/API-MS-Win-devices-config-L1-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-security-cpwl-l1-1-0.dll", + "runtimes/win8-x64/native/api-ms-win-security-cryptoapi-l1-1-0.dll", + "runtimes/win8-x64/native/api-ms-win-security-lsalookup-l2-1-1.dll", + "runtimes/win8-x64/native/api-ms-win-service-private-l1-1-1.dll" + ] + }, + "runtime.win7.System.Console/4.0.0-beta-23321": { + "sha512": "61kioyGlIDh/KZloIbeJETeH/c+kayHx3//siet6tBshxPJCmzK06co0jSIeTzPoVJ3rQ6eASExWBqk4A+K92w==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/e3528864aa2e41f29dd268b751116144.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Console.nuspec", + "runtimes/win7/lib/dotnet/de/System.Console.xml", + "runtimes/win7/lib/dotnet/es/System.Console.xml", + "runtimes/win7/lib/dotnet/fr/System.Console.xml", + "runtimes/win7/lib/dotnet/it/System.Console.xml", + "runtimes/win7/lib/dotnet/ja/System.Console.xml", + "runtimes/win7/lib/dotnet/ko/System.Console.xml", + "runtimes/win7/lib/dotnet/ru/System.Console.xml", + "runtimes/win7/lib/dotnet/System.Console.dll", + "runtimes/win7/lib/dotnet/System.Console.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.Console.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.Console.xml" ] }, - "Microsoft.NETCore.Platforms/1.0.0": { - "sha512": "0N77OwGZpXqUco2C/ynv1os7HqdFYifvNIbveLDKqL5PZaz05Rl9enCwVBjF61aumHKueLWIJ3prnmdAXxww4A==", + "runtime.win7.System.Diagnostics.Debug/4.0.11-beta-23321": { + "sha512": "6hIunPrq23p51PBBtGDeyK8/+bM0eycsM8l5UDr1uKTccHe/xeaO1Cy19m4CqJMaSp6nKmhZHw0O0OgUOPaUdw==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "Microsoft.NETCore.Platforms.nuspec", - "package/services/metadata/core-properties/36b51d4c6b524527902ff1a182a64e42.psmdcp", - "runtime.json" + "package/services/metadata/core-properties/f16c0f762ed84e2cbc7c7af7705153c8.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Diagnostics.Debug.nuspec", + "runtimes/win7/lib/dotnet/de/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/es/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/fr/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/it/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/ja/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/ko/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/ru/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/System.Diagnostics.Debug.dll", + "runtimes/win7/lib/dotnet/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.Diagnostics.Debug.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.Diagnostics.Debug.xml" ] }, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.1-beta-23310": { - "sha512": "UvUYERagafTCQeSxiMLbt4SZSG0GoZSqcwZywbmns+1l1EYWlkBIn5Lpv1pDzlvkgdvU1F+Hc6HonQTRHyIaNA==", + "runtime.win7.System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "sha512": "yjiDgct3XkdLvpBiDjHQie3XPrwGthzAGoGPuHylWs+/Sw364dh5e/MpdcgGzlkVI/5sJ3tO2pFBrfIomMqQwA==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "Microsoft.NETCore.Runtime.CoreCLR.nuspec", - "package/services/metadata/core-properties/33d4717d37c24b8db0237f66ef8ca393.psmdcp", - "runtime.json" + "lib/win8/_._", + "lib/wp8/_._", + "lib/wpa81/_._", + "package/services/metadata/core-properties/757e18660fac492c91941935efb59ad2.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Diagnostics.FileVersionInfo.nuspec", + "runtimes/win7/lib/dotnet/de/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/es/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/fr/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/it/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/ja/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/ko/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/ru/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/System.Diagnostics.FileVersionInfo.dll", + "runtimes/win7/lib/dotnet/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.Diagnostics.FileVersionInfo.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.Diagnostics.FileVersionInfo.xml" ] }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1-beta-23310": { - "sha512": "aI6g2QDn1lW8M9v/k5OZUSjV6tQov+3HSO77YmElp1+8R6RjcDcW5vteImtcxMBlIfeOxzWa7jPbxRPw1B4TKg==", + "runtime.win7.System.Diagnostics.Process/4.1.0-beta-23321": { + "sha512": "OgeiMQV9/NWtqIUpKYJA7GAFB4q4PJ65giL4RrsYiXS/kYxwbNU20g4wxFyCSTT2nhcGFdQf/pPZPS7RPzNGag==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "Microsoft.NETCore.Windows.ApiSets.nuspec", - "package/services/metadata/core-properties/06dc8416878b4213a926f8846bd4ee8d.psmdcp", - "runtime.json" + "lib/win8/_._", + "lib/wp8/_._", + "lib/wpa81/_._", + "package/services/metadata/core-properties/8c4fba688b414c778d3fdc1d0f5d1c25.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Diagnostics.Process.nuspec", + "runtimes/win7/lib/dotnet/de/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/es/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/fr/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/it/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/ja/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/ko/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/ru/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/System.Diagnostics.Process.dll", + "runtimes/win7/lib/dotnet/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.Diagnostics.Process.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.Diagnostics.Process.xml" ] }, - "Microsoft.Win32.Primitives/4.0.0": { - "sha512": "CypEz9/lLOup8CEhiAmvr7aLs1zKPYyEU1sxQeEr6G0Ci8/F0Y6pYR1zzkROjM8j8Mq0typmbu676oYyvErQvg==", + "runtime.win7.System.IO.FileSystem/4.0.1-beta-23321": { + "sha512": "v7sZCxZ1yir0t801C3CdX1niwiWeMJ9iBs5UL86pkAwSfXar2IXoI5IwJAUZ7xuSijP4py4dYuYHjSSWHbjSBg==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "lib/dotnet/Microsoft.Win32.Primitives.dll", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/Microsoft.Win32.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "Microsoft.Win32.Primitives.nuspec", - "package/services/metadata/core-properties/1d4eb9d0228b48b88d2df3822fba2d86.psmdcp", - "ref/dotnet/de/Microsoft.Win32.Primitives.xml", - "ref/dotnet/es/Microsoft.Win32.Primitives.xml", - "ref/dotnet/fr/Microsoft.Win32.Primitives.xml", - "ref/dotnet/it/Microsoft.Win32.Primitives.xml", - "ref/dotnet/ja/Microsoft.Win32.Primitives.xml", - "ref/dotnet/ko/Microsoft.Win32.Primitives.xml", - "ref/dotnet/Microsoft.Win32.Primitives.dll", - "ref/dotnet/Microsoft.Win32.Primitives.xml", - "ref/dotnet/ru/Microsoft.Win32.Primitives.xml", - "ref/dotnet/zh-hans/Microsoft.Win32.Primitives.xml", - "ref/dotnet/zh-hant/Microsoft.Win32.Primitives.xml", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/Microsoft.Win32.Primitives.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._" + "lib/net/_._", + "lib/win8/_._", + "lib/wp8/_._", + "lib/wpa81/_._", + "package/services/metadata/core-properties/5de37bc108fe403399721b60f192e2d3.psmdcp", + "ref/dotnet/_._", + "ref/netcore50/_._", + "runtime.win7.System.IO.FileSystem.nuspec", + "runtimes/win7/lib/dotnet/de/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/es/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/fr/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/it/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/ja/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/ko/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/ru/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/System.IO.FileSystem.dll", + "runtimes/win7/lib/dotnet/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.IO.FileSystem.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/de/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/es/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/fr/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/it/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/ja/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/ko/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/ru/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/System.IO.FileSystem.dll", + "runtimes/win7/lib/netcore50/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/zh-hans/System.IO.FileSystem.xml", + "runtimes/win7/lib/netcore50/zh-hant/System.IO.FileSystem.xml" ] }, - "Microsoft.Win32.Registry/4.0.0-beta-23310": { - "sha512": "eCmWKKL+EWTUi58LhJYOZS3+VvdRlz+0p5Q9gjjI8k5BryWlvRNasAF3BEA2jR8l1Im7F7iHNAlcKjsJBGTe+w==", + "runtime.win7.System.IO.Pipes/4.0.0-beta-23321": { + "sha512": "+1eLipbqbm6CrEM7xPCdZLPRaSMgq/9+jeEPPIS3nwrWD62qWObqxGFPS8ZVdQjHeaq8rBn05BOUZf2o4R0qIw==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/Microsoft.Win32.Registry.xml", - "es/Microsoft.Win32.Registry.xml", - "fr/Microsoft.Win32.Registry.xml", - "it/Microsoft.Win32.Registry.xml", - "ja/Microsoft.Win32.Registry.xml", - "ko/Microsoft.Win32.Registry.xml", - "lib/DNXCore50/Microsoft.Win32.Registry.dll", - "lib/net46/Microsoft.Win32.Registry.dll", - "Microsoft.Win32.Registry.nuspec", - "Microsoft.Win32.Registry.xml", - "package/services/metadata/core-properties/5e92d30e46f54c73ab4afcd5bddae794.psmdcp", - "ref/dotnet/Microsoft.Win32.Registry.dll", - "ref/net46/Microsoft.Win32.Registry.dll", - "ru/Microsoft.Win32.Registry.xml", - "zh-hans/Microsoft.Win32.Registry.xml", - "zh-hant/Microsoft.Win32.Registry.xml" + "package/services/metadata/core-properties/c1d50fff21d04456a75242c130484e53.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.IO.Pipes.nuspec", + "runtimes/win7/lib/dotnet/de/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/es/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/fr/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/it/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/ja/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/ko/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/ru/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/System.IO.Pipes.dll", + "runtimes/win7/lib/dotnet/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.IO.Pipes.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.IO.Pipes.xml" + ] + }, + "runtime.win7.System.Private.Uri/4.0.1-beta-23321": { + "sha512": "WfIDK5opKq/WZLTWFrtv85nOP7pOB+w5pPUHGeD6IxKop1avsk00Le/yu3oU4YEhp3b88isVLvDC1CaEeg90Rg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/70f1c36b41174679b9a1462b84124f6f.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Private.Uri.nuspec", + "runtimes/win7/lib/dotnet/System.Private.Uri.dll" + ] + }, + "runtime.win7.System.Runtime.Extensions/4.0.11-beta-23321": { + "sha512": "jMQn6PkMslU56xyId0aeJ0u+GhRFd8KCensMIC1eIgLDNb4RviMVCcro3off7jSNGjn26/7jCBgzxlca9DT1og==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/de/System.Runtime.Extensions.xml", + "lib/DNXCore50/es/System.Runtime.Extensions.xml", + "lib/DNXCore50/fr/System.Runtime.Extensions.xml", + "lib/DNXCore50/it/System.Runtime.Extensions.xml", + "lib/DNXCore50/ja/System.Runtime.Extensions.xml", + "lib/DNXCore50/ko/System.Runtime.Extensions.xml", + "lib/DNXCore50/ru/System.Runtime.Extensions.xml", + "lib/DNXCore50/System.Runtime.Extensions.dll", + "lib/DNXCore50/System.Runtime.Extensions.xml", + "lib/DNXCore50/zh-hans/System.Runtime.Extensions.xml", + "lib/DNXCore50/zh-hant/System.Runtime.Extensions.xml", + "lib/netcore50/de/System.Runtime.Extensions.xml", + "lib/netcore50/es/System.Runtime.Extensions.xml", + "lib/netcore50/fr/System.Runtime.Extensions.xml", + "lib/netcore50/it/System.Runtime.Extensions.xml", + "lib/netcore50/ja/System.Runtime.Extensions.xml", + "lib/netcore50/ko/System.Runtime.Extensions.xml", + "lib/netcore50/ru/System.Runtime.Extensions.xml", + "lib/netcore50/System.Runtime.Extensions.dll", + "lib/netcore50/System.Runtime.Extensions.xml", + "lib/netcore50/zh-hans/System.Runtime.Extensions.xml", + "lib/netcore50/zh-hant/System.Runtime.Extensions.xml", + "package/services/metadata/core-properties/5fe9fdfb2e8c42af98299ffeba9362f2.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Runtime.Extensions.nuspec", + "runtimes/win8-aot/lib/netcore50/de/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.dll", + "runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Runtime.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Runtime.Extensions.xml" + ] + }, + "runtime.win7.System.Threading/4.0.11-beta-23321": { + "sha512": "9S9vqzTsHTp59g7TSJEBUbG7fgZoSM9i1bbP7QWzksILC+ga7Uw8cgg6G/TSgYoCDc8m0gylokUJRFevDyQJbg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "package/services/metadata/core-properties/fbfb81aeaff0453488443fc63880a207.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Threading.nuspec", + "runtimes/win7/lib/dotnet/de/System.Threading.xml", + "runtimes/win7/lib/dotnet/es/System.Threading.xml", + "runtimes/win7/lib/dotnet/fr/System.Threading.xml", + "runtimes/win7/lib/dotnet/it/System.Threading.xml", + "runtimes/win7/lib/dotnet/ja/System.Threading.xml", + "runtimes/win7/lib/dotnet/ko/System.Threading.xml", + "runtimes/win7/lib/dotnet/ru/System.Threading.xml", + "runtimes/win7/lib/dotnet/System.Threading.dll", + "runtimes/win7/lib/dotnet/System.Threading.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.Threading.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.Threading.xml" ] }, - "System.AppContext/4.0.1-beta-23310": { - "sha512": "kBkEyjTSpcPkBavdqcUTpEDOStAhEeM9eGGFpw5lql6q5Pcc1HPIQF5rJSUHlPZ+Um0RcDMEn9f8ouyu8gqPpg==", + "System.AppContext/4.0.1-beta-23321": { + "sha512": "zgHil87pNujqxKijXCLe86T2wWu5cgXScY01WTbbJomJhTy79RWK7Xf+nK8V2AYowhZduMICjPjT7//D+5Os9g==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.AppContext.xml", - "es/System.AppContext.xml", - "fr/System.AppContext.xml", - "it/System.AppContext.xml", - "ja/System.AppContext.xml", - "ko/System.AppContext.xml", "lib/DNXCore50/System.AppContext.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/System.AppContext.dll", + "lib/netcore50/de/System.AppContext.xml", + "lib/netcore50/es/System.AppContext.xml", + "lib/netcore50/fr/System.AppContext.xml", + "lib/netcore50/it/System.AppContext.xml", + "lib/netcore50/ja/System.AppContext.xml", + "lib/netcore50/ko/System.AppContext.xml", + "lib/netcore50/ru/System.AppContext.xml", "lib/netcore50/System.AppContext.dll", + "lib/netcore50/System.AppContext.xml", + "lib/netcore50/zh-hans/System.AppContext.xml", + "lib/netcore50/zh-hant/System.AppContext.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/ae6c59f4f2b9442e801c3e4cae3c48ac.psmdcp", + "package/services/metadata/core-properties/9f60e94389c84a7a89692aa1ff8863bb.psmdcp", "ref/dotnet/System.AppContext.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/System.AppContext.dll", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.AppContext.xml", - "System.AppContext.nuspec", - "System.AppContext.xml", - "zh-hans/System.AppContext.xml", - "zh-hant/System.AppContext.xml" + "System.AppContext.nuspec" ] }, - "System.Collections/4.0.11-beta-23310": { - "sha512": "00LlXSlJZ6vQv7Y1kp81NW08FqUE7/6xyMWhwhAfApFNeuTdvsGvB6Yo5dy79+wkePcL9hxrWd2PB+1UeiH2nw==", + "System.Collections/4.0.11-beta-23321": { + "sha512": "ShjDeJqXRSn2uiTsLq5xDpI9bQcp3petLDf9VlbGxla6BmPb/jiEQa7ljbYMdAuPH70epGItEPW6wS6ql0bXUQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Collections.xml", - "es/System.Collections.xml", - "fr/System.Collections.xml", - "it/System.Collections.xml", - "ja/System.Collections.xml", - "ko/System.Collections.xml", + "lib/DNXCore50/de/System.Collections.xml", + "lib/DNXCore50/es/System.Collections.xml", + "lib/DNXCore50/fr/System.Collections.xml", + "lib/DNXCore50/it/System.Collections.xml", + "lib/DNXCore50/ja/System.Collections.xml", + "lib/DNXCore50/ko/System.Collections.xml", + "lib/DNXCore50/ru/System.Collections.xml", "lib/DNXCore50/System.Collections.dll", + "lib/DNXCore50/System.Collections.xml", + "lib/DNXCore50/zh-hans/System.Collections.xml", + "lib/DNXCore50/zh-hant/System.Collections.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", + "lib/netcore50/de/System.Collections.xml", + "lib/netcore50/es/System.Collections.xml", + "lib/netcore50/fr/System.Collections.xml", + "lib/netcore50/it/System.Collections.xml", + "lib/netcore50/ja/System.Collections.xml", + "lib/netcore50/ko/System.Collections.xml", + "lib/netcore50/ru/System.Collections.xml", "lib/netcore50/System.Collections.dll", + "lib/netcore50/System.Collections.xml", + "lib/netcore50/zh-hans/System.Collections.xml", + "lib/netcore50/zh-hant/System.Collections.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/9799a8f8842e43d48abd31355466f3eb.psmdcp", + "package/services/metadata/core-properties/f833fc65fe5247d2b8974961da40e893.psmdcp", "ref/dotnet/System.Collections.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Collections.xml", "runtimes/win8-aot/lib/netcore50/System.Collections.dll", - "System.Collections.nuspec", - "System.Collections.xml", - "zh-hans/System.Collections.xml", - "zh-hant/System.Collections.xml" + "runtimes/win8-aot/lib/netcore50/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Collections.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Collections.xml", + "System.Collections.nuspec" + ] + }, + "System.Collections.Concurrent/4.0.10": { + "sha512": "ZtMEqOPAjAIqR8fqom9AOKRaB94a+emO2O8uOP6vyJoNswSPrbiwN7iH53rrVpvjMVx0wr4/OMpI7486uGZjbw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Collections.Concurrent.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/c982a1e1e1644b62952fc4d4dcbe0d42.psmdcp", + "ref/dotnet/de/System.Collections.Concurrent.xml", + "ref/dotnet/es/System.Collections.Concurrent.xml", + "ref/dotnet/fr/System.Collections.Concurrent.xml", + "ref/dotnet/it/System.Collections.Concurrent.xml", + "ref/dotnet/ja/System.Collections.Concurrent.xml", + "ref/dotnet/ko/System.Collections.Concurrent.xml", + "ref/dotnet/ru/System.Collections.Concurrent.xml", + "ref/dotnet/System.Collections.Concurrent.dll", + "ref/dotnet/System.Collections.Concurrent.xml", + "ref/dotnet/zh-hans/System.Collections.Concurrent.xml", + "ref/dotnet/zh-hant/System.Collections.Concurrent.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Collections.Concurrent.nuspec" ] }, "System.Collections.Immutable/1.1.36": { @@ -2182,30 +3167,30 @@ "System.Collections.Immutable.nuspec" ] }, - "System.Console/4.0.0-beta-23302": { - "sha512": "rpWEkJWW29TjVZdDz5zr8VnBv4IN9BQHmP4Ky9tEbvkdhkJRb0ZO59acXMpVD1tSM2VhGlLnq0kpdjOLNmejNA==", + "System.Console/4.0.0-beta-23321": { + "sha512": "T+3GU5sqNEY6FQrcBq+OxgGmR3iocoyCIaH486/jrHvYiDI2fJYuIQQMFfDom7lK9ALuyGQo6DHtIP8gvPtU4w==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "lib/DNXCore50/System.Console.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/System.Console.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/7b3264a37b224ed5912be4d0b9654610.psmdcp", + "package/services/metadata/core-properties/a6484cacbf364fb1bc265b95a9c5ee1e.psmdcp", "ref/dotnet/System.Console.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/System.Console.dll", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", + "runtime.json", "System.Console.nuspec" ] }, - "System.Diagnostics.Contracts/4.0.1-beta-23310": { - "sha512": "F86AfH5Vr2pAuhAQuZt6qXlP8W+h7mfrIrUZsU3PONsJJqG2qga3yeDgrYnFXloAwO9fNhkfBR5RvpT3o/fZ8Q==", + "System.Diagnostics.Contracts/4.0.1-beta-23321": { + "sha512": "uQBLdUyCPp0fwVdlmDb002cVwqDfgdwZOKyAMCQFIaYVvgrDc5LVhBdUC5DbTnD9yoNmKaudN4wphEUZc7UmKw==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2216,7 +3201,7 @@ "lib/win8/_._", "lib/wp80/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/bfcc1beb505d4c1887c130d989f0350c.psmdcp", + "package/services/metadata/core-properties/aa4cbb3734984eeabf9662196665c772.psmdcp", "ref/dotnet/System.Diagnostics.Contracts.dll", "ref/net45/_._", "ref/netcore50/System.Diagnostics.Contracts.dll", @@ -2227,151 +3212,226 @@ "System.Diagnostics.Contracts.nuspec" ] }, - "System.Diagnostics.Debug/4.0.11-beta-23310": { - "sha512": "eJoJMGp+tiQ2CpzV1mlzN2bCyys3BJ7XiJ906XcRiJesmaoatwwEfxl5bg68QuOXijv41n+SxetIU3ASDaFRwQ==", + "System.Diagnostics.Debug/4.0.11-beta-23321": { + "sha512": "4R6FjkoZEnCFNFG7RX7bgugxyLt7K4AMoeM9pobL31WRK7G3l/8AjAArAIxStTP0mYOQBDfnuzEy7A6GtPPVrQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Diagnostics.Debug.xml", - "es/System.Diagnostics.Debug.xml", - "fr/System.Diagnostics.Debug.xml", - "it/System.Diagnostics.Debug.xml", - "ja/System.Diagnostics.Debug.xml", - "ko/System.Diagnostics.Debug.xml", - "lib/DNXCore50/System.Diagnostics.Debug.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", - "lib/netcore50/System.Diagnostics.Debug.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/5101957011a5470cbb8e7212b9fa4987.psmdcp", + "package/services/metadata/core-properties/d09b3b4ae77f4521a143a18383509727.psmdcp", "ref/dotnet/System.Diagnostics.Debug.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Diagnostics.Debug.xml", + "runtime.json", "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Debug.dll", - "System.Diagnostics.Debug.nuspec", - "System.Diagnostics.Debug.xml", - "zh-hans/System.Diagnostics.Debug.xml", - "zh-hant/System.Diagnostics.Debug.xml" + "System.Diagnostics.Debug.nuspec" + ] + }, + "System.Diagnostics.FileVersionInfo/4.0.0-beta-23321": { + "sha512": "8A1yWiMTN/rrxg8u+10hFGLf94zZa/AorhYoVviuRPbl+UeYd6wPjAYt8RVlm05X2iB10MM7H0JgNjgJeCC5Ig==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Diagnostics.FileVersionInfo.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/7e9bd4814bac467ea31b75a1c4b2eaab.psmdcp", + "ref/dotnet/System.Diagnostics.FileVersionInfo.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Diagnostics.FileVersionInfo.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtime.json", + "System.Diagnostics.FileVersionInfo.nuspec" ] }, - "System.Diagnostics.Process/4.1.0-beta-23310": { - "sha512": "wXXswlCCR1ArC/J7/rpYRg1gxvhGjtz1RO8+ix+IPypfGxVx6hVZcss6JfOwVQ49/cyj/j76/vBe3DY6zmHiSg==", + "System.Diagnostics.Process/4.1.0-beta-23321": { + "sha512": "uyJkM1sHuj25J1MCwgWkrtDzj8zDQFf5Lq81MMcuiTN5vPro5OFch6mS1OQeQwh4rMhcuEab56xz+nKWFBpDuA==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Diagnostics.Process.xml", - "es/System.Diagnostics.Process.xml", - "fr/System.Diagnostics.Process.xml", - "it/System.Diagnostics.Process.xml", - "ja/System.Diagnostics.Process.xml", - "ko/System.Diagnostics.Process.xml", - "lib/DNXCore50/System.Diagnostics.Process.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", + "lib/net46/de/System.Diagnostics.Process.xml", + "lib/net46/es/System.Diagnostics.Process.xml", + "lib/net46/fr/System.Diagnostics.Process.xml", + "lib/net46/it/System.Diagnostics.Process.xml", + "lib/net46/ja/System.Diagnostics.Process.xml", + "lib/net46/ko/System.Diagnostics.Process.xml", + "lib/net46/ru/System.Diagnostics.Process.xml", "lib/net46/System.Diagnostics.Process.dll", + "lib/net46/System.Diagnostics.Process.xml", + "lib/net46/zh-hans/System.Diagnostics.Process.xml", + "lib/net46/zh-hant/System.Diagnostics.Process.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/2f8026410d2249c7b80fe059c2bcc308.psmdcp", + "package/services/metadata/core-properties/9f8bf204da1b44bebe5820c2a2f46af0.psmdcp", "ref/dotnet/System.Diagnostics.Process.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", + "ref/net46/de/System.Diagnostics.Process.xml", + "ref/net46/es/System.Diagnostics.Process.xml", + "ref/net46/fr/System.Diagnostics.Process.xml", + "ref/net46/it/System.Diagnostics.Process.xml", + "ref/net46/ja/System.Diagnostics.Process.xml", + "ref/net46/ko/System.Diagnostics.Process.xml", + "ref/net46/ru/System.Diagnostics.Process.xml", "ref/net46/System.Diagnostics.Process.dll", + "ref/net46/System.Diagnostics.Process.xml", + "ref/net46/zh-hans/System.Diagnostics.Process.xml", + "ref/net46/zh-hant/System.Diagnostics.Process.xml", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Diagnostics.Process.xml", - "System.Diagnostics.Process.nuspec", - "System.Diagnostics.Process.xml", - "zh-hans/System.Diagnostics.Process.xml", - "zh-hant/System.Diagnostics.Process.xml" + "runtime.json", + "System.Diagnostics.Process.nuspec" ] }, - "System.Diagnostics.StackTrace/4.0.1-beta-23310": { - "sha512": "924kqdQ0C7wKs0DcSWXGz+GNG2aavaUQOZi7Lv7AeU1XZg5wjO0jlY8QQh9w67NnBrS88y5WoG4Zjz1tC50psw==", + "System.Diagnostics.StackTrace/4.0.1-beta-23321": { + "sha512": "Z6ISAYpE/EFWjHKlKHIwaYKmJdQfTNGFg/It2XXZnVC0iK9wU6n3nCJEQQPtNGCsUFOuS1lR4IcZ1DJg2zOcDw==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Diagnostics.StackTrace.xml", - "es/System.Diagnostics.StackTrace.xml", - "fr/System.Diagnostics.StackTrace.xml", - "it/System.Diagnostics.StackTrace.xml", - "ja/System.Diagnostics.StackTrace.xml", - "ko/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/de/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/es/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/fr/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/it/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/ja/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/ko/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/ru/System.Diagnostics.StackTrace.xml", "lib/DNXCore50/System.Diagnostics.StackTrace.dll", + "lib/DNXCore50/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/zh-hans/System.Diagnostics.StackTrace.xml", + "lib/DNXCore50/zh-hant/System.Diagnostics.StackTrace.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", + "lib/net46/de/System.Diagnostics.StackTrace.xml", + "lib/net46/es/System.Diagnostics.StackTrace.xml", + "lib/net46/fr/System.Diagnostics.StackTrace.xml", + "lib/net46/it/System.Diagnostics.StackTrace.xml", + "lib/net46/ja/System.Diagnostics.StackTrace.xml", + "lib/net46/ko/System.Diagnostics.StackTrace.xml", + "lib/net46/ru/System.Diagnostics.StackTrace.xml", "lib/net46/System.Diagnostics.StackTrace.dll", + "lib/net46/System.Diagnostics.StackTrace.xml", + "lib/net46/zh-hans/System.Diagnostics.StackTrace.xml", + "lib/net46/zh-hant/System.Diagnostics.StackTrace.xml", + "lib/netcore50/de/System.Diagnostics.StackTrace.xml", + "lib/netcore50/es/System.Diagnostics.StackTrace.xml", + "lib/netcore50/fr/System.Diagnostics.StackTrace.xml", + "lib/netcore50/it/System.Diagnostics.StackTrace.xml", + "lib/netcore50/ja/System.Diagnostics.StackTrace.xml", + "lib/netcore50/ko/System.Diagnostics.StackTrace.xml", + "lib/netcore50/ru/System.Diagnostics.StackTrace.xml", "lib/netcore50/System.Diagnostics.StackTrace.dll", + "lib/netcore50/System.Diagnostics.StackTrace.xml", + "lib/netcore50/zh-hans/System.Diagnostics.StackTrace.xml", + "lib/netcore50/zh-hant/System.Diagnostics.StackTrace.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/abd16fc6cf0c47f7971050f801144a25.psmdcp", + "package/services/metadata/core-properties/fbc1a675ca0e44bf800a7de202099cfa.psmdcp", "ref/dotnet/System.Diagnostics.StackTrace.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", + "ref/net46/de/System.Diagnostics.StackTrace.xml", + "ref/net46/es/System.Diagnostics.StackTrace.xml", + "ref/net46/fr/System.Diagnostics.StackTrace.xml", + "ref/net46/it/System.Diagnostics.StackTrace.xml", + "ref/net46/ja/System.Diagnostics.StackTrace.xml", + "ref/net46/ko/System.Diagnostics.StackTrace.xml", + "ref/net46/ru/System.Diagnostics.StackTrace.xml", "ref/net46/System.Diagnostics.StackTrace.dll", + "ref/net46/System.Diagnostics.StackTrace.xml", + "ref/net46/zh-hans/System.Diagnostics.StackTrace.xml", + "ref/net46/zh-hant/System.Diagnostics.StackTrace.xml", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Diagnostics.StackTrace.xml", "runtimes/win8-aot/lib/netcore50/System.Diagnostics.StackTrace.dll", - "System.Diagnostics.StackTrace.nuspec", - "System.Diagnostics.StackTrace.xml", - "zh-hans/System.Diagnostics.StackTrace.xml", - "zh-hant/System.Diagnostics.StackTrace.xml" + "runtimes/win8-aot/lib/netcore50/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Diagnostics.StackTrace.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Diagnostics.StackTrace.xml", + "System.Diagnostics.StackTrace.nuspec" ] }, - "System.Diagnostics.Tools/4.0.1-beta-23310": { - "sha512": "lytBnGjh3IiPeBLKu4+cO5B4Rh87n/wmkEaK8wPGcnCH77YcITerghJuom+ssP6oISodTXervHSaOUIXbTuWIw==", + "System.Diagnostics.Tools/4.0.1-beta-23321": { + "sha512": "xoM7gy0T1QBgDeMvoMkOdCKlWvgQofBFVaFkMNfCKNC57L/ri4zZG5bDmhnkO9LXkjQ+rfbBBU/nwRpXGNBXMg==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Diagnostics.Tools.xml", - "es/System.Diagnostics.Tools.xml", - "fr/System.Diagnostics.Tools.xml", - "it/System.Diagnostics.Tools.xml", - "ja/System.Diagnostics.Tools.xml", - "ko/System.Diagnostics.Tools.xml", + "lib/DNXCore50/de/System.Diagnostics.Tools.xml", + "lib/DNXCore50/es/System.Diagnostics.Tools.xml", + "lib/DNXCore50/fr/System.Diagnostics.Tools.xml", + "lib/DNXCore50/it/System.Diagnostics.Tools.xml", + "lib/DNXCore50/ja/System.Diagnostics.Tools.xml", + "lib/DNXCore50/ko/System.Diagnostics.Tools.xml", + "lib/DNXCore50/ru/System.Diagnostics.Tools.xml", "lib/DNXCore50/System.Diagnostics.Tools.dll", + "lib/DNXCore50/System.Diagnostics.Tools.xml", + "lib/DNXCore50/zh-hans/System.Diagnostics.Tools.xml", + "lib/DNXCore50/zh-hant/System.Diagnostics.Tools.xml", "lib/net45/_._", + "lib/netcore50/de/System.Diagnostics.Tools.xml", + "lib/netcore50/es/System.Diagnostics.Tools.xml", + "lib/netcore50/fr/System.Diagnostics.Tools.xml", + "lib/netcore50/it/System.Diagnostics.Tools.xml", + "lib/netcore50/ja/System.Diagnostics.Tools.xml", + "lib/netcore50/ko/System.Diagnostics.Tools.xml", + "lib/netcore50/ru/System.Diagnostics.Tools.xml", "lib/netcore50/System.Diagnostics.Tools.dll", + "lib/netcore50/System.Diagnostics.Tools.xml", + "lib/netcore50/zh-hans/System.Diagnostics.Tools.xml", + "lib/netcore50/zh-hant/System.Diagnostics.Tools.xml", "lib/win8/_._", "lib/wp80/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/b3f6344974ea4966a70c17b389d1f1c3.psmdcp", + "package/services/metadata/core-properties/96b131cbd7b7440b802f9771a0027282.psmdcp", "ref/dotnet/System.Diagnostics.Tools.dll", "ref/net45/_._", "ref/netcore50/System.Diagnostics.Tools.dll", "ref/win8/_._", "ref/wp80/_._", "ref/wpa81/_._", - "ru/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Diagnostics.Tools.xml", "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tools.dll", - "System.Diagnostics.Tools.nuspec", - "System.Diagnostics.Tools.xml", - "zh-hans/System.Diagnostics.Tools.xml", - "zh-hant/System.Diagnostics.Tools.xml" + "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Diagnostics.Tools.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Diagnostics.Tools.xml", + "System.Diagnostics.Tools.nuspec" ] }, - "System.Diagnostics.Tracing/4.0.21-beta-23310": { - "sha512": "lkbe5RXVagS6+4oqulmll9HQxUOqfPlPWxkFAcEAFWwXLFLjh+pSo0PdsfKZCqAiz5h8vd1h2YLOoGCrS+61Ew==", + "System.Diagnostics.Tracing/4.0.21-beta-23321": { + "sha512": "OiIKj+DaWak1aN8M61SWIUniknrOV5WWhJy5pP1kwcFQ4JkCDWe+yTIXn2EfQdvzAfkLBNqr8u5wa1fVK9OwLg==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Diagnostics.Tracing.xml", - "es/System.Diagnostics.Tracing.xml", - "fr/System.Diagnostics.Tracing.xml", - "it/System.Diagnostics.Tracing.xml", - "ja/System.Diagnostics.Tracing.xml", - "ko/System.Diagnostics.Tracing.xml", "lib/DNXCore50/System.Diagnostics.Tracing.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", @@ -2379,23 +3439,83 @@ "lib/netcore50/System.Diagnostics.Tracing.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/99111b10521449d086b67a00ef9dcd7f.psmdcp", + "package/services/metadata/core-properties/0cf13c4ba4f740cba9eb61b4514f6bbd.psmdcp", "ref/dotnet/System.Diagnostics.Tracing.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Diagnostics.Tracing.xml", "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tracing.dll", - "System.Diagnostics.Tracing.nuspec", - "System.Diagnostics.Tracing.xml", - "zh-hans/System.Diagnostics.Tracing.xml", - "zh-hant/System.Diagnostics.Tracing.xml" + "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Diagnostics.Tracing.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Diagnostics.Tracing.xml", + "System.Diagnostics.Tracing.nuspec" + ] + }, + "System.Dynamic.Runtime/4.0.11-beta-23321": { + "sha512": "nLFraVth0r3h7zEizl4mNafksP3NHGJxEX8vl+Rbs41yvs5+6XUw/xeOhySxkjHoUZBp6Y9d6GrU0raP54vhFQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/de/System.Dynamic.Runtime.xml", + "lib/DNXCore50/es/System.Dynamic.Runtime.xml", + "lib/DNXCore50/fr/System.Dynamic.Runtime.xml", + "lib/DNXCore50/it/System.Dynamic.Runtime.xml", + "lib/DNXCore50/ja/System.Dynamic.Runtime.xml", + "lib/DNXCore50/ko/System.Dynamic.Runtime.xml", + "lib/DNXCore50/ru/System.Dynamic.Runtime.xml", + "lib/DNXCore50/System.Dynamic.Runtime.dll", + "lib/DNXCore50/System.Dynamic.Runtime.xml", + "lib/DNXCore50/zh-hans/System.Dynamic.Runtime.xml", + "lib/DNXCore50/zh-hant/System.Dynamic.Runtime.xml", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/de/System.Dynamic.Runtime.xml", + "lib/netcore50/es/System.Dynamic.Runtime.xml", + "lib/netcore50/fr/System.Dynamic.Runtime.xml", + "lib/netcore50/it/System.Dynamic.Runtime.xml", + "lib/netcore50/ja/System.Dynamic.Runtime.xml", + "lib/netcore50/ko/System.Dynamic.Runtime.xml", + "lib/netcore50/ru/System.Dynamic.Runtime.xml", + "lib/netcore50/System.Dynamic.Runtime.dll", + "lib/netcore50/System.Dynamic.Runtime.xml", + "lib/netcore50/zh-hans/System.Dynamic.Runtime.xml", + "lib/netcore50/zh-hant/System.Dynamic.Runtime.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/800b57cff91d4981b9f0ba8129029f78.psmdcp", + "ref/dotnet/System.Dynamic.Runtime.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/de/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/System.Dynamic.Runtime.dll", + "runtimes/win8-aot/lib/netcore50/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Dynamic.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Dynamic.Runtime.xml", + "System.Dynamic.Runtime.nuspec" ] }, - "System.Globalization/4.0.11-beta-23310": { - "sha512": "Xuoyqp1diV1dKNEAP+V98XvGXkcufEF9S7vRXMOaz/9gp9i81O9WcCSPAhiGgHaRCo29hdMQYbqsKLdgZgZJPA==", + "System.Globalization/4.0.11-beta-23321": { + "sha512": "x2xt0ZWdRlG2HdyTCE2Nw5rVvCVAB/VUwQdD51MN/ymGIQpqgrijiMCaqY3NA2sCFdViTuJOwBOaOjd02PKquQ==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2407,7 +3527,7 @@ "lib/netcore50/System.Globalization.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/abb295d9081644e6aaf47a415738b7dc.psmdcp", + "package/services/metadata/core-properties/fbfb4b8becac4cf6b73f30cb91af51e0.psmdcp", "ref/dotnet/System.Globalization.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -2418,8 +3538,8 @@ "System.Globalization.nuspec" ] }, - "System.Globalization.Calendars/4.0.1-beta-23310": { - "sha512": "dSF4mwREyLcpp2zSi8KiZ9eid0x3C+w49kFZ42j1dq602vP51RbeKv6KLbCe40+OD2qZH9d+dyXygYfcreITMg==", + "System.Globalization.Calendars/4.0.1-beta-23321": { + "sha512": "nPrmcTQHZGygVw8njyFVXDMNyHDyA5YLrfnBR8Do0vR02OmWAkfLA8jETZIiroIBHfynPda56GVVyUxHjXDhoQ==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2431,7 +3551,7 @@ "lib/netcore50/System.Globalization.Calendars.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/bb2c4aed55eb4a0cba73e69fbba0dfba.psmdcp", + "package/services/metadata/core-properties/2a5ed4057ec745739a290228c7436f53.psmdcp", "ref/dotnet/System.Globalization.Calendars.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -2442,200 +3562,244 @@ "System.Globalization.Calendars.nuspec" ] }, - "System.IO/4.0.11-beta-23310": { - "sha512": "6xSQJONw692DeSWJ3VwmbnlL+XkwnYTb3YLl22sND6eQps74VWCxeHlXqUy1REKXkk5EgzwpCz6MDv9HrLLdgg==", + "System.IO/4.0.11-beta-23321": { + "sha512": "HozIN1RtKBRBNLePHGKUkvaLDs3d2ytO7jYD0PJEjfprB5tEapX69hEH8MpWu8a2JtuWH4n8Sqb2MJ4I0whQ6Q==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.IO.xml", - "es/System.IO.xml", - "fr/System.IO.xml", - "it/System.IO.xml", - "ja/System.IO.xml", - "ko/System.IO.xml", + "lib/DNXCore50/de/System.IO.xml", + "lib/DNXCore50/es/System.IO.xml", + "lib/DNXCore50/fr/System.IO.xml", + "lib/DNXCore50/it/System.IO.xml", + "lib/DNXCore50/ja/System.IO.xml", + "lib/DNXCore50/ko/System.IO.xml", + "lib/DNXCore50/ru/System.IO.xml", "lib/DNXCore50/System.IO.dll", + "lib/DNXCore50/System.IO.xml", + "lib/DNXCore50/zh-hans/System.IO.xml", + "lib/DNXCore50/zh-hant/System.IO.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", + "lib/netcore50/de/System.IO.xml", + "lib/netcore50/es/System.IO.xml", + "lib/netcore50/fr/System.IO.xml", + "lib/netcore50/it/System.IO.xml", + "lib/netcore50/ja/System.IO.xml", + "lib/netcore50/ko/System.IO.xml", + "lib/netcore50/ru/System.IO.xml", "lib/netcore50/System.IO.dll", + "lib/netcore50/System.IO.xml", + "lib/netcore50/zh-hans/System.IO.xml", + "lib/netcore50/zh-hant/System.IO.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/d20b4f9571f94180bdb50d5889eb59c5.psmdcp", + "package/services/metadata/core-properties/56ba00f750f24a5da2376c4023582747.psmdcp", "ref/dotnet/System.IO.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/de/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/es/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/it/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.IO.xml", "runtimes/win8-aot/lib/netcore50/System.IO.dll", - "System.IO.nuspec", - "System.IO.xml", - "zh-hans/System.IO.xml", - "zh-hant/System.IO.xml" + "runtimes/win8-aot/lib/netcore50/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.IO.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.IO.xml", + "System.IO.nuspec" ] }, - "System.IO.FileSystem/4.0.1-beta-23302": { - "sha512": "wnuZBIgGmS9Vj5fDzaeJ1641VTSFXW559VMFmuASU3wQEjYjE+PGaP8UY57aFS74vl00ymGLGmG5VXz1R7lQ1Q==", + "System.IO.FileSystem/4.0.1-beta-23321": { + "sha512": "4HrW5zPva1J19l/g1a5tDfm35fGV98sSgT1dDr/DQcxBA4njuzWdML3dU6NAWZw0lTlmLedd1qNc9emAzMGUaw==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "lib/DNXCore50/System.IO.FileSystem.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/System.IO.FileSystem.dll", - "lib/netcore50/System.IO.FileSystem.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/448bc12fa4fe4b00ad0ba50f573d316d.psmdcp", + "package/services/metadata/core-properties/51d437692fb84181b0a8db020860cea9.psmdcp", "ref/dotnet/System.IO.FileSystem.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/System.IO.FileSystem.dll", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", + "runtime.json", "System.IO.FileSystem.nuspec" ] }, - "System.IO.FileSystem.Primitives/4.0.1-beta-23310": { - "sha512": "gzhQDPnvvUQnMxxTkXnifOEiEV+EoCHsWogESLR3sftSW5hNs/tDEHe/JInxSWyP0H5NM/pNKLufbVMjjV02gA==", + "System.IO.FileSystem.Primitives/4.0.0": { + "sha512": "7pJUvYi/Yq3A5nagqCCiOw3+aJp3xXc/Cjr8dnJDnER3/6kX3LEencfqmXUcPl9+7OvRNyPMNhqsLAcMK6K/KA==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.IO.FileSystem.Primitives.xml", - "es/System.IO.FileSystem.Primitives.xml", - "fr/System.IO.FileSystem.Primitives.xml", - "it/System.IO.FileSystem.Primitives.xml", - "ja/System.IO.FileSystem.Primitives.xml", - "ko/System.IO.FileSystem.Primitives.xml", "lib/dotnet/System.IO.FileSystem.Primitives.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/System.IO.FileSystem.Primitives.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/d06a7a9f8aa54012b1fb23c8d5191600.psmdcp", + "package/services/metadata/core-properties/2cf3542156f0426483f92b9e37d8d381.psmdcp", + "ref/dotnet/de/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/es/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/fr/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/it/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/ja/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/ko/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/ru/System.IO.FileSystem.Primitives.xml", "ref/dotnet/System.IO.FileSystem.Primitives.dll", + "ref/dotnet/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/zh-hans/System.IO.FileSystem.Primitives.xml", + "ref/dotnet/zh-hant/System.IO.FileSystem.Primitives.xml", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/System.IO.FileSystem.Primitives.dll", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.IO.FileSystem.Primitives.xml", - "System.IO.FileSystem.Primitives.nuspec", - "System.IO.FileSystem.Primitives.xml", - "zh-hans/System.IO.FileSystem.Primitives.xml", - "zh-hant/System.IO.FileSystem.Primitives.xml" + "System.IO.FileSystem.Primitives.nuspec" ] }, - "System.IO.Pipes/4.0.0-beta-23310": { - "sha512": "mKPNHkbq5iTdncSjVEBjAdfpdfduc5/fO4nmZMV//7Blx5wMs1wbVAeftcRMW12xNCASTl+E/DfM4pyRW2hSaQ==", + "System.IO.Pipes/4.0.0-beta-23321": { + "sha512": "1wL5QKz+W6qD41HEeWizKQr3vtO/htd2pm/Y80jUSMnsEhih3LZqLjgTbJK95nVYwYpaltWCx+lA2gGgG2dZJw==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.IO.Pipes.xml", - "es/System.IO.Pipes.xml", - "fr/System.IO.Pipes.xml", - "it/System.IO.Pipes.xml", - "ja/System.IO.Pipes.xml", - "ko/System.IO.Pipes.xml", - "lib/DNXCore50/System.IO.Pipes.dll", "lib/net46/System.IO.Pipes.dll", - "package/services/metadata/core-properties/7000d59a59c2435395661f40203583d1.psmdcp", + "package/services/metadata/core-properties/fbdfaaee2e974aa3b62dcd9c3a0caf16.psmdcp", "ref/dotnet/System.IO.Pipes.dll", "ref/net46/System.IO.Pipes.dll", - "ru/System.IO.Pipes.xml", - "System.IO.Pipes.nuspec", - "System.IO.Pipes.xml", - "zh-hans/System.IO.Pipes.xml", - "zh-hant/System.IO.Pipes.xml" + "runtime.json", + "System.IO.Pipes.nuspec" ] }, - "System.Linq/4.0.1-beta-23310": { - "sha512": "LWlC6mAtBXdAE6B4cPJlllMwz9bnHs2IDSGm3JLKGzsi2fgjQUbqX8J2yFXcGM33re647DY1zR6Y7u0Y9ZdD8Q==", + "System.Linq/4.0.1-beta-23321": { + "sha512": "uw60zm0oDkqeZ1tX/1Ok1o3P1JCDVd4iVjUNNb+zhm8ZcmXZC4LSJKAO4hrkwmCxZlsUskBK9H/f1mJbG3cv4g==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Linq.xml", - "es/System.Linq.xml", - "fr/System.Linq.xml", - "it/System.Linq.xml", - "ja/System.Linq.xml", - "ko/System.Linq.xml", + "lib/dotnet/de/System.Linq.xml", + "lib/dotnet/es/System.Linq.xml", + "lib/dotnet/fr/System.Linq.xml", + "lib/dotnet/it/System.Linq.xml", + "lib/dotnet/ja/System.Linq.xml", + "lib/dotnet/ko/System.Linq.xml", + "lib/dotnet/ru/System.Linq.xml", "lib/dotnet/System.Linq.dll", + "lib/dotnet/System.Linq.xml", + "lib/dotnet/zh-hans/System.Linq.xml", + "lib/dotnet/zh-hant/System.Linq.xml", "lib/net45/_._", "lib/netcore50/System.Linq.dll", + "lib/netcore50/System.Linq.xml", "lib/win8/_._", "lib/wp80/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/382f5db13ee44cbfb2444a411ae6737a.psmdcp", + "package/services/metadata/core-properties/62d6902652794f8a9216c34686d9ba4b.psmdcp", "ref/dotnet/System.Linq.dll", "ref/net45/_._", "ref/netcore50/System.Linq.dll", "ref/win8/_._", "ref/wp80/_._", "ref/wpa81/_._", - "ru/System.Linq.xml", - "System.Linq.nuspec", - "System.Linq.xml", - "zh-hans/System.Linq.xml", - "zh-hant/System.Linq.xml" + "System.Linq.nuspec" + ] + }, + "System.Linq.Expressions/4.0.10": { + "sha512": "qhFkPqRsTfXBaacjQhxwwwUoU7TEtwlBIULj7nG7i4qAkvivil31VvOvDKppCSui5yGw0/325ZeNaMYRvTotXw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Linq.Expressions.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Linq.Expressions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/4e3c061f7c0a427fa5b65bd3d84e9bc3.psmdcp", + "ref/dotnet/de/System.Linq.Expressions.xml", + "ref/dotnet/es/System.Linq.Expressions.xml", + "ref/dotnet/fr/System.Linq.Expressions.xml", + "ref/dotnet/it/System.Linq.Expressions.xml", + "ref/dotnet/ja/System.Linq.Expressions.xml", + "ref/dotnet/ko/System.Linq.Expressions.xml", + "ref/dotnet/ru/System.Linq.Expressions.xml", + "ref/dotnet/System.Linq.Expressions.dll", + "ref/dotnet/System.Linq.Expressions.xml", + "ref/dotnet/zh-hans/System.Linq.Expressions.xml", + "ref/dotnet/zh-hant/System.Linq.Expressions.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtime.json", + "runtimes/win8-aot/lib/netcore50/System.Linq.Expressions.dll", + "System.Linq.Expressions.nuspec" ] }, - "System.ObjectModel/4.0.11-beta-23310": { - "sha512": "GSlwciGSaW5plBrafIg8sd65TAtEXOhAdQm7qdnZ3YnucLbDdE9T/SHXn1dZzBaTImhJ/e52wK50sIdLHgemYA==", + "System.ObjectModel/4.0.11-beta-23321": { + "sha512": "EzC3uRo6wziGKAOLxgeXSc3vL7g/hE2xbjyM4bB6kJWYKqKyIX7Vie4pq/lYiY4ioXtwXgLz+leNszROISMnDQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.ObjectModel.xml", - "es/System.ObjectModel.xml", - "fr/System.ObjectModel.xml", - "it/System.ObjectModel.xml", - "ja/System.ObjectModel.xml", - "ko/System.ObjectModel.xml", + "lib/dotnet/de/System.ObjectModel.xml", + "lib/dotnet/es/System.ObjectModel.xml", + "lib/dotnet/fr/System.ObjectModel.xml", + "lib/dotnet/it/System.ObjectModel.xml", + "lib/dotnet/ja/System.ObjectModel.xml", + "lib/dotnet/ko/System.ObjectModel.xml", + "lib/dotnet/ru/System.ObjectModel.xml", "lib/dotnet/System.ObjectModel.dll", + "lib/dotnet/System.ObjectModel.xml", + "lib/dotnet/zh-hans/System.ObjectModel.xml", + "lib/dotnet/zh-hant/System.ObjectModel.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/ecf762b27b3e46db80c58ef05077fff3.psmdcp", + "package/services/metadata/core-properties/23e34926ef6542f29940c58292841cfd.psmdcp", "ref/dotnet/System.ObjectModel.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.ObjectModel.xml", - "System.ObjectModel.nuspec", - "System.ObjectModel.xml", - "zh-hans/System.ObjectModel.xml", - "zh-hant/System.ObjectModel.xml" + "System.ObjectModel.nuspec" ] }, - "System.Private.Uri/4.0.1-beta-23310": { - "sha512": "FK8XwCUZsomvteON/mzdNS0t3J8bIKUDq1UpvIFTCUzPaKorSDba2BsmQl4Xtsfqso5UEMZzXYx1SWoxhbEzzQ==", + "System.Private.Uri/4.0.1-beta-23321": { + "sha512": "aYzUbfsIO9LHpGeBJFbuBRzbg8NhSxCWWAjJNdyKV6SrgawsuCsec+MOWsx+H4JR8NOE2CG5C3oDVj4eI9Pgtw==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "lib/DNXCore50/System.Private.Uri.dll", - "lib/netcore50/System.Private.Uri.dll", - "package/services/metadata/core-properties/5268168096a04ab896ae721e5666da87.psmdcp", + "package/services/metadata/core-properties/2b2f854d867f4735aacb6bd366df1127.psmdcp", "ref/dnxcore50/_._", "ref/netcore50/_._", + "runtime.json", "runtimes/win8-aot/lib/netcore50/System.Private.Uri.dll", "System.Private.Uri.nuspec" ] }, - "System.Reflection/4.1.0-beta-23310": { - "sha512": "hA91IBMuPJKBZjMpkjP+lfeQJiRu5qKlbdSetM871/imbwwRvdGXMPVZP+czgHefG1d8iYqSTvk6oy0Tz6UFPQ==", + "System.Reflection/4.1.0-beta-23321": { + "sha512": "BJmxSgtH9BJ6cbLcF2xodAf3NT9igbAKfUr/XmwcOL7/T4GOTYONIj3k/vy8CTIIgn/zcxQODG3Hjf5jh5iRBg==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2647,7 +3811,7 @@ "lib/netcore50/System.Reflection.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/3f69d785fbca4645be37292dcff887fd.psmdcp", + "package/services/metadata/core-properties/01c08beb33b54545a71b58b9083cabb6.psmdcp", "ref/dotnet/System.Reflection.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -2658,37 +3822,120 @@ "System.Reflection.nuspec" ] }, - "System.Reflection.Extensions/4.0.1-beta-23310": { - "sha512": "Nj/zwFRYQo8tTG7wwbkQNfjR35arZDHH8Qx4DXfK8dVXp2tTVl6wNAfZ/h3do4HytlgYoPphJU0MSZvS9a4s2A==", + "System.Reflection.Emit/4.0.0": { + "sha512": "CqnQz5LbNbiSxN10cv3Ehnw3j1UZOBCxnE0OO0q/keGQ5ENjyFM6rIG4gm/i0dX6EjdpYkAgKcI/mhZZCaBq4A==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Reflection.Emit.dll", + "lib/MonoAndroid10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.dll", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/f6dc998f8a6b43d7b08f33375407a384.psmdcp", + "ref/dotnet/de/System.Reflection.Emit.xml", + "ref/dotnet/es/System.Reflection.Emit.xml", + "ref/dotnet/fr/System.Reflection.Emit.xml", + "ref/dotnet/it/System.Reflection.Emit.xml", + "ref/dotnet/ja/System.Reflection.Emit.xml", + "ref/dotnet/ko/System.Reflection.Emit.xml", + "ref/dotnet/ru/System.Reflection.Emit.xml", + "ref/dotnet/System.Reflection.Emit.dll", + "ref/dotnet/System.Reflection.Emit.xml", + "ref/dotnet/zh-hans/System.Reflection.Emit.xml", + "ref/dotnet/zh-hant/System.Reflection.Emit.xml", + "ref/MonoAndroid10/_._", + "ref/net45/_._", + "ref/xamarinmac20/_._", + "System.Reflection.Emit.nuspec" + ] + }, + "System.Reflection.Emit.ILGeneration/4.0.0": { + "sha512": "02okuusJ0GZiHZSD2IOLIN41GIn6qOr7i5+86C98BPuhlwWqVABwebiGNvhDiXP1f9a6CxEigC7foQD42klcDg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Reflection.Emit.ILGeneration.dll", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", + "lib/wp80/_._", + "package/services/metadata/core-properties/d044dd882ed2456486ddb05f1dd0420f.psmdcp", + "ref/dotnet/de/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/es/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/fr/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/it/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/ja/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/ko/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/ru/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/System.Reflection.Emit.ILGeneration.dll", + "ref/dotnet/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/zh-hans/System.Reflection.Emit.ILGeneration.xml", + "ref/dotnet/zh-hant/System.Reflection.Emit.ILGeneration.xml", + "ref/net45/_._", + "ref/wp80/_._", + "System.Reflection.Emit.ILGeneration.nuspec" + ] + }, + "System.Reflection.Emit.Lightweight/4.0.0": { + "sha512": "DJZhHiOdkN08xJgsJfDjkuOreLLmMcU8qkEEqEHqyhkPUZMMQs0lE8R+6+68BAFWgcdzxtNu0YmIOtEug8j00w==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Reflection.Emit.Lightweight.dll", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.Lightweight.dll", + "lib/wp80/_._", + "package/services/metadata/core-properties/52abced289cd46eebf8599b9b4c1c67b.psmdcp", + "ref/dotnet/de/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/es/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/fr/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/it/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/ja/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/ko/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/ru/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/System.Reflection.Emit.Lightweight.dll", + "ref/dotnet/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/zh-hans/System.Reflection.Emit.Lightweight.xml", + "ref/dotnet/zh-hant/System.Reflection.Emit.Lightweight.xml", + "ref/net45/_._", + "ref/wp80/_._", + "System.Reflection.Emit.Lightweight.nuspec" + ] + }, + "System.Reflection.Extensions/4.0.1-beta-23321": { + "sha512": "0ZYEtazFr/3jf31RFBqeGrphKcLEvZbtiQLxrHbqOxlGYB4TScf5/AXTAX7Dxxj8OESosgigfzofry8SYEfXYg==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Reflection.Extensions.xml", - "es/System.Reflection.Extensions.xml", - "fr/System.Reflection.Extensions.xml", - "it/System.Reflection.Extensions.xml", - "ja/System.Reflection.Extensions.xml", - "ko/System.Reflection.Extensions.xml", "lib/DNXCore50/System.Reflection.Extensions.dll", "lib/net45/_._", "lib/netcore50/System.Reflection.Extensions.dll", "lib/win8/_._", "lib/wp80/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/7b9edf5b7ca742bfb8921dbf53c6f3da.psmdcp", + "package/services/metadata/core-properties/7126a90e098846608d931321e1efd181.psmdcp", "ref/dotnet/System.Reflection.Extensions.dll", "ref/net45/_._", "ref/netcore50/System.Reflection.Extensions.dll", "ref/win8/_._", "ref/wp80/_._", "ref/wpa81/_._", - "ru/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Reflection.Extensions.xml", "runtimes/win8-aot/lib/netcore50/System.Reflection.Extensions.dll", - "System.Reflection.Extensions.nuspec", - "System.Reflection.Extensions.xml", - "zh-hans/System.Reflection.Extensions.xml", - "zh-hant/System.Reflection.Extensions.xml" + "runtimes/win8-aot/lib/netcore50/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Reflection.Extensions.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Reflection.Extensions.xml", + "System.Reflection.Extensions.nuspec" ] }, "System.Reflection.Metadata/1.1.0-alpha-00014": { @@ -2704,210 +3951,282 @@ "System.Reflection.Metadata.nuspec" ] }, - "System.Reflection.Primitives/4.0.1-beta-23310": { - "sha512": "INCGnTD+oh+BjtVr4+jbMxROFisqIG0C76d2WB7g+r4x8rosfrKHdBAqy5yn+U8QUhqX3jejxZmF7BYkKfzA5Q==", + "System.Reflection.Primitives/4.0.1-beta-23321": { + "sha512": "BNg1/j5QPmRovdYXRFbtuoxX444casrq/f0wJY4Cy3FPRn7JeQs028oNfr8vN66xk1P+p3NBP//7FtopwAGN+g==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Reflection.Primitives.xml", - "es/System.Reflection.Primitives.xml", - "fr/System.Reflection.Primitives.xml", - "it/System.Reflection.Primitives.xml", - "ja/System.Reflection.Primitives.xml", - "ko/System.Reflection.Primitives.xml", "lib/DNXCore50/System.Reflection.Primitives.dll", "lib/net45/_._", "lib/netcore50/System.Reflection.Primitives.dll", "lib/win8/_._", "lib/wp80/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/6c498ae47c3d43f9aeba1544db1faca8.psmdcp", + "package/services/metadata/core-properties/071daab6331442f48da7f5599bcf079e.psmdcp", "ref/dotnet/System.Reflection.Primitives.dll", "ref/net45/_._", "ref/netcore50/System.Reflection.Primitives.dll", "ref/win8/_._", "ref/wp80/_._", "ref/wpa81/_._", - "ru/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Reflection.Primitives.xml", "runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.dll", - "System.Reflection.Primitives.nuspec", - "System.Reflection.Primitives.xml", - "zh-hans/System.Reflection.Primitives.xml", - "zh-hant/System.Reflection.Primitives.xml" + "runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Reflection.Primitives.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Reflection.Primitives.xml", + "System.Reflection.Primitives.nuspec" + ] + }, + "System.Reflection.TypeExtensions/4.0.0": { + "sha512": "YRM/msNAM86hdxPyXcuZSzmTO0RQFh7YMEPBLTY8cqXvFPYIx2x99bOyPkuU81wRYQem1c1HTkImQ2DjbOBfew==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Reflection.TypeExtensions.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Reflection.TypeExtensions.dll", + "lib/netcore50/System.Reflection.TypeExtensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/a37798ee61124eb7b6c56400aee24da1.psmdcp", + "ref/dotnet/de/System.Reflection.TypeExtensions.xml", + "ref/dotnet/es/System.Reflection.TypeExtensions.xml", + "ref/dotnet/fr/System.Reflection.TypeExtensions.xml", + "ref/dotnet/it/System.Reflection.TypeExtensions.xml", + "ref/dotnet/ja/System.Reflection.TypeExtensions.xml", + "ref/dotnet/ko/System.Reflection.TypeExtensions.xml", + "ref/dotnet/ru/System.Reflection.TypeExtensions.xml", + "ref/dotnet/System.Reflection.TypeExtensions.dll", + "ref/dotnet/System.Reflection.TypeExtensions.xml", + "ref/dotnet/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/dotnet/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Reflection.TypeExtensions.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtimes/win8-aot/lib/netcore50/System.Reflection.TypeExtensions.dll", + "System.Reflection.TypeExtensions.nuspec" ] }, - "System.Resources.ResourceManager/4.0.1-beta-23310": { - "sha512": "whO+5muY0ATivwyP0uQIl54/A/Q5+qRULBLQvukj2kPlfI3AXqs+5I9AQUMJ2QzU2Htxliv585yW3I3xr7SBbw==", + "System.Resources.ResourceManager/4.0.1-beta-23321": { + "sha512": "Xb2b2WouJJyVwrwm2TCWkmTpzdW37VyVmQZhYnx9oFEeE+e+Wvl/k+0jNQrB57kWJFre00u/g+mDykAgBoKWOg==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Resources.ResourceManager.xml", - "es/System.Resources.ResourceManager.xml", - "fr/System.Resources.ResourceManager.xml", - "it/System.Resources.ResourceManager.xml", - "ja/System.Resources.ResourceManager.xml", - "ko/System.Resources.ResourceManager.xml", "lib/DNXCore50/System.Resources.ResourceManager.dll", "lib/net45/_._", "lib/netcore50/System.Resources.ResourceManager.dll", "lib/win8/_._", "lib/wp80/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/2da69566986045fdb55f055463bcde38.psmdcp", + "package/services/metadata/core-properties/97c30e7c67b449309795182925a582aa.psmdcp", "ref/dotnet/System.Resources.ResourceManager.dll", "ref/net45/_._", "ref/netcore50/System.Resources.ResourceManager.dll", "ref/win8/_._", "ref/wp80/_._", "ref/wpa81/_._", - "ru/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Resources.ResourceManager.xml", "runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.dll", - "System.Resources.ResourceManager.nuspec", - "System.Resources.ResourceManager.xml", - "zh-hans/System.Resources.ResourceManager.xml", - "zh-hant/System.Resources.ResourceManager.xml" + "runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Resources.ResourceManager.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Resources.ResourceManager.xml", + "System.Resources.ResourceManager.nuspec" ] }, - "System.Runtime/4.0.21-beta-23310": { - "sha512": "X077Ed9GAGprGEARujtbWq4/uExEloi62eB1SXN95zEEXRMWTCsXT7ogcKyWL3iqrrEwlxetKDLm2rdFkdYK7Q==", + "System.Runtime/4.0.21-beta-23321": { + "sha512": "1cXiVm2L7F48anx94AXMlaMMkW34ECCyFiE/EJ+sJ3cVRiCIbzeGP/HgfWvAmR6Vb7HDyx4WUYeM2ID1jcwSiQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Runtime.xml", - "es/System.Runtime.xml", - "fr/System.Runtime.xml", - "it/System.Runtime.xml", - "ja/System.Runtime.xml", - "ko/System.Runtime.xml", + "lib/DNXCore50/de/System.Runtime.xml", + "lib/DNXCore50/es/System.Runtime.xml", + "lib/DNXCore50/fr/System.Runtime.xml", + "lib/DNXCore50/it/System.Runtime.xml", + "lib/DNXCore50/ja/System.Runtime.xml", + "lib/DNXCore50/ko/System.Runtime.xml", + "lib/DNXCore50/ru/System.Runtime.xml", "lib/DNXCore50/System.Runtime.dll", + "lib/DNXCore50/System.Runtime.xml", + "lib/DNXCore50/zh-hans/System.Runtime.xml", + "lib/DNXCore50/zh-hant/System.Runtime.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", + "lib/netcore50/de/System.Runtime.xml", + "lib/netcore50/es/System.Runtime.xml", + "lib/netcore50/fr/System.Runtime.xml", + "lib/netcore50/it/System.Runtime.xml", + "lib/netcore50/ja/System.Runtime.xml", + "lib/netcore50/ko/System.Runtime.xml", + "lib/netcore50/ru/System.Runtime.xml", "lib/netcore50/System.Runtime.dll", + "lib/netcore50/System.Runtime.xml", + "lib/netcore50/zh-hans/System.Runtime.xml", + "lib/netcore50/zh-hant/System.Runtime.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/ccb07484a8d744d98268d9c316e9f68f.psmdcp", + "package/services/metadata/core-properties/7673ec88ee024db58f262b21c8ee84bc.psmdcp", "ref/dotnet/System.Runtime.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Runtime.xml", "runtimes/win8-aot/lib/netcore50/System.Runtime.dll", - "System.Runtime.nuspec", - "System.Runtime.xml", - "zh-hans/System.Runtime.xml", - "zh-hant/System.Runtime.xml" + "runtimes/win8-aot/lib/netcore50/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Runtime.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Runtime.xml", + "System.Runtime.nuspec" ] }, - "System.Runtime.Extensions/4.0.11-beta-23310": { - "sha512": "B6IjBByKkEQAYB9vS73Trw82vlT/fbQPW39QsDdaCFHZaWXuCl3hCG2QAVeY2r85lvv0XscPPv3i83RKP8MfRA==", + "System.Runtime.Extensions/4.0.11-beta-23321": { + "sha512": "iqvpTN0WhcIGVz9quiA2PotxXLDYmu+pK6hLPuoIkyoQF8IJN7/uDV02sOl0ujB8oxoHBC+tASA7QA3nEeZeMQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Runtime.Extensions.xml", - "es/System.Runtime.Extensions.xml", - "fr/System.Runtime.Extensions.xml", - "it/System.Runtime.Extensions.xml", - "ja/System.Runtime.Extensions.xml", - "ko/System.Runtime.Extensions.xml", - "lib/DNXCore50/System.Runtime.Extensions.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", - "lib/netcore50/System.Runtime.Extensions.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/d39f3294a03a4cc7bda9d3f5c1df5e2c.psmdcp", + "package/services/metadata/core-properties/aa40024f803a4c37a959fddfb6cf0d2a.psmdcp", "ref/dotnet/System.Runtime.Extensions.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Runtime.Extensions.xml", - "runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.dll", - "System.Runtime.Extensions.nuspec", - "System.Runtime.Extensions.xml", - "zh-hans/System.Runtime.Extensions.xml", - "zh-hant/System.Runtime.Extensions.xml" + "runtime.json", + "System.Runtime.Extensions.nuspec" ] }, - "System.Runtime.Handles/4.0.1-beta-23310": { - "sha512": "YWQStfeukEjAFgvMjw6tzOJeh118hdGxGWLgvQ0X9ni5aT4X9ayaJn9AprhTDjTrswZwMVi8It10k0iMK5k9VA==", + "System.Runtime.Handles/4.0.1-beta-23321": { + "sha512": "BLg+2M7bIZTM39Y9sO17CnS0xc+xzKAHncXjexGciJx+hyrUl78YJ6QAfbHAJ14Z+e+oiTQVO8cj7AOq3xqaJA==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Runtime.Handles.xml", - "es/System.Runtime.Handles.xml", - "fr/System.Runtime.Handles.xml", - "it/System.Runtime.Handles.xml", - "ja/System.Runtime.Handles.xml", - "ko/System.Runtime.Handles.xml", + "lib/DNXCore50/de/System.Runtime.Handles.xml", + "lib/DNXCore50/es/System.Runtime.Handles.xml", + "lib/DNXCore50/fr/System.Runtime.Handles.xml", + "lib/DNXCore50/it/System.Runtime.Handles.xml", + "lib/DNXCore50/ja/System.Runtime.Handles.xml", + "lib/DNXCore50/ko/System.Runtime.Handles.xml", + "lib/DNXCore50/ru/System.Runtime.Handles.xml", "lib/DNXCore50/System.Runtime.Handles.dll", + "lib/DNXCore50/System.Runtime.Handles.xml", + "lib/DNXCore50/zh-hans/System.Runtime.Handles.xml", + "lib/DNXCore50/zh-hant/System.Runtime.Handles.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", + "lib/netcore50/de/System.Runtime.Handles.xml", + "lib/netcore50/es/System.Runtime.Handles.xml", + "lib/netcore50/fr/System.Runtime.Handles.xml", + "lib/netcore50/it/System.Runtime.Handles.xml", + "lib/netcore50/ja/System.Runtime.Handles.xml", + "lib/netcore50/ko/System.Runtime.Handles.xml", + "lib/netcore50/ru/System.Runtime.Handles.xml", "lib/netcore50/System.Runtime.Handles.dll", + "lib/netcore50/System.Runtime.Handles.xml", + "lib/netcore50/zh-hans/System.Runtime.Handles.xml", + "lib/netcore50/zh-hant/System.Runtime.Handles.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/89c12df682684b6d8e5a07ebf22381cb.psmdcp", + "package/services/metadata/core-properties/4c3f0754f0eb4acf8da1fc993b79df9d.psmdcp", "ref/dotnet/System.Runtime.Handles.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Runtime.Handles.xml", "runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.dll", - "System.Runtime.Handles.nuspec", - "System.Runtime.Handles.xml", - "zh-hans/System.Runtime.Handles.xml", - "zh-hant/System.Runtime.Handles.xml" + "runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Runtime.Handles.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Runtime.Handles.xml", + "System.Runtime.Handles.nuspec" ] }, - "System.Runtime.InteropServices/4.0.21-beta-23310": { - "sha512": "F1MV+Joc/+dO7J3jrktw7TXv8Rcw9MwFfuUpU/a4YD7QFTRKcjcj6BNHpBOraUeVAjeSpcdZeMxhG2rbD3Rz4w==", + "System.Runtime.InteropServices/4.0.21-beta-23321": { + "sha512": "QaHgkctkiMo9uD8AJmTEw/6/XogvYYp6Z0CH99+4j9WcXaSiBrRs/z0D4Wrcr0qQMls3gv3LDm8fve+XsYO67A==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Runtime.InteropServices.xml", - "es/System.Runtime.InteropServices.xml", - "fr/System.Runtime.InteropServices.xml", - "it/System.Runtime.InteropServices.xml", - "ja/System.Runtime.InteropServices.xml", - "ko/System.Runtime.InteropServices.xml", + "lib/DNXCore50/de/System.Runtime.InteropServices.xml", + "lib/DNXCore50/es/System.Runtime.InteropServices.xml", + "lib/DNXCore50/fr/System.Runtime.InteropServices.xml", + "lib/DNXCore50/it/System.Runtime.InteropServices.xml", + "lib/DNXCore50/ja/System.Runtime.InteropServices.xml", + "lib/DNXCore50/ko/System.Runtime.InteropServices.xml", + "lib/DNXCore50/ru/System.Runtime.InteropServices.xml", "lib/DNXCore50/System.Runtime.InteropServices.dll", + "lib/DNXCore50/System.Runtime.InteropServices.xml", + "lib/DNXCore50/zh-hans/System.Runtime.InteropServices.xml", + "lib/DNXCore50/zh-hant/System.Runtime.InteropServices.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", + "lib/netcore50/de/System.Runtime.InteropServices.xml", + "lib/netcore50/es/System.Runtime.InteropServices.xml", + "lib/netcore50/fr/System.Runtime.InteropServices.xml", + "lib/netcore50/it/System.Runtime.InteropServices.xml", + "lib/netcore50/ja/System.Runtime.InteropServices.xml", + "lib/netcore50/ko/System.Runtime.InteropServices.xml", + "lib/netcore50/ru/System.Runtime.InteropServices.xml", "lib/netcore50/System.Runtime.InteropServices.dll", + "lib/netcore50/System.Runtime.InteropServices.xml", + "lib/netcore50/zh-hans/System.Runtime.InteropServices.xml", + "lib/netcore50/zh-hant/System.Runtime.InteropServices.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/eb4f54e029d04a5abde38eaf61f94346.psmdcp", + "package/services/metadata/core-properties/6c73e975deea494b8deacccbdab960b0.psmdcp", "ref/dotnet/System.Runtime.InteropServices.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Runtime.InteropServices.xml", "runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.dll", - "System.Runtime.InteropServices.nuspec", - "System.Runtime.InteropServices.xml", - "zh-hans/System.Runtime.InteropServices.xml", - "zh-hant/System.Runtime.InteropServices.xml" + "System.Runtime.InteropServices.nuspec" ] }, - "System.Security.Cryptography.Algorithms/4.0.0-beta-23310": { - "sha512": "4O8Ea8Ak3j+oQAX/KyeRlJW3uCR0o8gv5FULkqtSYtmAwbl2MP2LIggOHT36mgsHzLaffTe3jONl41tvzJI4XA==", + "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { + "sha512": "1l9b838cbDrV/KUwlnLmGTF2JbHBt7yJ0tw9mCl2LXZk31y+W0vzo0gA0RUfdr4ASvhF1dOzq6cUwolPScc7wQ==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2918,7 +4237,7 @@ "lib/net46/System.Security.Cryptography.Algorithms.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/926085ab1d124b92aa392493fabe0880.psmdcp", + "package/services/metadata/core-properties/da0ade3d3f8d461c8c5ecd436f3b2a22.psmdcp", "ref/dotnet/System.Security.Cryptography.Algorithms.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -2928,8 +4247,8 @@ "System.Security.Cryptography.Algorithms.nuspec" ] }, - "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23310": { - "sha512": "WNmu8M5GHBOFJlVIL1W3vqjiwQUWcWeDt5f2iMLp66S+oEZlrqpzmVKq+3N1UEUpUXoIPq/vrZT/yQnmnWAUNg==", + "System.Security.Cryptography.Hashing.Algorithms/4.0.0-beta-23311": { + "sha512": "OR5tGGelqx20MGQpWT3kMw1pDg/auXwevZ/SynUt6Dl0Ac2SQ38WEzqmBvovvoTH/sqlKQFvBhQ/0yd4F/b2Ag==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2941,7 +4260,7 @@ "ja/System.Security.Cryptography.Hashing.Algorithms.xml", "ko/System.Security.Cryptography.Hashing.Algorithms.xml", "lib/DNXCore50/System.Security.Cryptography.Hashing.Algorithms.dll", - "package/services/metadata/core-properties/d96553917d3f4d9fa8827adc4fe855c8.psmdcp", + "package/services/metadata/core-properties/b491eccd83fc4bd0a4d0bcf7686b45f0.psmdcp", "ru/System.Security.Cryptography.Hashing.Algorithms.xml", "System.Security.Cryptography.Hashing.Algorithms.nuspec", "System.Security.Cryptography.Hashing.Algorithms.xml", @@ -2949,8 +4268,8 @@ "zh-hant/System.Security.Cryptography.Hashing.Algorithms.xml" ] }, - "System.Security.Cryptography.Primitives/4.0.0-beta-23310": { - "sha512": "GB0A7LWkHmA61Dt3C5oLLAz/3+Wf89bvHlDfVaUE7ccmdETpg9ULdLZZ4MX3K+oFK9+POaratSNa8+46SC5pZw==", + "System.Security.Cryptography.Primitives/4.0.0-beta-23311": { + "sha512": "znDa+79gOts4Kgfvy/JmZ6m5xLE4q7CJSCxkPFl3t+BJE7IXwwkUQ489oc7E02YrIm1EpnYTcyUnnI0EqmgGXQ==", "type": "Package", "files": [ "[Content_Types].xml", @@ -2961,7 +4280,7 @@ "lib/net46/System.Security.Cryptography.Primitives.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/2af28caf8ec44158aaa8c57f4dfe9ae2.psmdcp", + "package/services/metadata/core-properties/f6e14f094dde4d3b88a6965aafad62f1.psmdcp", "ref/dotnet/System.Security.Cryptography.Primitives.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -3004,8 +4323,8 @@ "System.Security.Principal.nuspec" ] }, - "System.Text.Encoding/4.0.11-beta-23310": { - "sha512": "h0p1C0yctkNK6T2GwO6zypbtGNO/mO0hy7dyjdasoUm74Dqzhe0nvMrRLxviCpyq5tepbLRfuTpNqdnlFA9e8g==", + "System.Text.Encoding/4.0.11-beta-23321": { + "sha512": "ln7Yt9MrJUPmG1kS91ZmBFMCELsxCnP5vctGpqpjzZV9kT7+Tp8oLIftVVes+ET+i1vy/qo3dln+dvwXjjCKHA==", "type": "Package", "files": [ "[Content_Types].xml", @@ -3017,7 +4336,7 @@ "lib/netcore50/System.Text.Encoding.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/627cefac01454f11b15eb8b8f809093e.psmdcp", + "package/services/metadata/core-properties/7c7a11974e514ddd8c6a6c8fb25bbdf9.psmdcp", "ref/dotnet/System.Text.Encoding.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -3028,8 +4347,8 @@ "System.Text.Encoding.nuspec" ] }, - "System.Text.Encoding.Extensions/4.0.11-beta-23310": { - "sha512": "t4LVH9zDRvw913HiL4ADhBSQCF+KgQKT+5+khtDf8JCo6l+KrHY6i9DDZVmpM7yjeYbwhaB2G+yzsRIst9ouGg==", + "System.Text.Encoding.Extensions/4.0.11-beta-23321": { + "sha512": "DfR8dxgjAyrPeFGLG+O9mLvC5eP76hMMLrOsBMqVBnfwxSa/TYjlNfjluR+bHI/qQZ/W0JELViC93lNX9LGsSQ==", "type": "Package", "files": [ "[Content_Types].xml", @@ -3041,7 +4360,7 @@ "lib/netcore50/System.Text.Encoding.Extensions.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/0f9385e1cacf40f989bd7da0015c1a0e.psmdcp", + "package/services/metadata/core-properties/399d4c41e1ee472bb75d0c6e733ee91a.psmdcp", "ref/dotnet/System.Text.Encoding.Extensions.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -3052,70 +4371,27 @@ "System.Text.Encoding.Extensions.nuspec" ] }, - "System.Text.RegularExpressions/4.0.10": { - "sha512": "0vDuHXJePpfMCecWBNOabOKCvzfTbFMNcGgklt3l5+RqHV5SzmF7RUVpuet8V0rJX30ROlL66xdehw2Rdsn2DA==", - "type": "Package", - "files": [ - "[Content_Types].xml", - "_rels/.rels", - "lib/dotnet/System.Text.RegularExpressions.dll", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/548eb1bd139e4c8cbc55e9f7f4f404dd.psmdcp", - "ref/dotnet/de/System.Text.RegularExpressions.xml", - "ref/dotnet/es/System.Text.RegularExpressions.xml", - "ref/dotnet/fr/System.Text.RegularExpressions.xml", - "ref/dotnet/it/System.Text.RegularExpressions.xml", - "ref/dotnet/ja/System.Text.RegularExpressions.xml", - "ref/dotnet/ko/System.Text.RegularExpressions.xml", - "ref/dotnet/ru/System.Text.RegularExpressions.xml", - "ref/dotnet/System.Text.RegularExpressions.dll", - "ref/dotnet/System.Text.RegularExpressions.xml", - "ref/dotnet/zh-hans/System.Text.RegularExpressions.xml", - "ref/dotnet/zh-hant/System.Text.RegularExpressions.xml", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "System.Text.RegularExpressions.nuspec" - ] - }, - "System.Threading/4.0.11-beta-23310": { - "sha512": "PTPQJhwv57e3lDRI/YyLGwwyy57uDsIchBZrgik4IbI3E+mVT55uasNyfVKq0pcwgILVnNcGGeFTQS++BFtQKw==", + "System.Threading/4.0.11-beta-23321": { + "sha512": "PeQJ218GGDU4Cccsp8Im1sO5B4zvMIbLxWnYLVhFIIOry0diB/YhuBjwIG8xDuXNYmlB4qrIfxzBZCrZR4nsCA==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Threading.xml", - "es/System.Threading.xml", - "fr/System.Threading.xml", - "it/System.Threading.xml", - "ja/System.Threading.xml", - "ko/System.Threading.xml", - "lib/DNXCore50/System.Threading.dll", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", - "lib/netcore50/System.Threading.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/5048896aa02a4935abf1b30248a4257c.psmdcp", + "package/services/metadata/core-properties/f541871dcbcc410595a9f545225eebef.psmdcp", "ref/dotnet/System.Threading.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Threading.xml", + "runtime.json", "runtimes/win8-aot/lib/netcore50/System.Threading.dll", - "System.Threading.nuspec", - "System.Threading.xml", - "zh-hans/System.Threading.xml", - "zh-hant/System.Threading.xml" + "System.Threading.nuspec" ] }, "System.Threading.Overlapped/4.0.0": { @@ -3143,42 +4419,93 @@ "System.Threading.Overlapped.nuspec" ] }, - "System.Threading.Tasks/4.0.11-beta-23310": { - "sha512": "hsvtJRImhRLXqTF6SCouZjrD8VhwgcZ2pDloh1fSgwzoe5JM1FR0qtMGsd58o1/+TFJxWKfOQVqYyuTbioO2Xw==", + "System.Threading.Tasks/4.0.11-beta-23321": { + "sha512": "itQejciEb+mDCZdLwL+kjRisCLYXL1ZA15CiqUG6B3tKrDe96vyMFN4I8Lqt3r4GNf3mHNmfuQgPd8aF4qZ4EQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", - "de/System.Threading.Tasks.xml", - "es/System.Threading.Tasks.xml", - "fr/System.Threading.Tasks.xml", - "it/System.Threading.Tasks.xml", - "ja/System.Threading.Tasks.xml", - "ko/System.Threading.Tasks.xml", + "lib/DNXCore50/de/System.Threading.Tasks.xml", + "lib/DNXCore50/es/System.Threading.Tasks.xml", + "lib/DNXCore50/fr/System.Threading.Tasks.xml", + "lib/DNXCore50/it/System.Threading.Tasks.xml", + "lib/DNXCore50/ja/System.Threading.Tasks.xml", + "lib/DNXCore50/ko/System.Threading.Tasks.xml", + "lib/DNXCore50/ru/System.Threading.Tasks.xml", "lib/DNXCore50/System.Threading.Tasks.dll", + "lib/DNXCore50/System.Threading.Tasks.xml", + "lib/DNXCore50/zh-hans/System.Threading.Tasks.xml", + "lib/DNXCore50/zh-hant/System.Threading.Tasks.xml", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", "lib/net46/_._", + "lib/netcore50/de/System.Threading.Tasks.xml", + "lib/netcore50/es/System.Threading.Tasks.xml", + "lib/netcore50/fr/System.Threading.Tasks.xml", + "lib/netcore50/it/System.Threading.Tasks.xml", + "lib/netcore50/ja/System.Threading.Tasks.xml", + "lib/netcore50/ko/System.Threading.Tasks.xml", + "lib/netcore50/ru/System.Threading.Tasks.xml", "lib/netcore50/System.Threading.Tasks.dll", + "lib/netcore50/System.Threading.Tasks.xml", + "lib/netcore50/zh-hans/System.Threading.Tasks.xml", + "lib/netcore50/zh-hant/System.Threading.Tasks.xml", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/dcdaa0223f864e29b37117b290794690.psmdcp", + "package/services/metadata/core-properties/9aa11746a67a430098b88e80fb39e238.psmdcp", "ref/dotnet/System.Threading.Tasks.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", "ref/net46/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", - "ru/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/de/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/es/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/fr/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/it/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/ja/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/ko/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/ru/System.Threading.Tasks.xml", "runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.dll", - "System.Threading.Tasks.nuspec", - "System.Threading.Tasks.xml", - "zh-hans/System.Threading.Tasks.xml", - "zh-hant/System.Threading.Tasks.xml" + "runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/zh-hans/System.Threading.Tasks.xml", + "runtimes/win8-aot/lib/netcore50/zh-hant/System.Threading.Tasks.xml", + "System.Threading.Tasks.nuspec" + ] + }, + "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { + "sha512": "wDGHoyzdxm2h/QrDxcsCYzeJUvkS9hoW9gllghEvxqzgZoYZfsh4wbxxASDHdUoI1KSeHsdrzLLeIDGhSaWFOQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/de/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/es/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/fr/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/it/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/ja/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/ko/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/ru/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/System.Threading.Tasks.Parallel.dll", + "lib/dotnet/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/zh-hans/System.Threading.Tasks.Parallel.xml", + "lib/dotnet/zh-hant/System.Threading.Tasks.Parallel.xml", + "lib/net45/_._", + "lib/netcore50/System.Threading.Tasks.Parallel.dll", + "lib/netcore50/System.Threading.Tasks.Parallel.xml", + "lib/win8/_._", + "lib/wpa81/_._", + "package/services/metadata/core-properties/1c6312253e7f4649ae729f75de7dd476.psmdcp", + "ref/dotnet/System.Threading.Tasks.Parallel.dll", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.Parallel.dll", + "ref/win8/_._", + "ref/wpa81/_._", + "System.Threading.Tasks.Parallel.nuspec" ] }, - "System.Threading.Thread/4.0.0-beta-23310": { - "sha512": "ZEIZIACgh+YooMOF00BCGbq6O7puvmOwDI/nF9Bywrf/HfuA/HfBnJnBOQ3IU+s2+lQk5Nv3j6lkt2kzhLizRw==", + "System.Threading.Thread/4.0.0-beta-23321": { + "sha512": "LiwEM9FfFcKHbKKbJzBIU4RIVEDK1d3KdwGwV01putKnO2DEsxjRiunjCIaV5NYPqSTi/0gMybkak5iyomOZfA==", "type": "Package", "files": [ "[Content_Types].xml", @@ -3189,7 +4516,7 @@ "lib/net46/System.Threading.Thread.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/78f8c491169d448f8970966fc879c5b3.psmdcp", + "package/services/metadata/core-properties/dc446787b13447b19378f30cb7d39391.psmdcp", "ref/dotnet/System.Threading.Thread.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -3199,8 +4526,8 @@ "System.Threading.Thread.nuspec" ] }, - "System.Threading.ThreadPool/4.0.10-beta-23310": { - "sha512": "pK4zwN/JuqrgGKtDfcaOpvQXgxiq9W1WyQOY7P+71vMiRPmC8VDajMD8zs7fRsnp10aYuNpgDeEuZHPN3nn35Q==", + "System.Threading.ThreadPool/4.0.10-beta-23321": { + "sha512": "C9n2qyHG1ywYg1YGZLfeF4Xn6p0eqjDchxvZNF4Ac3nH4GKmLizFTRLdQ5NbNrPJ0Ry1JDg2LEhcVEaztWk61Q==", "type": "Package", "files": [ "[Content_Types].xml", @@ -3211,7 +4538,7 @@ "lib/net46/System.Threading.ThreadPool.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/427d4b4083374c788472d9c593951139.psmdcp", + "package/services/metadata/core-properties/4fc77e5b5a4241c6b0d212f20d229ef8.psmdcp", "ref/dotnet/System.Threading.ThreadPool.dll", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", @@ -3221,8 +4548,8 @@ "System.Threading.ThreadPool.nuspec" ] }, - "System.Threading.Timer/4.0.1-beta-23310": { - "sha512": "OerRw5Mywq9+V1kuyHKi7tPMoX0QPew0fcA4hcAanPvy/ptl3vQEwHk3sv5NXXQIHxCRp5HFGt+W5xpFdHA8VA==", + "System.Threading.Timer/4.0.1-beta-23321": { + "sha512": "tgujlu3HLwLyVl1uDqnNyW3vHMNfiYaUNhdne2qDuyY0S/W5EJLS1eVCofH+s0Em251uLDkJGJPEzo30NWUW8g==", "type": "Package", "files": [ "[Content_Types].xml", @@ -3232,7 +4559,7 @@ "lib/netcore50/System.Threading.Timer.dll", "lib/win81/_._", "lib/wpa81/_._", - "package/services/metadata/core-properties/a8f3361dac054af886e2801f53e9d4f4.psmdcp", + "package/services/metadata/core-properties/4eff7df69a0146c8bf5f24a4e7c66492.psmdcp", "ref/dotnet/System.Threading.Timer.dll", "ref/net451/_._", "ref/netcore50/System.Threading.Timer.dll", @@ -3241,136 +4568,25 @@ "runtimes/win8-aot/lib/netcore50/System.Threading.Timer.dll", "System.Threading.Timer.nuspec" ] - }, - "System.Xml.ReaderWriter/4.0.10": { - "sha512": "VdmWWMH7otrYV7D+cviUo7XjX0jzDnD/lTGSZTlZqfIQ5PhXk85j+6P0TK9od3PnOd5ZIM+pOk01G/J+3nh9/w==", - "type": "Package", - "files": [ - "[Content_Types].xml", - "_rels/.rels", - "lib/dotnet/System.Xml.ReaderWriter.dll", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/ef76b636720e4f2d8cfd570899d52df8.psmdcp", - "ref/dotnet/de/System.Xml.ReaderWriter.xml", - "ref/dotnet/es/System.Xml.ReaderWriter.xml", - "ref/dotnet/fr/System.Xml.ReaderWriter.xml", - "ref/dotnet/it/System.Xml.ReaderWriter.xml", - "ref/dotnet/ja/System.Xml.ReaderWriter.xml", - "ref/dotnet/ko/System.Xml.ReaderWriter.xml", - "ref/dotnet/ru/System.Xml.ReaderWriter.xml", - "ref/dotnet/System.Xml.ReaderWriter.dll", - "ref/dotnet/System.Xml.ReaderWriter.xml", - "ref/dotnet/zh-hans/System.Xml.ReaderWriter.xml", - "ref/dotnet/zh-hant/System.Xml.ReaderWriter.xml", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "System.Xml.ReaderWriter.nuspec" - ] - }, - "System.Xml.XDocument/4.0.11-beta-23310": { - "sha512": "UPFwKYiHh9lLDe7zBtJrFMiOJWiuk+XdhZGYJTy0J7fPFVoUx1QAd2PROFV7UtOrZvyw2tkZKSdT1z9FPYBWCA==", - "type": "Package", - "files": [ - "[Content_Types].xml", - "_rels/.rels", - "de/System.Xml.XDocument.xml", - "es/System.Xml.XDocument.xml", - "fr/System.Xml.XDocument.xml", - "it/System.Xml.XDocument.xml", - "ja/System.Xml.XDocument.xml", - "ko/System.Xml.XDocument.xml", - "lib/dotnet/System.Xml.XDocument.dll", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/e992977d01db4fd4af549ae5a0d552dc.psmdcp", - "ref/dotnet/System.Xml.XDocument.dll", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ru/System.Xml.XDocument.xml", - "System.Xml.XDocument.nuspec", - "System.Xml.XDocument.xml", - "zh-hans/System.Xml.XDocument.xml", - "zh-hant/System.Xml.XDocument.xml" - ] - }, - "System.Xml.XmlDocument/4.0.1-beta-23310": { - "sha512": "NqrQC4Pp4EiQuhJ2nogc2kOgg66dLkWs/dHOZFJn1MM2sAvGdnWhKlZMZ+xepUH5YyozXLqAv1ze1yeeK9m+DA==", - "type": "Package", - "files": [ - "[Content_Types].xml", - "_rels/.rels", - "de/System.Xml.XmlDocument.xml", - "es/System.Xml.XmlDocument.xml", - "fr/System.Xml.XmlDocument.xml", - "it/System.Xml.XmlDocument.xml", - "ja/System.Xml.XmlDocument.xml", - "ko/System.Xml.XmlDocument.xml", - "lib/dotnet/System.Xml.XmlDocument.dll", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XmlDocument.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/dfbc6b97ed034d8fa8a254bdfbc9d4f3.psmdcp", - "ref/dotnet/System.Xml.XmlDocument.dll", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XmlDocument.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ru/System.Xml.XmlDocument.xml", - "System.Xml.XmlDocument.nuspec", - "System.Xml.XmlDocument.xml", - "zh-hans/System.Xml.XmlDocument.xml", - "zh-hant/System.Xml.XmlDocument.xml" - ] } }, "projectFileDependencyGroups": { "": [ - "Microsoft.NETCore.Platforms >= 1.0.0", - "Microsoft.NETCore.Runtime.CoreCLR >= 1.0.1-beta-23310", - "System.AppContext >= 4.0.1-beta-23310", - "System.Collections >= 4.0.11-beta-23310", - "System.Console >= 4.0.0-beta-23302", - "System.Diagnostics.Debug >= 4.0.11-beta-23310", - "System.Diagnostics.Process >= 4.1.0-beta-23310", - "System.Diagnostics.Tools >= 4.0.1-beta-23310", - "System.Globalization >= 4.0.11-beta-23310", - "System.IO >= 4.0.11-beta-23310", - "System.IO.FileSystem >= 4.0.1-beta-23302", - "System.IO.FileSystem.Primitives >= 4.0.1-beta-23310", - "System.IO.Pipes >= 4.0.0-beta-23310", - "System.Linq >= 4.0.1-beta-23310", - "System.Private.Uri >= 4.0.1-beta-23310", - "System.Reflection >= 4.1.0-beta-23310", - "System.Reflection.Primitives >= 4.0.1-beta-23310", - "System.Resources.ResourceManager >= 4.0.1-beta-23310", - "System.Runtime >= 4.0.21-beta-23310", - "System.Runtime.Extensions >= 4.0.11-beta-23310", - "System.Runtime.Handles >= 4.0.1-beta-23310", - "System.Runtime.InteropServices >= 4.0.21-beta-23310", - "System.Security.Cryptography.Hashing.Algorithms >= 4.0.0-beta-23310", - "System.Text.Encoding >= 4.0.11-beta-23310", - "System.Text.Encoding.Extensions >= 4.0.11-beta-23310", - "System.Threading >= 4.0.11-beta-23310", - "System.Threading.Tasks >= 4.0.11-beta-23310", - "System.Threading.Thread >= 4.0.0-beta-23310", - "System.Xml.XDocument >= 4.0.11-beta-23310", - "System.Xml.XmlDocument >= 4.0.1-beta-23310" + "Microsoft.NETCore.Platforms >= 1.0.1-beta-23321", + "Microsoft.NETCore.Runtime.CoreCLR >= 1.0.1-beta-23321", + "Microsoft.NETCore.TestHost-x64 >= 1.0.0-beta-23213", + "System.AppContext >= 4.0.1-beta-23321", + "System.Collections.Immutable >= 1.1.36", + "System.Console >= 4.0.0-beta-23321", + "System.Diagnostics.FileVersionInfo >= 4.0.0-beta-23321", + "System.Diagnostics.Process >= 4.1.0-beta-23321", + "System.Dynamic.Runtime >= 4.0.11-beta-23321", + "System.IO.FileSystem >= 4.0.1-beta-23321", + "System.IO.Pipes >= 4.0.0-beta-23321", + "System.Linq >= 4.0.1-beta-23321", + "System.Security.Cryptography.Hashing.Algorithms >= 4.0.0-beta-23311", + "System.Threading.Tasks.Parallel >= 4.0.1-beta-23321", + "System.Threading.Thread >= 4.0.0-beta-23321" ], "DNXCore,Version=v5.0": [] } diff --git a/src/Compilers/VisualBasic/VbcCore/vbc.cmd b/src/Compilers/VisualBasic/VbcCore/vbc.cmd new file mode 100644 index 0000000000000..fc24f98421e25 --- /dev/null +++ b/src/Compilers/VisualBasic/VbcCore/vbc.cmd @@ -0,0 +1,2 @@ +echo off +%~dp0\corerun.exe %~dp0\vbc.exe %* From ed7f6e109bc18dbd10cc4aa1e87d85d0c45f8b48 Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Tue, 22 Sep 2015 16:50:15 -0700 Subject: [PATCH 25/83] Add some packages I left out the first time --- src/Compilers/CSharp/CscCore/project.json | 19 +- .../CSharp/CscCore/project.lock.json | 922 ++++++++++++++---- .../VisualBasic/VbcCore/project.json | 19 +- .../VisualBasic/VbcCore/project.lock.json | 922 ++++++++++++++---- 4 files changed, 1518 insertions(+), 364 deletions(-) diff --git a/src/Compilers/CSharp/CscCore/project.json b/src/Compilers/CSharp/CscCore/project.json index 68f61a8527c3e..f49d49cad2744 100644 --- a/src/Compilers/CSharp/CscCore/project.json +++ b/src/Compilers/CSharp/CscCore/project.json @@ -4,17 +4,34 @@ "Microsoft.NETCore.Runtime.CoreCLR": "1.0.1-beta-23321", "Microsoft.NETCore.TestHost-x64": "1.0.0-beta-23213", "System.AppContext": "4.0.1-beta-23321", + "System.Collections": "4.0.11-beta-23321", "System.Collections.Immutable": "1.1.36", "System.Console": "4.0.0-beta-23321", + "System.Diagnostics.Debug": "4.0.11-beta-23321", "System.Diagnostics.FileVersionInfo": "4.0.0-beta-23321", "System.Diagnostics.Process": "4.1.0-beta-23321", + "System.Diagnostics.Tools": "4.0.1-beta-23321", "System.Dynamic.Runtime": "4.0.11-beta-23321", "System.IO.FileSystem": "4.0.1-beta-23321", "System.IO.Pipes": "4.0.0-beta-23321", "System.Linq": "4.0.1-beta-23321", + "System.Private.Uri": "4.0.1-beta-23321", + "System.Reflection": "4.1.0-beta-23321", + "System.Reflection.Primitives": "4.0.1-beta-23321", + "System.Resources.ResourceManager": "4.0.1-beta-23321", + "System.Runtime": "4.0.21-beta-23321", + "System.Runtime.Extensions": "4.0.11-beta-23321", + "System.Runtime.Handles": "4.0.1-beta-23321", + "System.Runtime.InteropServices": "4.0.21-beta-23321", "System.Security.Cryptography.Hashing.Algorithms": "4.0.0-beta-23311", - "System.Threading.Tasks.Parallel": "4.0.1-beta-23321", + "System.Runtime.Serialization.Json": "4.0.1-beta-23321", + "System.Text.Encoding": "4.0.11-beta-23321", + "System.Text.Encoding.Extensions": "4.0.11-beta-23321", + "System.Threading": "4.0.11-beta-23321", + "System.Threading.Tasks": "4.0.11-beta-23321", "System.Threading.Thread": "4.0.0-beta-23321", + "System.Xml.XDocument": "4.0.11-beta-23321", + "System.Xml.XmlDocument": "4.0.1-beta-23321", }, "frameworks": { "dnxcore50": { diff --git a/src/Compilers/CSharp/CscCore/project.lock.json b/src/Compilers/CSharp/CscCore/project.lock.json index 420c33978f0a4..feaae53a73437 100644 --- a/src/Compilers/CSharp/CscCore/project.lock.json +++ b/src/Compilers/CSharp/CscCore/project.lock.json @@ -58,25 +58,6 @@ "lib/DNXCore50/System.Collections.dll": {} } }, - "System.Collections.Concurrent/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tracing": "[4.0.20, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/dotnet/System.Collections.Concurrent.dll": {} - } - }, "System.Collections.Immutable/1.1.36": { "compile": { "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} @@ -318,6 +299,36 @@ "lib/dotnet/System.ObjectModel.dll": {} } }, + "System.Private.DataContractSerialization/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Serialization.Primitives": "[4.0.11-beta-23321, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )", + "System.Xml.XmlSerializer": "[4.0.10, )" + }, + "compile": { + "ref/dnxcore50/_._": {} + }, + "runtime": { + "lib/DNXCore50/System.Private.DataContractSerialization.dll": {} + } + }, "System.Private.Uri/4.0.1-beta-23321": { "compile": { "ref/dnxcore50/_._": {} @@ -467,6 +478,29 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, + "System.Runtime.Serialization.Json/4.0.1-beta-23321": { + "dependencies": { + "System.Private.DataContractSerialization": "[4.0.1-beta-23321, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Serialization.Json.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Serialization.Json.dll": {} + } + }, + "System.Runtime.Serialization.Primitives/4.0.11-beta-23321": { + "dependencies": { + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Serialization.Primitives.dll": {} + }, + "runtime": { + "lib/dotnet/System.Runtime.Serialization.Primitives.dll": {} + } + }, "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.IO": "[4.0.10, )", @@ -547,6 +581,22 @@ "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {} } }, + "System.Text.RegularExpressions/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/dotnet/System.Text.RegularExpressions.dll": {} + } + }, "System.Threading/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", @@ -567,44 +617,118 @@ "lib/DNXCore50/System.Threading.Tasks.dll": {} } }, - "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { + "System.Threading.Thread/4.0.0-beta-23321": { "dependencies": { - "System.Collections.Concurrent": "[4.0.10, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Threading.Thread.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Threading.Thread.dll": {} + } + }, + "System.Threading.Timer/4.0.1-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Threading.Timer.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Threading.Timer.dll": {} + } + }, + "System.Xml.ReaderWriter/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.IO.FileSystem": "[4.0.0, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Threading.Tasks.Parallel.dll": {} + "ref/dotnet/System.Xml.ReaderWriter.dll": {} }, "runtime": { - "lib/dotnet/System.Threading.Tasks.Parallel.dll": {} + "lib/dotnet/System.Xml.ReaderWriter.dll": {} } }, - "System.Threading.Thread/4.0.0-beta-23321": { + "System.Xml.XDocument/4.0.11-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )" + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tools": "[4.0.0, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Threading.Thread.dll": {} + "ref/dotnet/System.Xml.XDocument.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Thread.dll": {} + "lib/dotnet/System.Xml.XDocument.dll": {} } }, - "System.Threading.Timer/4.0.1-beta-23321": { + "System.Xml.XmlDocument/4.0.1-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )" + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Threading.Timer.dll": {} + "ref/dotnet/System.Xml.XmlDocument.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Timer.dll": {} + "lib/dotnet/System.Xml.XmlDocument.dll": {} + } + }, + "System.Xml.XmlSerializer/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )", + "System.Xml.XmlDocument": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Xml.XmlSerializer.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Xml.XmlSerializer.dll": {} } } }, @@ -833,25 +957,6 @@ "lib/DNXCore50/System.Collections.dll": {} } }, - "System.Collections.Concurrent/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tracing": "[4.0.20, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/dotnet/System.Collections.Concurrent.dll": {} - } - }, "System.Collections.Immutable/1.1.36": { "compile": { "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} @@ -1093,6 +1198,36 @@ "lib/dotnet/System.ObjectModel.dll": {} } }, + "System.Private.DataContractSerialization/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Serialization.Primitives": "[4.0.11-beta-23321, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )", + "System.Xml.XmlSerializer": "[4.0.10, )" + }, + "compile": { + "ref/dnxcore50/_._": {} + }, + "runtime": { + "lib/DNXCore50/System.Private.DataContractSerialization.dll": {} + } + }, "System.Private.Uri/4.0.1-beta-23321": { "compile": { "ref/dnxcore50/_._": {} @@ -1256,6 +1391,29 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, + "System.Runtime.Serialization.Json/4.0.1-beta-23321": { + "dependencies": { + "System.Private.DataContractSerialization": "[4.0.1-beta-23321, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Serialization.Json.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Serialization.Json.dll": {} + } + }, + "System.Runtime.Serialization.Primitives/4.0.11-beta-23321": { + "dependencies": { + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Serialization.Primitives.dll": {} + }, + "runtime": { + "lib/dotnet/System.Runtime.Serialization.Primitives.dll": {} + } + }, "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.IO": "[4.0.10, )", @@ -1336,6 +1494,22 @@ "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {} } }, + "System.Text.RegularExpressions/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/dotnet/System.Text.RegularExpressions.dll": {} + } + }, "System.Threading/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", @@ -1356,24 +1530,6 @@ "lib/DNXCore50/System.Threading.Tasks.dll": {} } }, - "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { - "dependencies": { - "System.Collections.Concurrent": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tracing": "[4.0.20, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Threading.Tasks.Parallel.dll": {} - }, - "runtime": { - "lib/dotnet/System.Threading.Tasks.Parallel.dll": {} - } - }, "System.Threading.Thread/4.0.0-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" @@ -1407,6 +1563,98 @@ "runtime": { "lib/DNXCore50/System.Threading.Timer.dll": {} } + }, + "System.Xml.ReaderWriter/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.IO.FileSystem": "[4.0.0, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Xml.ReaderWriter.dll": {} + }, + "runtime": { + "lib/dotnet/System.Xml.ReaderWriter.dll": {} + } + }, + "System.Xml.XDocument/4.0.11-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tools": "[4.0.0, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Xml.XDocument.dll": {} + }, + "runtime": { + "lib/dotnet/System.Xml.XDocument.dll": {} + } + }, + "System.Xml.XmlDocument/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Xml.XmlDocument.dll": {} + }, + "runtime": { + "lib/dotnet/System.Xml.XmlDocument.dll": {} + } + }, + "System.Xml.XmlSerializer/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )", + "System.Xml.XmlDocument": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Xml.XmlSerializer.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Xml.XmlSerializer.dll": {} + } } }, "DNXCore,Version=v5.0/win7-x64": { @@ -1784,25 +2032,6 @@ "lib/DNXCore50/System.Collections.dll": {} } }, - "System.Collections.Concurrent/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tracing": "[4.0.20, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/dotnet/System.Collections.Concurrent.dll": {} - } - }, "System.Collections.Immutable/1.1.36": { "compile": { "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} @@ -2044,6 +2273,36 @@ "lib/dotnet/System.ObjectModel.dll": {} } }, + "System.Private.DataContractSerialization/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Serialization.Primitives": "[4.0.11-beta-23321, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )", + "System.Xml.XmlSerializer": "[4.0.10, )" + }, + "compile": { + "ref/dnxcore50/_._": {} + }, + "runtime": { + "lib/DNXCore50/System.Private.DataContractSerialization.dll": {} + } + }, "System.Private.Uri/4.0.1-beta-23321": { "compile": { "ref/dnxcore50/_._": {} @@ -2187,24 +2446,47 @@ "System.Runtime": "[4.0.0, )" }, "compile": { - "ref/dotnet/System.Runtime.Handles.dll": {} + "ref/dotnet/System.Runtime.Handles.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Handles.dll": {} + } + }, + "System.Runtime.InteropServices/4.0.21-beta-23321": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", + "System.Runtime.Handles": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Runtime.InteropServices.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.InteropServices.dll": {} + } + }, + "System.Runtime.Serialization.Json/4.0.1-beta-23321": { + "dependencies": { + "System.Private.DataContractSerialization": "[4.0.1-beta-23321, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Serialization.Json.dll": {} }, "runtime": { - "lib/DNXCore50/System.Runtime.Handles.dll": {} + "lib/DNXCore50/System.Runtime.Serialization.Json.dll": {} } }, - "System.Runtime.InteropServices/4.0.21-beta-23321": { + "System.Runtime.Serialization.Primitives/4.0.11-beta-23321": { "dependencies": { - "System.Reflection": "[4.0.0, )", - "System.Reflection.Primitives": "[4.0.0, )", - "System.Runtime": "[4.0.0, )", - "System.Runtime.Handles": "[4.0.0, )" + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )" }, "compile": { - "ref/dotnet/System.Runtime.InteropServices.dll": {} + "ref/dotnet/System.Runtime.Serialization.Primitives.dll": {} }, "runtime": { - "lib/DNXCore50/System.Runtime.InteropServices.dll": {} + "lib/dotnet/System.Runtime.Serialization.Primitives.dll": {} } }, "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { @@ -2287,6 +2569,22 @@ "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {} } }, + "System.Text.RegularExpressions/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/dotnet/System.Text.RegularExpressions.dll": {} + } + }, "System.Threading/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", @@ -2319,24 +2617,6 @@ "lib/DNXCore50/System.Threading.Tasks.dll": {} } }, - "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { - "dependencies": { - "System.Collections.Concurrent": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tracing": "[4.0.20, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Threading.Tasks.Parallel.dll": {} - }, - "runtime": { - "lib/dotnet/System.Threading.Tasks.Parallel.dll": {} - } - }, "System.Threading.Thread/4.0.0-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" @@ -2370,6 +2650,98 @@ "runtime": { "lib/DNXCore50/System.Threading.Timer.dll": {} } + }, + "System.Xml.ReaderWriter/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.IO.FileSystem": "[4.0.0, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Xml.ReaderWriter.dll": {} + }, + "runtime": { + "lib/dotnet/System.Xml.ReaderWriter.dll": {} + } + }, + "System.Xml.XDocument/4.0.11-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tools": "[4.0.0, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Xml.XDocument.dll": {} + }, + "runtime": { + "lib/dotnet/System.Xml.XDocument.dll": {} + } + }, + "System.Xml.XmlDocument/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Xml.XmlDocument.dll": {} + }, + "runtime": { + "lib/dotnet/System.Xml.XmlDocument.dll": {} + } + }, + "System.Xml.XmlSerializer/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )", + "System.Xml.XmlDocument": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Xml.XmlSerializer.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Xml.XmlSerializer.dll": {} + } } } }, @@ -3122,38 +3494,6 @@ "System.Collections.nuspec" ] }, - "System.Collections.Concurrent/4.0.10": { - "sha512": "ZtMEqOPAjAIqR8fqom9AOKRaB94a+emO2O8uOP6vyJoNswSPrbiwN7iH53rrVpvjMVx0wr4/OMpI7486uGZjbw==", - "type": "Package", - "files": [ - "[Content_Types].xml", - "_rels/.rels", - "lib/dotnet/System.Collections.Concurrent.dll", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/c982a1e1e1644b62952fc4d4dcbe0d42.psmdcp", - "ref/dotnet/de/System.Collections.Concurrent.xml", - "ref/dotnet/es/System.Collections.Concurrent.xml", - "ref/dotnet/fr/System.Collections.Concurrent.xml", - "ref/dotnet/it/System.Collections.Concurrent.xml", - "ref/dotnet/ja/System.Collections.Concurrent.xml", - "ref/dotnet/ko/System.Collections.Concurrent.xml", - "ref/dotnet/ru/System.Collections.Concurrent.xml", - "ref/dotnet/System.Collections.Concurrent.dll", - "ref/dotnet/System.Collections.Concurrent.xml", - "ref/dotnet/zh-hans/System.Collections.Concurrent.xml", - "ref/dotnet/zh-hant/System.Collections.Concurrent.xml", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "System.Collections.Concurrent.nuspec" - ] - }, "System.Collections.Immutable/1.1.36": { "sha512": "MOlivTIeAIQPPMUPWIIoMCvZczjFRLYUWSYwqi1szu8QPyeIbsaPeI+hpXe1DzTxNwnRnmfYaoToi6kXIfSPNg==", "type": "Package", @@ -3784,6 +4124,22 @@ "System.ObjectModel.nuspec" ] }, + "System.Private.DataContractSerialization/4.0.1-beta-23321": { + "sha512": "yhnbPDMGg4r7fprZDvWauOdTOoRMlduNOdaEm8v15bGupt4o0VwgCoUfSPVnXWDoK/nzHYmw5vx4v7Q+GQU/Xg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Private.DataContractSerialization.dll", + "lib/netcore50/System.Private.DataContractSerialization.dll", + "package/services/metadata/core-properties/ac21f9476075476f828a7650d3df2d26.psmdcp", + "ref/dnxcore50/_._", + "ref/netcore50/_._", + "runtime.json", + "runtimes/win8-aot/lib/netcore50/System.Private.DataContractSerialization.dll", + "System.Private.DataContractSerialization.nuspec" + ] + }, "System.Private.Uri/4.0.1-beta-23321": { "sha512": "aYzUbfsIO9LHpGeBJFbuBRzbg8NhSxCWWAjJNdyKV6SrgawsuCsec+MOWsx+H4JR8NOE2CG5C3oDVj4eI9Pgtw==", "type": "Package", @@ -4225,6 +4581,61 @@ "System.Runtime.InteropServices.nuspec" ] }, + "System.Runtime.Serialization.Json/4.0.1-beta-23321": { + "sha512": "TWQRwFnriFMykVgsCyowKFI5eLWoceMtoIrrx9Wd2ZL+XAnsdiYe8OUVeL9Q0kLVs3Ew12sPiXtY2wvVDAYR3w==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Runtime.Serialization.Json.dll", + "lib/net45/_._", + "lib/netcore50/System.Runtime.Serialization.Json.dll", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "package/services/metadata/core-properties/327a73c5bf67401b853fccae543c77bf.psmdcp", + "ref/dotnet/System.Runtime.Serialization.Json.dll", + "ref/net45/_._", + "ref/netcore50/System.Runtime.Serialization.Json.dll", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "runtimes/win8-aot/lib/netcore50/System.Runtime.Serialization.Json.dll", + "System.Runtime.Serialization.Json.nuspec" + ] + }, + "System.Runtime.Serialization.Primitives/4.0.11-beta-23321": { + "sha512": "NLgWHf4D0PYQ66Os9rl6wksBdyNdIE6yNCXB8QJ40BPLiPr1g1MYfGU6pqC84bfPHcogKYu5G641EJIiVJdoAQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/de/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/es/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/fr/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/it/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/ja/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/ko/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/ru/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/System.Runtime.Serialization.Primitives.dll", + "lib/dotnet/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/zh-hans/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/zh-hant/System.Runtime.Serialization.Primitives.xml", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/2a757a92701b40748f3159edf5379946.psmdcp", + "ref/dotnet/System.Runtime.Serialization.Primitives.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Runtime.Serialization.Primitives.nuspec" + ] + }, "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { "sha512": "1l9b838cbDrV/KUwlnLmGTF2JbHBt7yJ0tw9mCl2LXZk31y+W0vzo0gA0RUfdr4ASvhF1dOzq6cUwolPScc7wQ==", "type": "Package", @@ -4371,6 +4782,38 @@ "System.Text.Encoding.Extensions.nuspec" ] }, + "System.Text.RegularExpressions/4.0.10": { + "sha512": "0vDuHXJePpfMCecWBNOabOKCvzfTbFMNcGgklt3l5+RqHV5SzmF7RUVpuet8V0rJX30ROlL66xdehw2Rdsn2DA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Text.RegularExpressions.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/548eb1bd139e4c8cbc55e9f7f4f404dd.psmdcp", + "ref/dotnet/de/System.Text.RegularExpressions.xml", + "ref/dotnet/es/System.Text.RegularExpressions.xml", + "ref/dotnet/fr/System.Text.RegularExpressions.xml", + "ref/dotnet/it/System.Text.RegularExpressions.xml", + "ref/dotnet/ja/System.Text.RegularExpressions.xml", + "ref/dotnet/ko/System.Text.RegularExpressions.xml", + "ref/dotnet/ru/System.Text.RegularExpressions.xml", + "ref/dotnet/System.Text.RegularExpressions.dll", + "ref/dotnet/System.Text.RegularExpressions.xml", + "ref/dotnet/zh-hans/System.Text.RegularExpressions.xml", + "ref/dotnet/zh-hant/System.Text.RegularExpressions.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Text.RegularExpressions.nuspec" + ] + }, "System.Threading/4.0.11-beta-23321": { "sha512": "PeQJ218GGDU4Cccsp8Im1sO5B4zvMIbLxWnYLVhFIIOry0diB/YhuBjwIG8xDuXNYmlB4qrIfxzBZCrZR4nsCA==", "type": "Package", @@ -4473,37 +4916,6 @@ "System.Threading.Tasks.nuspec" ] }, - "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { - "sha512": "wDGHoyzdxm2h/QrDxcsCYzeJUvkS9hoW9gllghEvxqzgZoYZfsh4wbxxASDHdUoI1KSeHsdrzLLeIDGhSaWFOQ==", - "type": "Package", - "files": [ - "[Content_Types].xml", - "_rels/.rels", - "lib/dotnet/de/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/es/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/fr/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/it/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/ja/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/ko/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/ru/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/System.Threading.Tasks.Parallel.dll", - "lib/dotnet/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/zh-hans/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/zh-hant/System.Threading.Tasks.Parallel.xml", - "lib/net45/_._", - "lib/netcore50/System.Threading.Tasks.Parallel.dll", - "lib/netcore50/System.Threading.Tasks.Parallel.xml", - "lib/win8/_._", - "lib/wpa81/_._", - "package/services/metadata/core-properties/1c6312253e7f4649ae729f75de7dd476.psmdcp", - "ref/dotnet/System.Threading.Tasks.Parallel.dll", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.Parallel.dll", - "ref/win8/_._", - "ref/wpa81/_._", - "System.Threading.Tasks.Parallel.nuspec" - ] - }, "System.Threading.Thread/4.0.0-beta-23321": { "sha512": "LiwEM9FfFcKHbKKbJzBIU4RIVEDK1d3KdwGwV01putKnO2DEsxjRiunjCIaV5NYPqSTi/0gMybkak5iyomOZfA==", "type": "Package", @@ -4568,6 +4980,137 @@ "runtimes/win8-aot/lib/netcore50/System.Threading.Timer.dll", "System.Threading.Timer.nuspec" ] + }, + "System.Xml.ReaderWriter/4.0.10": { + "sha512": "VdmWWMH7otrYV7D+cviUo7XjX0jzDnD/lTGSZTlZqfIQ5PhXk85j+6P0TK9od3PnOd5ZIM+pOk01G/J+3nh9/w==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Xml.ReaderWriter.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/ef76b636720e4f2d8cfd570899d52df8.psmdcp", + "ref/dotnet/de/System.Xml.ReaderWriter.xml", + "ref/dotnet/es/System.Xml.ReaderWriter.xml", + "ref/dotnet/fr/System.Xml.ReaderWriter.xml", + "ref/dotnet/it/System.Xml.ReaderWriter.xml", + "ref/dotnet/ja/System.Xml.ReaderWriter.xml", + "ref/dotnet/ko/System.Xml.ReaderWriter.xml", + "ref/dotnet/ru/System.Xml.ReaderWriter.xml", + "ref/dotnet/System.Xml.ReaderWriter.dll", + "ref/dotnet/System.Xml.ReaderWriter.xml", + "ref/dotnet/zh-hans/System.Xml.ReaderWriter.xml", + "ref/dotnet/zh-hant/System.Xml.ReaderWriter.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Xml.ReaderWriter.nuspec" + ] + }, + "System.Xml.XDocument/4.0.11-beta-23321": { + "sha512": "rdF7K3BCZO+s4STCRRwCMQKGrqHvmgiRaeRQWlrae/pf6LqeEXHTudpomf4GmtzsgDZ6Zq3BeTKNx9SGAVIqMQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/de/System.Xml.XDocument.xml", + "lib/dotnet/es/System.Xml.XDocument.xml", + "lib/dotnet/fr/System.Xml.XDocument.xml", + "lib/dotnet/it/System.Xml.XDocument.xml", + "lib/dotnet/ja/System.Xml.XDocument.xml", + "lib/dotnet/ko/System.Xml.XDocument.xml", + "lib/dotnet/ru/System.Xml.XDocument.xml", + "lib/dotnet/System.Xml.XDocument.dll", + "lib/dotnet/System.Xml.XDocument.xml", + "lib/dotnet/zh-hans/System.Xml.XDocument.xml", + "lib/dotnet/zh-hant/System.Xml.XDocument.xml", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/2d6f1984cccf45b0bf6a729029b95440.psmdcp", + "ref/dotnet/System.Xml.XDocument.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Xml.XDocument.nuspec" + ] + }, + "System.Xml.XmlDocument/4.0.1-beta-23321": { + "sha512": "D7OYzBPscNU8pACHmLaxQt1hJoDehywYdCvJKh3rwiCRBRSzbPtCsyIepDZyMHqBSPN0Cj7TkjfElGLpmaFYYw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/de/System.Xml.XmlDocument.xml", + "lib/dotnet/es/System.Xml.XmlDocument.xml", + "lib/dotnet/fr/System.Xml.XmlDocument.xml", + "lib/dotnet/it/System.Xml.XmlDocument.xml", + "lib/dotnet/ja/System.Xml.XmlDocument.xml", + "lib/dotnet/ko/System.Xml.XmlDocument.xml", + "lib/dotnet/ru/System.Xml.XmlDocument.xml", + "lib/dotnet/System.Xml.XmlDocument.dll", + "lib/dotnet/System.Xml.XmlDocument.xml", + "lib/dotnet/zh-hans/System.Xml.XmlDocument.xml", + "lib/dotnet/zh-hant/System.Xml.XmlDocument.xml", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Xml.XmlDocument.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/e756529b68ee4e2dbab85bf98ff5271b.psmdcp", + "ref/dotnet/System.Xml.XmlDocument.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Xml.XmlDocument.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Xml.XmlDocument.nuspec" + ] + }, + "System.Xml.XmlSerializer/4.0.10": { + "sha512": "OKhE6vruk88z/hl0lmfrMvXteTASgJUagu6PT6S10i9uLbvDR3pTwB6jVgiwa2D2qtTB+eneZbS9jljhPXhTtg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Xml.XmlSerializer.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Xml.XmlSerializer.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/1cffc42bca944f1d81ef3c3abdb0f0be.psmdcp", + "ref/dotnet/de/System.Xml.XmlSerializer.xml", + "ref/dotnet/es/System.Xml.XmlSerializer.xml", + "ref/dotnet/fr/System.Xml.XmlSerializer.xml", + "ref/dotnet/it/System.Xml.XmlSerializer.xml", + "ref/dotnet/ja/System.Xml.XmlSerializer.xml", + "ref/dotnet/ko/System.Xml.XmlSerializer.xml", + "ref/dotnet/ru/System.Xml.XmlSerializer.xml", + "ref/dotnet/System.Xml.XmlSerializer.dll", + "ref/dotnet/System.Xml.XmlSerializer.xml", + "ref/dotnet/zh-hans/System.Xml.XmlSerializer.xml", + "ref/dotnet/zh-hant/System.Xml.XmlSerializer.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtime.json", + "runtimes/win8-aot/lib/netcore50/System.Xml.XmlSerializer.dll", + "System.Xml.XmlSerializer.nuspec" + ] } }, "projectFileDependencyGroups": { @@ -4576,17 +5119,34 @@ "Microsoft.NETCore.Runtime.CoreCLR >= 1.0.1-beta-23321", "Microsoft.NETCore.TestHost-x64 >= 1.0.0-beta-23213", "System.AppContext >= 4.0.1-beta-23321", + "System.Collections >= 4.0.11-beta-23321", "System.Collections.Immutable >= 1.1.36", "System.Console >= 4.0.0-beta-23321", + "System.Diagnostics.Debug >= 4.0.11-beta-23321", "System.Diagnostics.FileVersionInfo >= 4.0.0-beta-23321", "System.Diagnostics.Process >= 4.1.0-beta-23321", + "System.Diagnostics.Tools >= 4.0.1-beta-23321", "System.Dynamic.Runtime >= 4.0.11-beta-23321", "System.IO.FileSystem >= 4.0.1-beta-23321", "System.IO.Pipes >= 4.0.0-beta-23321", "System.Linq >= 4.0.1-beta-23321", + "System.Private.Uri >= 4.0.1-beta-23321", + "System.Reflection >= 4.1.0-beta-23321", + "System.Reflection.Primitives >= 4.0.1-beta-23321", + "System.Resources.ResourceManager >= 4.0.1-beta-23321", + "System.Runtime >= 4.0.21-beta-23321", + "System.Runtime.Extensions >= 4.0.11-beta-23321", + "System.Runtime.Handles >= 4.0.1-beta-23321", + "System.Runtime.InteropServices >= 4.0.21-beta-23321", + "System.Runtime.Serialization.Json >= 4.0.1-beta-23321", "System.Security.Cryptography.Hashing.Algorithms >= 4.0.0-beta-23311", - "System.Threading.Tasks.Parallel >= 4.0.1-beta-23321", - "System.Threading.Thread >= 4.0.0-beta-23321" + "System.Text.Encoding >= 4.0.11-beta-23321", + "System.Text.Encoding.Extensions >= 4.0.11-beta-23321", + "System.Threading >= 4.0.11-beta-23321", + "System.Threading.Tasks >= 4.0.11-beta-23321", + "System.Threading.Thread >= 4.0.0-beta-23321", + "System.Xml.XDocument >= 4.0.11-beta-23321", + "System.Xml.XmlDocument >= 4.0.1-beta-23321" ], "DNXCore,Version=v5.0": [] } diff --git a/src/Compilers/VisualBasic/VbcCore/project.json b/src/Compilers/VisualBasic/VbcCore/project.json index 22b3ad78321a5..25422da7c6dbd 100644 --- a/src/Compilers/VisualBasic/VbcCore/project.json +++ b/src/Compilers/VisualBasic/VbcCore/project.json @@ -4,17 +4,34 @@ "Microsoft.NETCore.Runtime.CoreCLR": "1.0.1-beta-23321", "Microsoft.NETCore.TestHost-x64": "1.0.0-beta-23213", "System.AppContext": "4.0.1-beta-23321", + "System.Collections": "4.0.11-beta-23321", "System.Collections.Immutable": "1.1.36", "System.Console": "4.0.0-beta-23321", + "System.Diagnostics.Debug": "4.0.11-beta-23321", "System.Diagnostics.FileVersionInfo": "4.0.0-beta-23321", "System.Diagnostics.Process": "4.1.0-beta-23321", + "System.Diagnostics.Tools": "4.0.1-beta-23321", "System.Dynamic.Runtime": "4.0.11-beta-23321", "System.IO.FileSystem": "4.0.1-beta-23321", "System.IO.Pipes": "4.0.0-beta-23321", "System.Linq": "4.0.1-beta-23321", + "System.Private.Uri": "4.0.1-beta-23321", + "System.Reflection": "4.1.0-beta-23321", + "System.Reflection.Primitives": "4.0.1-beta-23321", + "System.Resources.ResourceManager": "4.0.1-beta-23321", + "System.Runtime": "4.0.21-beta-23321", + "System.Runtime.Extensions": "4.0.11-beta-23321", + "System.Runtime.Handles": "4.0.1-beta-23321", + "System.Runtime.InteropServices": "4.0.21-beta-23321", "System.Security.Cryptography.Hashing.Algorithms": "4.0.0-beta-23311", - "System.Threading.Tasks.Parallel": "4.0.1-beta-23321", + "System.Runtime.Serialization.Json": "4.0.1-beta-23321", + "System.Text.Encoding": "4.0.11-beta-23321", + "System.Text.Encoding.Extensions": "4.0.11-beta-23321", + "System.Threading": "4.0.11-beta-23321", + "System.Threading.Tasks": "4.0.11-beta-23321", "System.Threading.Thread": "4.0.0-beta-23321", + "System.Xml.XDocument": "4.0.11-beta-23321", + "System.Xml.XmlDocument": "4.0.1-beta-23321", }, "frameworks": { "dnxcore50": { diff --git a/src/Compilers/VisualBasic/VbcCore/project.lock.json b/src/Compilers/VisualBasic/VbcCore/project.lock.json index 420c33978f0a4..feaae53a73437 100644 --- a/src/Compilers/VisualBasic/VbcCore/project.lock.json +++ b/src/Compilers/VisualBasic/VbcCore/project.lock.json @@ -58,25 +58,6 @@ "lib/DNXCore50/System.Collections.dll": {} } }, - "System.Collections.Concurrent/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tracing": "[4.0.20, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/dotnet/System.Collections.Concurrent.dll": {} - } - }, "System.Collections.Immutable/1.1.36": { "compile": { "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} @@ -318,6 +299,36 @@ "lib/dotnet/System.ObjectModel.dll": {} } }, + "System.Private.DataContractSerialization/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Serialization.Primitives": "[4.0.11-beta-23321, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )", + "System.Xml.XmlSerializer": "[4.0.10, )" + }, + "compile": { + "ref/dnxcore50/_._": {} + }, + "runtime": { + "lib/DNXCore50/System.Private.DataContractSerialization.dll": {} + } + }, "System.Private.Uri/4.0.1-beta-23321": { "compile": { "ref/dnxcore50/_._": {} @@ -467,6 +478,29 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, + "System.Runtime.Serialization.Json/4.0.1-beta-23321": { + "dependencies": { + "System.Private.DataContractSerialization": "[4.0.1-beta-23321, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Serialization.Json.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Serialization.Json.dll": {} + } + }, + "System.Runtime.Serialization.Primitives/4.0.11-beta-23321": { + "dependencies": { + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Serialization.Primitives.dll": {} + }, + "runtime": { + "lib/dotnet/System.Runtime.Serialization.Primitives.dll": {} + } + }, "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.IO": "[4.0.10, )", @@ -547,6 +581,22 @@ "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {} } }, + "System.Text.RegularExpressions/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/dotnet/System.Text.RegularExpressions.dll": {} + } + }, "System.Threading/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", @@ -567,44 +617,118 @@ "lib/DNXCore50/System.Threading.Tasks.dll": {} } }, - "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { + "System.Threading.Thread/4.0.0-beta-23321": { "dependencies": { - "System.Collections.Concurrent": "[4.0.10, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Threading.Thread.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Threading.Thread.dll": {} + } + }, + "System.Threading.Timer/4.0.1-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Threading.Timer.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Threading.Timer.dll": {} + } + }, + "System.Xml.ReaderWriter/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tracing": "[4.0.20, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.IO.FileSystem": "[4.0.0, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", "System.Resources.ResourceManager": "[4.0.0, )", "System.Runtime": "[4.0.20, )", "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", "System.Threading.Tasks": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Threading.Tasks.Parallel.dll": {} + "ref/dotnet/System.Xml.ReaderWriter.dll": {} }, "runtime": { - "lib/dotnet/System.Threading.Tasks.Parallel.dll": {} + "lib/dotnet/System.Xml.ReaderWriter.dll": {} } }, - "System.Threading.Thread/4.0.0-beta-23321": { + "System.Xml.XDocument/4.0.11-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )" + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tools": "[4.0.0, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Threading.Thread.dll": {} + "ref/dotnet/System.Xml.XDocument.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Thread.dll": {} + "lib/dotnet/System.Xml.XDocument.dll": {} } }, - "System.Threading.Timer/4.0.1-beta-23321": { + "System.Xml.XmlDocument/4.0.1-beta-23321": { "dependencies": { - "System.Runtime": "[4.0.0, )" + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )" }, "compile": { - "ref/dotnet/System.Threading.Timer.dll": {} + "ref/dotnet/System.Xml.XmlDocument.dll": {} }, "runtime": { - "lib/DNXCore50/System.Threading.Timer.dll": {} + "lib/dotnet/System.Xml.XmlDocument.dll": {} + } + }, + "System.Xml.XmlSerializer/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )", + "System.Xml.XmlDocument": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Xml.XmlSerializer.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Xml.XmlSerializer.dll": {} } } }, @@ -833,25 +957,6 @@ "lib/DNXCore50/System.Collections.dll": {} } }, - "System.Collections.Concurrent/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tracing": "[4.0.20, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/dotnet/System.Collections.Concurrent.dll": {} - } - }, "System.Collections.Immutable/1.1.36": { "compile": { "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} @@ -1093,6 +1198,36 @@ "lib/dotnet/System.ObjectModel.dll": {} } }, + "System.Private.DataContractSerialization/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Serialization.Primitives": "[4.0.11-beta-23321, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )", + "System.Xml.XmlSerializer": "[4.0.10, )" + }, + "compile": { + "ref/dnxcore50/_._": {} + }, + "runtime": { + "lib/DNXCore50/System.Private.DataContractSerialization.dll": {} + } + }, "System.Private.Uri/4.0.1-beta-23321": { "compile": { "ref/dnxcore50/_._": {} @@ -1256,6 +1391,29 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, + "System.Runtime.Serialization.Json/4.0.1-beta-23321": { + "dependencies": { + "System.Private.DataContractSerialization": "[4.0.1-beta-23321, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Serialization.Json.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Serialization.Json.dll": {} + } + }, + "System.Runtime.Serialization.Primitives/4.0.11-beta-23321": { + "dependencies": { + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Serialization.Primitives.dll": {} + }, + "runtime": { + "lib/dotnet/System.Runtime.Serialization.Primitives.dll": {} + } + }, "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { "dependencies": { "System.IO": "[4.0.10, )", @@ -1336,6 +1494,22 @@ "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {} } }, + "System.Text.RegularExpressions/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/dotnet/System.Text.RegularExpressions.dll": {} + } + }, "System.Threading/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", @@ -1356,24 +1530,6 @@ "lib/DNXCore50/System.Threading.Tasks.dll": {} } }, - "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { - "dependencies": { - "System.Collections.Concurrent": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tracing": "[4.0.20, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Threading.Tasks.Parallel.dll": {} - }, - "runtime": { - "lib/dotnet/System.Threading.Tasks.Parallel.dll": {} - } - }, "System.Threading.Thread/4.0.0-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" @@ -1407,6 +1563,98 @@ "runtime": { "lib/DNXCore50/System.Threading.Timer.dll": {} } + }, + "System.Xml.ReaderWriter/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.IO.FileSystem": "[4.0.0, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Xml.ReaderWriter.dll": {} + }, + "runtime": { + "lib/dotnet/System.Xml.ReaderWriter.dll": {} + } + }, + "System.Xml.XDocument/4.0.11-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tools": "[4.0.0, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Xml.XDocument.dll": {} + }, + "runtime": { + "lib/dotnet/System.Xml.XDocument.dll": {} + } + }, + "System.Xml.XmlDocument/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Xml.XmlDocument.dll": {} + }, + "runtime": { + "lib/dotnet/System.Xml.XmlDocument.dll": {} + } + }, + "System.Xml.XmlSerializer/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )", + "System.Xml.XmlDocument": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Xml.XmlSerializer.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Xml.XmlSerializer.dll": {} + } } }, "DNXCore,Version=v5.0/win7-x64": { @@ -1784,25 +2032,6 @@ "lib/DNXCore50/System.Collections.dll": {} } }, - "System.Collections.Concurrent/4.0.10": { - "dependencies": { - "System.Collections": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tracing": "[4.0.20, )", - "System.Globalization": "[4.0.10, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/dotnet/System.Collections.Concurrent.dll": {} - } - }, "System.Collections.Immutable/1.1.36": { "compile": { "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll": {} @@ -2044,6 +2273,36 @@ "lib/dotnet/System.ObjectModel.dll": {} } }, + "System.Private.DataContractSerialization/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Serialization.Primitives": "[4.0.11-beta-23321, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )", + "System.Xml.XmlSerializer": "[4.0.10, )" + }, + "compile": { + "ref/dnxcore50/_._": {} + }, + "runtime": { + "lib/DNXCore50/System.Private.DataContractSerialization.dll": {} + } + }, "System.Private.Uri/4.0.1-beta-23321": { "compile": { "ref/dnxcore50/_._": {} @@ -2187,24 +2446,47 @@ "System.Runtime": "[4.0.0, )" }, "compile": { - "ref/dotnet/System.Runtime.Handles.dll": {} + "ref/dotnet/System.Runtime.Handles.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Handles.dll": {} + } + }, + "System.Runtime.InteropServices/4.0.21-beta-23321": { + "dependencies": { + "System.Reflection": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Runtime": "[4.0.0, )", + "System.Runtime.Handles": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Runtime.InteropServices.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.InteropServices.dll": {} + } + }, + "System.Runtime.Serialization.Json/4.0.1-beta-23321": { + "dependencies": { + "System.Private.DataContractSerialization": "[4.0.1-beta-23321, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Serialization.Json.dll": {} }, "runtime": { - "lib/DNXCore50/System.Runtime.Handles.dll": {} + "lib/DNXCore50/System.Runtime.Serialization.Json.dll": {} } }, - "System.Runtime.InteropServices/4.0.21-beta-23321": { + "System.Runtime.Serialization.Primitives/4.0.11-beta-23321": { "dependencies": { - "System.Reflection": "[4.0.0, )", - "System.Reflection.Primitives": "[4.0.0, )", - "System.Runtime": "[4.0.0, )", - "System.Runtime.Handles": "[4.0.0, )" + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )" }, "compile": { - "ref/dotnet/System.Runtime.InteropServices.dll": {} + "ref/dotnet/System.Runtime.Serialization.Primitives.dll": {} }, "runtime": { - "lib/DNXCore50/System.Runtime.InteropServices.dll": {} + "lib/dotnet/System.Runtime.Serialization.Primitives.dll": {} } }, "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { @@ -2287,6 +2569,22 @@ "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {} } }, + "System.Text.RegularExpressions/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/dotnet/System.Text.RegularExpressions.dll": {} + } + }, "System.Threading/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", @@ -2319,24 +2617,6 @@ "lib/DNXCore50/System.Threading.Tasks.dll": {} } }, - "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { - "dependencies": { - "System.Collections.Concurrent": "[4.0.10, )", - "System.Diagnostics.Debug": "[4.0.10, )", - "System.Diagnostics.Tracing": "[4.0.20, )", - "System.Resources.ResourceManager": "[4.0.0, )", - "System.Runtime": "[4.0.20, )", - "System.Runtime.Extensions": "[4.0.10, )", - "System.Threading": "[4.0.10, )", - "System.Threading.Tasks": "[4.0.10, )" - }, - "compile": { - "ref/dotnet/System.Threading.Tasks.Parallel.dll": {} - }, - "runtime": { - "lib/dotnet/System.Threading.Tasks.Parallel.dll": {} - } - }, "System.Threading.Thread/4.0.0-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )" @@ -2370,6 +2650,98 @@ "runtime": { "lib/DNXCore50/System.Threading.Timer.dll": {} } + }, + "System.Xml.ReaderWriter/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.IO.FileSystem": "[4.0.0, )", + "System.IO.FileSystem.Primitives": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Text.Encoding.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading.Tasks": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Xml.ReaderWriter.dll": {} + }, + "runtime": { + "lib/dotnet/System.Xml.ReaderWriter.dll": {} + } + }, + "System.Xml.XDocument/4.0.11-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Diagnostics.Tools": "[4.0.0, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Xml.XDocument.dll": {} + }, + "runtime": { + "lib/dotnet/System.Xml.XDocument.dll": {} + } + }, + "System.Xml.XmlDocument/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Xml.XmlDocument.dll": {} + }, + "runtime": { + "lib/dotnet/System.Xml.XmlDocument.dll": {} + } + }, + "System.Xml.XmlSerializer/4.0.10": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Diagnostics.Debug": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Linq": "[4.0.0, )", + "System.Reflection": "[4.0.10, )", + "System.Reflection.Extensions": "[4.0.0, )", + "System.Reflection.Primitives": "[4.0.0, )", + "System.Reflection.TypeExtensions": "[4.0.0, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Text.RegularExpressions": "[4.0.10, )", + "System.Threading": "[4.0.10, )", + "System.Xml.ReaderWriter": "[4.0.10, )", + "System.Xml.XmlDocument": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Xml.XmlSerializer.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Xml.XmlSerializer.dll": {} + } } } }, @@ -3122,38 +3494,6 @@ "System.Collections.nuspec" ] }, - "System.Collections.Concurrent/4.0.10": { - "sha512": "ZtMEqOPAjAIqR8fqom9AOKRaB94a+emO2O8uOP6vyJoNswSPrbiwN7iH53rrVpvjMVx0wr4/OMpI7486uGZjbw==", - "type": "Package", - "files": [ - "[Content_Types].xml", - "_rels/.rels", - "lib/dotnet/System.Collections.Concurrent.dll", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "package/services/metadata/core-properties/c982a1e1e1644b62952fc4d4dcbe0d42.psmdcp", - "ref/dotnet/de/System.Collections.Concurrent.xml", - "ref/dotnet/es/System.Collections.Concurrent.xml", - "ref/dotnet/fr/System.Collections.Concurrent.xml", - "ref/dotnet/it/System.Collections.Concurrent.xml", - "ref/dotnet/ja/System.Collections.Concurrent.xml", - "ref/dotnet/ko/System.Collections.Concurrent.xml", - "ref/dotnet/ru/System.Collections.Concurrent.xml", - "ref/dotnet/System.Collections.Concurrent.dll", - "ref/dotnet/System.Collections.Concurrent.xml", - "ref/dotnet/zh-hans/System.Collections.Concurrent.xml", - "ref/dotnet/zh-hant/System.Collections.Concurrent.xml", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "System.Collections.Concurrent.nuspec" - ] - }, "System.Collections.Immutable/1.1.36": { "sha512": "MOlivTIeAIQPPMUPWIIoMCvZczjFRLYUWSYwqi1szu8QPyeIbsaPeI+hpXe1DzTxNwnRnmfYaoToi6kXIfSPNg==", "type": "Package", @@ -3784,6 +4124,22 @@ "System.ObjectModel.nuspec" ] }, + "System.Private.DataContractSerialization/4.0.1-beta-23321": { + "sha512": "yhnbPDMGg4r7fprZDvWauOdTOoRMlduNOdaEm8v15bGupt4o0VwgCoUfSPVnXWDoK/nzHYmw5vx4v7Q+GQU/Xg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Private.DataContractSerialization.dll", + "lib/netcore50/System.Private.DataContractSerialization.dll", + "package/services/metadata/core-properties/ac21f9476075476f828a7650d3df2d26.psmdcp", + "ref/dnxcore50/_._", + "ref/netcore50/_._", + "runtime.json", + "runtimes/win8-aot/lib/netcore50/System.Private.DataContractSerialization.dll", + "System.Private.DataContractSerialization.nuspec" + ] + }, "System.Private.Uri/4.0.1-beta-23321": { "sha512": "aYzUbfsIO9LHpGeBJFbuBRzbg8NhSxCWWAjJNdyKV6SrgawsuCsec+MOWsx+H4JR8NOE2CG5C3oDVj4eI9Pgtw==", "type": "Package", @@ -4225,6 +4581,61 @@ "System.Runtime.InteropServices.nuspec" ] }, + "System.Runtime.Serialization.Json/4.0.1-beta-23321": { + "sha512": "TWQRwFnriFMykVgsCyowKFI5eLWoceMtoIrrx9Wd2ZL+XAnsdiYe8OUVeL9Q0kLVs3Ew12sPiXtY2wvVDAYR3w==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Runtime.Serialization.Json.dll", + "lib/net45/_._", + "lib/netcore50/System.Runtime.Serialization.Json.dll", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "package/services/metadata/core-properties/327a73c5bf67401b853fccae543c77bf.psmdcp", + "ref/dotnet/System.Runtime.Serialization.Json.dll", + "ref/net45/_._", + "ref/netcore50/System.Runtime.Serialization.Json.dll", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "runtimes/win8-aot/lib/netcore50/System.Runtime.Serialization.Json.dll", + "System.Runtime.Serialization.Json.nuspec" + ] + }, + "System.Runtime.Serialization.Primitives/4.0.11-beta-23321": { + "sha512": "NLgWHf4D0PYQ66Os9rl6wksBdyNdIE6yNCXB8QJ40BPLiPr1g1MYfGU6pqC84bfPHcogKYu5G641EJIiVJdoAQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/de/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/es/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/fr/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/it/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/ja/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/ko/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/ru/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/System.Runtime.Serialization.Primitives.dll", + "lib/dotnet/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/zh-hans/System.Runtime.Serialization.Primitives.xml", + "lib/dotnet/zh-hant/System.Runtime.Serialization.Primitives.xml", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/2a757a92701b40748f3159edf5379946.psmdcp", + "ref/dotnet/System.Runtime.Serialization.Primitives.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Runtime.Serialization.Primitives.nuspec" + ] + }, "System.Security.Cryptography.Algorithms/4.0.0-beta-23311": { "sha512": "1l9b838cbDrV/KUwlnLmGTF2JbHBt7yJ0tw9mCl2LXZk31y+W0vzo0gA0RUfdr4ASvhF1dOzq6cUwolPScc7wQ==", "type": "Package", @@ -4371,6 +4782,38 @@ "System.Text.Encoding.Extensions.nuspec" ] }, + "System.Text.RegularExpressions/4.0.10": { + "sha512": "0vDuHXJePpfMCecWBNOabOKCvzfTbFMNcGgklt3l5+RqHV5SzmF7RUVpuet8V0rJX30ROlL66xdehw2Rdsn2DA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Text.RegularExpressions.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/548eb1bd139e4c8cbc55e9f7f4f404dd.psmdcp", + "ref/dotnet/de/System.Text.RegularExpressions.xml", + "ref/dotnet/es/System.Text.RegularExpressions.xml", + "ref/dotnet/fr/System.Text.RegularExpressions.xml", + "ref/dotnet/it/System.Text.RegularExpressions.xml", + "ref/dotnet/ja/System.Text.RegularExpressions.xml", + "ref/dotnet/ko/System.Text.RegularExpressions.xml", + "ref/dotnet/ru/System.Text.RegularExpressions.xml", + "ref/dotnet/System.Text.RegularExpressions.dll", + "ref/dotnet/System.Text.RegularExpressions.xml", + "ref/dotnet/zh-hans/System.Text.RegularExpressions.xml", + "ref/dotnet/zh-hant/System.Text.RegularExpressions.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Text.RegularExpressions.nuspec" + ] + }, "System.Threading/4.0.11-beta-23321": { "sha512": "PeQJ218GGDU4Cccsp8Im1sO5B4zvMIbLxWnYLVhFIIOry0diB/YhuBjwIG8xDuXNYmlB4qrIfxzBZCrZR4nsCA==", "type": "Package", @@ -4473,37 +4916,6 @@ "System.Threading.Tasks.nuspec" ] }, - "System.Threading.Tasks.Parallel/4.0.1-beta-23321": { - "sha512": "wDGHoyzdxm2h/QrDxcsCYzeJUvkS9hoW9gllghEvxqzgZoYZfsh4wbxxASDHdUoI1KSeHsdrzLLeIDGhSaWFOQ==", - "type": "Package", - "files": [ - "[Content_Types].xml", - "_rels/.rels", - "lib/dotnet/de/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/es/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/fr/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/it/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/ja/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/ko/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/ru/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/System.Threading.Tasks.Parallel.dll", - "lib/dotnet/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/zh-hans/System.Threading.Tasks.Parallel.xml", - "lib/dotnet/zh-hant/System.Threading.Tasks.Parallel.xml", - "lib/net45/_._", - "lib/netcore50/System.Threading.Tasks.Parallel.dll", - "lib/netcore50/System.Threading.Tasks.Parallel.xml", - "lib/win8/_._", - "lib/wpa81/_._", - "package/services/metadata/core-properties/1c6312253e7f4649ae729f75de7dd476.psmdcp", - "ref/dotnet/System.Threading.Tasks.Parallel.dll", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.Parallel.dll", - "ref/win8/_._", - "ref/wpa81/_._", - "System.Threading.Tasks.Parallel.nuspec" - ] - }, "System.Threading.Thread/4.0.0-beta-23321": { "sha512": "LiwEM9FfFcKHbKKbJzBIU4RIVEDK1d3KdwGwV01putKnO2DEsxjRiunjCIaV5NYPqSTi/0gMybkak5iyomOZfA==", "type": "Package", @@ -4568,6 +4980,137 @@ "runtimes/win8-aot/lib/netcore50/System.Threading.Timer.dll", "System.Threading.Timer.nuspec" ] + }, + "System.Xml.ReaderWriter/4.0.10": { + "sha512": "VdmWWMH7otrYV7D+cviUo7XjX0jzDnD/lTGSZTlZqfIQ5PhXk85j+6P0TK9od3PnOd5ZIM+pOk01G/J+3nh9/w==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Xml.ReaderWriter.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/ef76b636720e4f2d8cfd570899d52df8.psmdcp", + "ref/dotnet/de/System.Xml.ReaderWriter.xml", + "ref/dotnet/es/System.Xml.ReaderWriter.xml", + "ref/dotnet/fr/System.Xml.ReaderWriter.xml", + "ref/dotnet/it/System.Xml.ReaderWriter.xml", + "ref/dotnet/ja/System.Xml.ReaderWriter.xml", + "ref/dotnet/ko/System.Xml.ReaderWriter.xml", + "ref/dotnet/ru/System.Xml.ReaderWriter.xml", + "ref/dotnet/System.Xml.ReaderWriter.dll", + "ref/dotnet/System.Xml.ReaderWriter.xml", + "ref/dotnet/zh-hans/System.Xml.ReaderWriter.xml", + "ref/dotnet/zh-hant/System.Xml.ReaderWriter.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Xml.ReaderWriter.nuspec" + ] + }, + "System.Xml.XDocument/4.0.11-beta-23321": { + "sha512": "rdF7K3BCZO+s4STCRRwCMQKGrqHvmgiRaeRQWlrae/pf6LqeEXHTudpomf4GmtzsgDZ6Zq3BeTKNx9SGAVIqMQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/de/System.Xml.XDocument.xml", + "lib/dotnet/es/System.Xml.XDocument.xml", + "lib/dotnet/fr/System.Xml.XDocument.xml", + "lib/dotnet/it/System.Xml.XDocument.xml", + "lib/dotnet/ja/System.Xml.XDocument.xml", + "lib/dotnet/ko/System.Xml.XDocument.xml", + "lib/dotnet/ru/System.Xml.XDocument.xml", + "lib/dotnet/System.Xml.XDocument.dll", + "lib/dotnet/System.Xml.XDocument.xml", + "lib/dotnet/zh-hans/System.Xml.XDocument.xml", + "lib/dotnet/zh-hant/System.Xml.XDocument.xml", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/2d6f1984cccf45b0bf6a729029b95440.psmdcp", + "ref/dotnet/System.Xml.XDocument.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Xml.XDocument.nuspec" + ] + }, + "System.Xml.XmlDocument/4.0.1-beta-23321": { + "sha512": "D7OYzBPscNU8pACHmLaxQt1hJoDehywYdCvJKh3rwiCRBRSzbPtCsyIepDZyMHqBSPN0Cj7TkjfElGLpmaFYYw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/de/System.Xml.XmlDocument.xml", + "lib/dotnet/es/System.Xml.XmlDocument.xml", + "lib/dotnet/fr/System.Xml.XmlDocument.xml", + "lib/dotnet/it/System.Xml.XmlDocument.xml", + "lib/dotnet/ja/System.Xml.XmlDocument.xml", + "lib/dotnet/ko/System.Xml.XmlDocument.xml", + "lib/dotnet/ru/System.Xml.XmlDocument.xml", + "lib/dotnet/System.Xml.XmlDocument.dll", + "lib/dotnet/System.Xml.XmlDocument.xml", + "lib/dotnet/zh-hans/System.Xml.XmlDocument.xml", + "lib/dotnet/zh-hant/System.Xml.XmlDocument.xml", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Xml.XmlDocument.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/e756529b68ee4e2dbab85bf98ff5271b.psmdcp", + "ref/dotnet/System.Xml.XmlDocument.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Xml.XmlDocument.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "System.Xml.XmlDocument.nuspec" + ] + }, + "System.Xml.XmlSerializer/4.0.10": { + "sha512": "OKhE6vruk88z/hl0lmfrMvXteTASgJUagu6PT6S10i9uLbvDR3pTwB6jVgiwa2D2qtTB+eneZbS9jljhPXhTtg==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Xml.XmlSerializer.dll", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/netcore50/System.Xml.XmlSerializer.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/1cffc42bca944f1d81ef3c3abdb0f0be.psmdcp", + "ref/dotnet/de/System.Xml.XmlSerializer.xml", + "ref/dotnet/es/System.Xml.XmlSerializer.xml", + "ref/dotnet/fr/System.Xml.XmlSerializer.xml", + "ref/dotnet/it/System.Xml.XmlSerializer.xml", + "ref/dotnet/ja/System.Xml.XmlSerializer.xml", + "ref/dotnet/ko/System.Xml.XmlSerializer.xml", + "ref/dotnet/ru/System.Xml.XmlSerializer.xml", + "ref/dotnet/System.Xml.XmlSerializer.dll", + "ref/dotnet/System.Xml.XmlSerializer.xml", + "ref/dotnet/zh-hans/System.Xml.XmlSerializer.xml", + "ref/dotnet/zh-hant/System.Xml.XmlSerializer.xml", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtime.json", + "runtimes/win8-aot/lib/netcore50/System.Xml.XmlSerializer.dll", + "System.Xml.XmlSerializer.nuspec" + ] } }, "projectFileDependencyGroups": { @@ -4576,17 +5119,34 @@ "Microsoft.NETCore.Runtime.CoreCLR >= 1.0.1-beta-23321", "Microsoft.NETCore.TestHost-x64 >= 1.0.0-beta-23213", "System.AppContext >= 4.0.1-beta-23321", + "System.Collections >= 4.0.11-beta-23321", "System.Collections.Immutable >= 1.1.36", "System.Console >= 4.0.0-beta-23321", + "System.Diagnostics.Debug >= 4.0.11-beta-23321", "System.Diagnostics.FileVersionInfo >= 4.0.0-beta-23321", "System.Diagnostics.Process >= 4.1.0-beta-23321", + "System.Diagnostics.Tools >= 4.0.1-beta-23321", "System.Dynamic.Runtime >= 4.0.11-beta-23321", "System.IO.FileSystem >= 4.0.1-beta-23321", "System.IO.Pipes >= 4.0.0-beta-23321", "System.Linq >= 4.0.1-beta-23321", + "System.Private.Uri >= 4.0.1-beta-23321", + "System.Reflection >= 4.1.0-beta-23321", + "System.Reflection.Primitives >= 4.0.1-beta-23321", + "System.Resources.ResourceManager >= 4.0.1-beta-23321", + "System.Runtime >= 4.0.21-beta-23321", + "System.Runtime.Extensions >= 4.0.11-beta-23321", + "System.Runtime.Handles >= 4.0.1-beta-23321", + "System.Runtime.InteropServices >= 4.0.21-beta-23321", + "System.Runtime.Serialization.Json >= 4.0.1-beta-23321", "System.Security.Cryptography.Hashing.Algorithms >= 4.0.0-beta-23311", - "System.Threading.Tasks.Parallel >= 4.0.1-beta-23321", - "System.Threading.Thread >= 4.0.0-beta-23321" + "System.Text.Encoding >= 4.0.11-beta-23321", + "System.Text.Encoding.Extensions >= 4.0.11-beta-23321", + "System.Threading >= 4.0.11-beta-23321", + "System.Threading.Tasks >= 4.0.11-beta-23321", + "System.Threading.Thread >= 4.0.0-beta-23321", + "System.Xml.XDocument >= 4.0.11-beta-23321", + "System.Xml.XmlDocument >= 4.0.1-beta-23321" ], "DNXCore,Version=v5.0": [] } From 6a903893fb8a8cabd6987c0e30b65819adedf175 Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Tue, 22 Sep 2015 17:07:35 -0700 Subject: [PATCH 26/83] Update the *nix nuget packages --- cibuild.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cibuild.sh b/cibuild.sh index f7f4839c713fb..3e389f3466659 100755 --- a/cibuild.sh +++ b/cibuild.sh @@ -79,7 +79,7 @@ restore_nuget() { acquire_sem_or_wait "restore_nuget" - local package_name="nuget.11.zip" + local package_name="nuget.12.zip" local target="/tmp/$package_name" echo "Installing NuGet Packages $target" if [ -f $target ]; then From 30ee227760e8cdff4abe566a559a1ef53de1af8a Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Tue, 22 Sep 2015 17:18:13 -0700 Subject: [PATCH 27/83] Update default runtimes for DNXCore projects to be more specific --- build/Targets/VSL.Imports.targets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/Targets/VSL.Imports.targets b/build/Targets/VSL.Imports.targets index 73a3476d2f304..53e4f96fc5d4a 100644 --- a/build/Targets/VSL.Imports.targets +++ b/build/Targets/VSL.Imports.targets @@ -69,8 +69,8 @@ - win - linux + win7 + ubuntu.14.04 Date: Wed, 16 Sep 2015 14:10:07 -0700 Subject: [PATCH 28/83] Use NuGetPackageResolver in InteractiveHost --- src/EditorFeatures/Test/project.lock.json | 41 +++++++++ .../Core/InteractiveEditorFeatures.csproj | 1 - .../Core/InteractiveHost.Service.cs | 7 +- .../Core}/NuGetPackageResolverImpl.cs | 85 +++++++++--------- .../Features/InteractiveFeatures.csproj | 1 + src/Interactive/Features/project.json | 1 + src/Interactive/Features/project.lock.json | 34 ++++++++ src/Interactive/Host/project.lock.json | 41 +++++++++ .../HostTest/NuGetPackageResolverTests.cs | 87 ++++++++++++++----- .../Core/Resolvers/NuGetPackageResolver.cs | 27 +++++- .../RuntimeMetadataReferenceResolver.cs | 37 ++++---- src/Scripting/Core/ScriptOptions.cs | 12 +-- .../RuntimeMetadataReferenceResolverTests.cs | 78 +++++++++++++++++ src/Scripting/CoreTest/ScriptingTest.csproj | 3 +- 14 files changed, 362 insertions(+), 93 deletions(-) rename src/Interactive/{EditorFeatures/Core/Extensibility/Interactive => Features/Interactive/Core}/NuGetPackageResolverImpl.cs (70%) create mode 100644 src/Scripting/CoreTest/RuntimeMetadataReferenceResolverTests.cs diff --git a/src/EditorFeatures/Test/project.lock.json b/src/EditorFeatures/Test/project.lock.json index 3244d100c3a78..64571b6a0dc0c 100644 --- a/src/EditorFeatures/Test/project.lock.json +++ b/src/EditorFeatures/Test/project.lock.json @@ -59,6 +59,14 @@ "lib/net40/Moq.dll": {} } }, + "Newtonsoft.Json/6.0.4": { + "compile": { + "lib/net45/Newtonsoft.Json.dll": {} + }, + "runtime": { + "lib/net45/Newtonsoft.Json.dll": {} + } + }, "System.AppContext/4.0.0": { "dependencies": { "System.Runtime": "[4.0.0, )" @@ -368,6 +376,14 @@ "lib/net40/Moq.dll": {} } }, + "Newtonsoft.Json/6.0.4": { + "compile": { + "lib/net45/Newtonsoft.Json.dll": {} + }, + "runtime": { + "lib/net45/Newtonsoft.Json.dll": {} + } + }, "System.AppContext/4.0.0": { "dependencies": { "System.Runtime": "[4.0.0, )" @@ -776,6 +792,31 @@ "package/services/metadata/core-properties/98e2d674c8ec4e5fbda07a9e01280647.psmdcp" ] }, + "Newtonsoft.Json/6.0.4": { + "sha512": "FyQLmEpjsCrEP+znauLDGAi+h6i9YnaMkITlfIoiM4RYyX3nki306bTHsr/0okiIvIc7BJhQTbOAIZVocccFUw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/netcore45/Newtonsoft.Json.dll", + "lib/netcore45/Newtonsoft.Json.xml", + "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll", + "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.xml", + "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll", + "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml", + "Newtonsoft.Json.nuspec", + "package/services/metadata/core-properties/87a0a4e28d50417ea282e20f81bc6477.psmdcp", + "tools/install.ps1" + ] + }, "System.AppContext/4.0.0": { "sha512": "gUoYgAWDC3+xhKeU5KSLbYDhTdBYk9GssrMSCcWUADzOglW+s0AmwVhOUGt2tL5xUl7ZXoYTPdA88zCgKrlG0A==", "type": "Package", diff --git a/src/Interactive/EditorFeatures/Core/InteractiveEditorFeatures.csproj b/src/Interactive/EditorFeatures/Core/InteractiveEditorFeatures.csproj index 5d4c9dac773f5..886e1773a9ded 100644 --- a/src/Interactive/EditorFeatures/Core/InteractiveEditorFeatures.csproj +++ b/src/Interactive/EditorFeatures/Core/InteractiveEditorFeatures.csproj @@ -131,7 +131,6 @@ - diff --git a/src/Interactive/Features/Interactive/Core/InteractiveHost.Service.cs b/src/Interactive/Features/Interactive/Core/InteractiveHost.Service.cs index 5533c77bdadcc..dc6879f0746fb 100644 --- a/src/Interactive/Features/Interactive/Core/InteractiveHost.Service.cs +++ b/src/Interactive/Features/Interactive/Core/InteractiveHost.Service.cs @@ -25,7 +25,6 @@ using Roslyn.Utilities; using RuntimeMetadataReferenceResolver = WORKSPACES::Microsoft.CodeAnalysis.Scripting.Hosting.RuntimeMetadataReferenceResolver; -using NuGetPackageResolver = WORKSPACES::Microsoft.CodeAnalysis.Scripting.Hosting.NuGetPackageResolver; using GacFileResolver = WORKSPACES::Microsoft.CodeAnalysis.Scripting.Hosting.GacFileResolver; namespace Microsoft.CodeAnalysis.Interactive @@ -166,9 +165,13 @@ public void Initialize(Type replServiceProviderType) private MetadataReferenceResolver CreateMetadataReferenceResolver(ImmutableArray searchPaths, string baseDirectory) { + var userProfilePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + var packagesDirectory = string.IsNullOrEmpty(userProfilePath) ? + null : + Path.Combine(userProfilePath, Path.Combine(".nuget", "packages")); return new RuntimeMetadataReferenceResolver( new RelativePathResolver(searchPaths, baseDirectory), - null, // TODO + string.IsNullOrEmpty(packagesDirectory) ? null : new NuGetPackageResolverImpl(packagesDirectory), new GacFileResolver( architectures: GacFileResolver.Default.Architectures, // TODO (tomat) preferredCulture: CultureInfo.CurrentCulture), // TODO (tomat) diff --git a/src/Interactive/EditorFeatures/Core/Extensibility/Interactive/NuGetPackageResolverImpl.cs b/src/Interactive/Features/Interactive/Core/NuGetPackageResolverImpl.cs similarity index 70% rename from src/Interactive/EditorFeatures/Core/Extensibility/Interactive/NuGetPackageResolverImpl.cs rename to src/Interactive/Features/Interactive/Core/NuGetPackageResolverImpl.cs index c409a55f7f66b..c87c1d5669acc 100644 --- a/src/Interactive/EditorFeatures/Core/Extensibility/Interactive/NuGetPackageResolverImpl.cs +++ b/src/Interactive/Features/Interactive/Core/NuGetPackageResolverImpl.cs @@ -10,13 +10,23 @@ using System.Diagnostics; using System.IO; using System.Reflection; +using NuGetPackageResolver = WORKSPACES::Microsoft.CodeAnalysis.Scripting.Hosting.NuGetPackageResolver; -namespace Microsoft.CodeAnalysis.Editor.Interactive +namespace Microsoft.CodeAnalysis.Interactive { - internal sealed class NuGetPackageResolverImpl : WORKSPACES::Microsoft.CodeAnalysis.Scripting.Hosting.NuGetPackageResolver + internal sealed class NuGetPackageResolverImpl : NuGetPackageResolver { private const string ProjectJsonFramework = "net46"; private const string ProjectLockJsonFramework = ".NETFramework,Version=v4.6"; + private const string EmptyNuGetConfig = +@" + + + + + + +"; private readonly string _packagesDirectory; private readonly Action _restore; @@ -28,35 +38,39 @@ internal NuGetPackageResolverImpl(string packagesDirectory, Action ResolveNuGetPackage(string reference) + internal new static bool TryParsePackageReference(string reference, out string name, out string version) { - string packageName; - string packageVersion; - if (!ParsePackageReference(reference, out packageName, out packageVersion)) - { - return default(ImmutableArray); - } + return NuGetPackageResolver.TryParsePackageReference(reference, out name, out version); + } + internal override ImmutableArray ResolveNuGetPackage(string packageName, string packageVersion) + { try { - var tempPath = PathUtilities.CombineAbsoluteAndRelativePaths(Path.GetTempPath(), Guid.NewGuid().ToString("D")); + var tempPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("D")); var tempDir = Directory.CreateDirectory(tempPath); try { // Create project.json. - var projectJson = PathUtilities.CombineAbsoluteAndRelativePaths(tempPath, "project.json"); - using (var stream = File.OpenWrite(projectJson)) + var projectJsonPath = Path.Combine(tempPath, "project.json"); + using (var stream = File.OpenWrite(projectJsonPath)) using (var writer = new StreamWriter(stream)) { WriteProjectJson(writer, packageName, packageVersion); } - // Run "nuget.exe restore project.json" to generate project.lock.json. - NuGetRestore(projectJson); + // Create nuget.config with no package sources so restore + // uses the local cache only, no downloading. + var configPath = Path.Combine(tempPath, "nuget.config"); + File.WriteAllText(configPath, EmptyNuGetConfig); + + // Run "nuget.exe restore project.json -configfile nuget.config" + // to generate project.lock.json. + NuGetRestore(projectJsonPath, configPath); // Read the references from project.lock.json. - var projectLockJson = PathUtilities.CombineAbsoluteAndRelativePaths(tempPath, "project.lock.json"); - using (var stream = File.OpenRead(projectLockJson)) + var projectLockJsonPath = Path.Combine(tempPath, "project.lock.json"); + using (var stream = File.OpenRead(projectLockJsonPath)) using (var reader = new StreamReader(stream)) { return ReadProjectLockJson(_packagesDirectory, reader); @@ -76,25 +90,6 @@ internal override ImmutableArray ResolveNuGetPackage(string reference) return default(ImmutableArray); } - /// - /// Syntax is "id/version", matching references in project.lock.json. - /// - internal static bool ParsePackageReference(string reference, out string name, out string version) - { - var parts = reference.Split('/'); - if ((parts.Length == 2) && - (parts[0].Length > 0) && - (parts[1].Length > 0)) - { - name = parts[0]; - version = parts[1]; - return true; - } - name = null; - version = null; - return false; - } - /// /// Generate a project.json file with the packages as "dependencies". /// @@ -139,7 +134,7 @@ internal static ImmutableArray ReadProjectLockJson(string packagesDirect { foreach (var package in (JObject)target.Value) { - var packageRoot = PathUtilities.CombineAbsoluteAndRelativePaths(packagesDirectory, package.Key); + var packageRoot = Path.Combine(packagesDirectory, package.Key); var runtime = (JObject)GetPropertyValue((JObject)package.Value, "runtime"); if (runtime == null) { @@ -147,8 +142,14 @@ internal static ImmutableArray ReadProjectLockJson(string packagesDirect } foreach (var item in runtime) { - var path = PathUtilities.CombinePossiblyRelativeAndRelativePaths(packageRoot, item.Key); - builder.Add(path); + var relativePath = item.Key; + // Ignore placeholder "_._" files. + var name = Path.GetFileName(relativePath); + if (string.Equals(name, "_._", StringComparison.InvariantCulture)) + { + continue; + } + builder.Add(Path.Combine(packageRoot, relativePath)); } } break; @@ -164,17 +165,17 @@ private static JToken GetPropertyValue(JObject obj, string propertyName) return value; } - private void NuGetRestore(string projectJsonPath) + private void NuGetRestore(string projectJsonPath, string configPath) { // Load nuget.exe from same directory as current assembly. - var nugetExePath = PathUtilities.CombineAbsoluteAndRelativePaths( - PathUtilities.GetDirectoryName( + var nugetExePath = Path.Combine( + Path.GetDirectoryName( CorLightup.Desktop.GetAssemblyLocation(typeof(NuGetPackageResolverImpl).GetTypeInfo().Assembly)), "nuget.exe"); var startInfo = new ProcessStartInfo() { FileName = nugetExePath, - Arguments = $"restore \"{projectJsonPath}\" -PackagesDirectory \"{_packagesDirectory}\"", + Arguments = $"restore \"{projectJsonPath}\" -ConfigFile \"{configPath}\" -PackagesDirectory \"{_packagesDirectory}\"", CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true, diff --git a/src/Interactive/Features/InteractiveFeatures.csproj b/src/Interactive/Features/InteractiveFeatures.csproj index e420f546b7ef8..df2553be0b54a 100644 --- a/src/Interactive/Features/InteractiveFeatures.csproj +++ b/src/Interactive/Features/InteractiveFeatures.csproj @@ -94,6 +94,7 @@ + diff --git a/src/Interactive/Features/project.json b/src/Interactive/Features/project.json index 18f2a512a54d8..66e51b9634f1a 100644 --- a/src/Interactive/Features/project.json +++ b/src/Interactive/Features/project.json @@ -1,6 +1,7 @@ { "dependencies": { "Microsoft.Composition": "1.0.27", + "Newtonsoft.Json": "6.0.4", "System.Collections": "4.0.10", "System.Diagnostics.Debug": "4.0.10", "System.Globalization": "4.0.10", diff --git a/src/Interactive/Features/project.lock.json b/src/Interactive/Features/project.lock.json index 5d3952aa3c4d6..ed0b7d4bc0333 100644 --- a/src/Interactive/Features/project.lock.json +++ b/src/Interactive/Features/project.lock.json @@ -27,6 +27,14 @@ "lib/net45/_._": {} } }, + "Newtonsoft.Json/6.0.4": { + "compile": { + "lib/net45/Newtonsoft.Json.dll": {} + }, + "runtime": { + "lib/net45/Newtonsoft.Json.dll": {} + } + }, "System.AppContext/4.0.0": { "dependencies": { "System.Runtime": "[4.0.0, )" @@ -364,6 +372,31 @@ "runtimes/aot/lib/netcore50/System.Xml.Serialization.dll" ] }, + "Newtonsoft.Json/6.0.4": { + "sha512": "FyQLmEpjsCrEP+znauLDGAi+h6i9YnaMkITlfIoiM4RYyX3nki306bTHsr/0okiIvIc7BJhQTbOAIZVocccFUw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/netcore45/Newtonsoft.Json.dll", + "lib/netcore45/Newtonsoft.Json.xml", + "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll", + "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.xml", + "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll", + "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml", + "Newtonsoft.Json.nuspec", + "package/services/metadata/core-properties/87a0a4e28d50417ea282e20f81bc6477.psmdcp", + "tools/install.ps1" + ] + }, "System.AppContext/4.0.0": { "sha512": "gUoYgAWDC3+xhKeU5KSLbYDhTdBYk9GssrMSCcWUADzOglW+s0AmwVhOUGt2tL5xUl7ZXoYTPdA88zCgKrlG0A==", "type": "Package", @@ -1151,6 +1184,7 @@ "projectFileDependencyGroups": { "": [ "Microsoft.Composition >= 1.0.27", + "Newtonsoft.Json >= 6.0.4", "System.Collections >= 4.0.10", "System.Diagnostics.Debug >= 4.0.10", "System.Globalization >= 4.0.10", diff --git a/src/Interactive/Host/project.lock.json b/src/Interactive/Host/project.lock.json index 92189a09eca0c..ba6830a3ebebb 100644 --- a/src/Interactive/Host/project.lock.json +++ b/src/Interactive/Host/project.lock.json @@ -27,6 +27,14 @@ "lib/net45/_._": {} } }, + "Newtonsoft.Json/6.0.4": { + "compile": { + "lib/net45/Newtonsoft.Json.dll": {} + }, + "runtime": { + "lib/net45/Newtonsoft.Json.dll": {} + } + }, "System.AppContext/4.0.0": { "dependencies": { "System.Runtime": "[4.0.0, )" @@ -285,6 +293,14 @@ "lib/net45/_._": {} } }, + "Newtonsoft.Json/6.0.4": { + "compile": { + "lib/net45/Newtonsoft.Json.dll": {} + }, + "runtime": { + "lib/net45/Newtonsoft.Json.dll": {} + } + }, "System.AppContext/4.0.0": { "dependencies": { "System.Runtime": "[4.0.0, )" @@ -622,6 +638,31 @@ "runtimes/aot/lib/netcore50/System.Xml.Serialization.dll" ] }, + "Newtonsoft.Json/6.0.4": { + "sha512": "FyQLmEpjsCrEP+znauLDGAi+h6i9YnaMkITlfIoiM4RYyX3nki306bTHsr/0okiIvIc7BJhQTbOAIZVocccFUw==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/netcore45/Newtonsoft.Json.dll", + "lib/netcore45/Newtonsoft.Json.xml", + "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll", + "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.xml", + "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll", + "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml", + "Newtonsoft.Json.nuspec", + "package/services/metadata/core-properties/87a0a4e28d50417ea282e20f81bc6477.psmdcp", + "tools/install.ps1" + ] + }, "System.AppContext/4.0.0": { "sha512": "gUoYgAWDC3+xhKeU5KSLbYDhTdBYk9GssrMSCcWUADzOglW+s0AmwVhOUGt2tL5xUl7ZXoYTPdA88zCgKrlG0A==", "type": "Package", diff --git a/src/Interactive/HostTest/NuGetPackageResolverTests.cs b/src/Interactive/HostTest/NuGetPackageResolverTests.cs index 4277258666b1e..feca034d1debc 100644 --- a/src/Interactive/HostTest/NuGetPackageResolverTests.cs +++ b/src/Interactive/HostTest/NuGetPackageResolverTests.cs @@ -1,6 +1,6 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using Microsoft.CodeAnalysis.Editor.Interactive; +using Microsoft.CodeAnalysis.Interactive; using Microsoft.CodeAnalysis.Test.Utilities; using Roslyn.Test.Utilities; using Roslyn.Utilities; @@ -13,6 +13,9 @@ namespace Microsoft.CodeAnalysis.UnitTests.Interactive { public class NuGetPackageResolverTests : TestBase { + /// + /// Valid reference. + /// [ConditionalFact(typeof(WindowsOnly))] public void ResolveReference() { @@ -25,6 +28,15 @@ public void ResolveReference() ""net46"": {} } }"; + var expectedConfig = +@" + + + + + + +"; var actualProjectLockJson = @"{ ""locked"": false, @@ -48,6 +60,11 @@ public void ResolveReference() ""System.Runtime"": """" }, }, + ""System.Runtime/4.0.0"": { + ""runtime"": { + ""ref/dotnet/_._"": {} + } + }, ""System.IO/4.0.10"": { ""dependencies"": {}, ""runtime"": { @@ -65,23 +82,32 @@ public void ResolveReference() packagesDirectory, startInfo => { + // Verify arguments. var arguments = startInfo.Arguments.Split('"'); - Assert.Equal(5, arguments.Length); + Assert.Equal(7, arguments.Length); Assert.Equal("restore ", arguments[0]); Assert.Equal("project.json", PathUtilities.GetFileName(arguments[1])); - Assert.Equal(" -PackagesDirectory ", arguments[2]); - Assert.Equal(packagesDirectory, arguments[3]); - Assert.Equal("", arguments[4]); + Assert.Equal(" -ConfigFile ", arguments[2]); + Assert.Equal("nuget.config", PathUtilities.GetFileName(arguments[3])); + Assert.Equal(" -PackagesDirectory ", arguments[4]); + Assert.Equal(packagesDirectory, arguments[5]); + Assert.Equal("", arguments[6]); + // Verify project.json contents. var projectJsonPath = arguments[1]; var actualProjectJson = File.ReadAllText(projectJsonPath); Assert.Equal(expectedProjectJson, actualProjectJson); + // Verify config file contents. + var configPath = arguments[3]; + var actualConfig = File.ReadAllText(configPath); + Assert.Equal(expectedConfig, actualConfig); + // Generate project.lock.json. var projectLockJsonPath = PathUtilities.CombineAbsoluteAndRelativePaths(PathUtilities.GetDirectoryName(projectJsonPath), "project.lock.json"); using (var writer = new StreamWriter(projectLockJsonPath)) { writer.Write(actualProjectLockJson); } }); - var actualPaths = resolver.ResolveNuGetPackage("A.B.C/1.2"); + var actualPaths = resolver.ResolveNuGetPackage("A.B.C", "1.2"); AssertEx.SetEqual(actualPaths, PathUtilities.CombineAbsoluteAndRelativePaths(packagesDirectory, PathUtilities.CombinePossiblyRelativeAndRelativePaths("System.Collections/4.0.10", "ref/dotnet/System.Collections.dll")), PathUtilities.CombineAbsoluteAndRelativePaths(packagesDirectory, PathUtilities.CombinePossiblyRelativeAndRelativePaths("System.IO/4.0.10", "ref/dotnet/System.Runtime.dll")), @@ -89,24 +115,34 @@ public void ResolveReference() } } + /// + /// Expected exception thrown during restore. + /// [ConditionalFact(typeof(WindowsOnly))] public void HandledException() { using (var directory = new DisposableDirectory(Temp)) { - var resolver = new NuGetPackageResolverImpl(directory.Path, startInfo => { throw new IOException(); }); - var actualPaths = resolver.ResolveNuGetPackage("A.B.C/1.2"); + bool restored = false; + var resolver = new NuGetPackageResolverImpl(directory.Path, startInfo => { restored = true; throw new IOException(); }); + var actualPaths = resolver.ResolveNuGetPackage("A.B.C", "1.2"); Assert.True(actualPaths.IsDefault); + Assert.True(restored); } } + /// + /// Unexpected exception thrown during restore. + /// [ConditionalFact(typeof(WindowsOnly))] public void UnhandledException() { using (var directory = new DisposableDirectory(Temp)) { - var resolver = new NuGetPackageResolverImpl(directory.Path, startInfo => { throw new InvalidOperationException(); }); - Assert.Throws(() => resolver.ResolveNuGetPackage("A.B.C/1.2")); + bool restored = false; + var resolver = new NuGetPackageResolverImpl(directory.Path, startInfo => { restored = true; throw new InvalidOperationException(); }); + Assert.Throws(() => resolver.ResolveNuGetPackage("A.B.C", "1.2")); + Assert.True(restored); } } @@ -114,24 +150,31 @@ public void UnhandledException() public void ParsePackageNameAndVersion() { ParseInvalidPackageReference("A"); - ParseInvalidPackageReference("A.B"); - ParseInvalidPackageReference("A/"); - ParseInvalidPackageReference("A//1.0"); - ParseInvalidPackageReference("/1.0.0"); - ParseInvalidPackageReference("A/B/2.0.0"); + ParseInvalidPackageReference("A/1"); + ParseInvalidPackageReference("nuget"); + ParseInvalidPackageReference("nuget:"); + ParseInvalidPackageReference("NUGET:"); + ParseInvalidPackageReference("nugetA/1"); + ParseInvalidPackageReference("nuget:A"); + ParseInvalidPackageReference("nuget:A.B"); + ParseInvalidPackageReference("nuget:A/"); + ParseInvalidPackageReference("nuget:A//1.0"); + ParseInvalidPackageReference("nuget:/1.0.0"); + ParseInvalidPackageReference("nuget:A/B/2.0.0"); - ParseValidPackageReference("A/1", "A", "1"); - ParseValidPackageReference("A.B/1.0.0", "A.B", "1.0.0"); - ParseValidPackageReference("A/B.C", "A", "B.C"); - ParseValidPackageReference(" /1", " ", "1"); - ParseValidPackageReference("A\t/\n1.0\r ", "A\t", "\n1.0\r "); + ParseValidPackageReference("nuget::nuget/1", ":nuget", "1"); + ParseValidPackageReference("nuget:A/1", "A", "1"); + ParseValidPackageReference("nuget:A.B/1.0.0", "A.B", "1.0.0"); + ParseValidPackageReference("nuget:A/B.C", "A", "B.C"); + ParseValidPackageReference("nuget: /1", " ", "1"); + ParseValidPackageReference("nuget:A\t/\n1.0\r ", "A\t", "\n1.0\r "); } private static void ParseValidPackageReference(string reference, string expectedName, string expectedVersion) { string name; string version; - Assert.True(NuGetPackageResolverImpl.ParsePackageReference(reference, out name, out version)); + Assert.True(NuGetPackageResolverImpl.TryParsePackageReference(reference, out name, out version)); Assert.Equal(expectedName, name); Assert.Equal(expectedVersion, version); } @@ -140,7 +183,7 @@ private static void ParseInvalidPackageReference(string reference) { string name; string version; - Assert.False(NuGetPackageResolverImpl.ParsePackageReference(reference, out name, out version)); + Assert.False(NuGetPackageResolverImpl.TryParsePackageReference(reference, out name, out version)); Assert.Null(name); Assert.Null(version); } diff --git a/src/Scripting/Core/Resolvers/NuGetPackageResolver.cs b/src/Scripting/Core/Resolvers/NuGetPackageResolver.cs index 94c2ebd45f4a5..1f33651255424 100644 --- a/src/Scripting/Core/Resolvers/NuGetPackageResolver.cs +++ b/src/Scripting/Core/Resolvers/NuGetPackageResolver.cs @@ -1,11 +1,36 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.Collections.Immutable; namespace Microsoft.CodeAnalysis.Scripting.Hosting { internal abstract class NuGetPackageResolver { - internal abstract ImmutableArray ResolveNuGetPackage(string reference); + private const string ReferencePrefix = "nuget:"; + + /// + /// Syntax is "nuget:id/version". + /// + internal static bool TryParsePackageReference(string reference, out string name, out string version) + { + if (reference.StartsWith(ReferencePrefix, StringComparison.Ordinal)) + { + var parts = reference.Substring(ReferencePrefix.Length).Split('/'); + if ((parts.Length == 2) && + (parts[0].Length > 0) && + (parts[1].Length > 0)) + { + name = parts[0]; + version = parts[1]; + return true; + } + } + name = null; + version = null; + return false; + } + + internal abstract ImmutableArray ResolveNuGetPackage(string packageName, string packageVersion); } } diff --git a/src/Scripting/Core/Resolvers/RuntimeMetadataReferenceResolver.cs b/src/Scripting/Core/Resolvers/RuntimeMetadataReferenceResolver.cs index 47b3db50b9821..8a7c45c27da66 100644 --- a/src/Scripting/Core/Resolvers/RuntimeMetadataReferenceResolver.cs +++ b/src/Scripting/Core/Resolvers/RuntimeMetadataReferenceResolver.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Immutable; -using System.IO; +using System.Diagnostics; using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.Scripting.Hosting @@ -15,7 +15,7 @@ namespace Microsoft.CodeAnalysis.Scripting.Hosting /// internal sealed class RuntimeMetadataReferenceResolver : MetadataReferenceResolver, IEquatable { - public static readonly RuntimeMetadataReferenceResolver Default = new RuntimeMetadataReferenceResolver(); + public static readonly RuntimeMetadataReferenceResolver Default = new RuntimeMetadataReferenceResolver(ImmutableArray.Empty, baseDirectory: null); internal readonly RelativePathResolver PathResolver; internal readonly NuGetPackageResolver PackageResolver; @@ -23,8 +23,8 @@ internal sealed class RuntimeMetadataReferenceResolver : MetadataReferenceResolv private readonly Func _fileReferenceProvider; internal RuntimeMetadataReferenceResolver( - ImmutableArray searchPaths = default(ImmutableArray), - string baseDirectory = null) + ImmutableArray searchPaths, + string baseDirectory) : this(new RelativePathResolver(searchPaths.NullToEmpty(), baseDirectory), null, GacFileResolver.Default) @@ -46,27 +46,29 @@ internal RuntimeMetadataReferenceResolver( public override ImmutableArray ResolveReference(string reference, string baseFilePath, MetadataReferenceProperties properties) { - if (PathResolver != null && PathUtilities.IsFilePath(reference)) + string packageName; + string packageVersion; + if (NuGetPackageResolver.TryParsePackageReference(reference, out packageName, out packageVersion)) { - var resolvedPath = PathResolver.ResolvePath(reference, baseFilePath); - if (resolvedPath == null) + if (PackageResolver != null) { - return ImmutableArray.Empty; + var paths = PackageResolver.ResolveNuGetPackage(packageName, packageVersion); + Debug.Assert(!paths.IsDefault); + return paths.SelectAsArray(path => _fileReferenceProvider(path, properties)); } - - return ImmutableArray.Create(_fileReferenceProvider(resolvedPath, properties)); } - - if (PackageResolver != null) + else if (PathUtilities.IsFilePath(reference)) { - var paths = PackageResolver.ResolveNuGetPackage(reference); - if (!paths.IsDefaultOrEmpty) + if (PathResolver != null) { - return paths.SelectAsArray(path => _fileReferenceProvider(path, properties)); + var resolvedPath = PathResolver.ResolvePath(reference, baseFilePath); + if (resolvedPath != null) + { + return ImmutableArray.Create(_fileReferenceProvider(resolvedPath, properties)); + } } } - - if (GacFileResolver != null) + else if (GacFileResolver != null) { var path = GacFileResolver.Resolve(reference); if (path != null) @@ -74,7 +76,6 @@ public override ImmutableArray ResolveReference(str return ImmutableArray.Create(_fileReferenceProvider(path, properties)); } } - return ImmutableArray.Empty; } diff --git a/src/Scripting/Core/ScriptOptions.cs b/src/Scripting/Core/ScriptOptions.cs index b7af60d7de230..88c4614fe76c1 100644 --- a/src/Scripting/Core/ScriptOptions.cs +++ b/src/Scripting/Core/ScriptOptions.cs @@ -340,7 +340,9 @@ private static ImmutableArray CheckImmutableArray(ImmutableArray items, private static ImmutableArray ToImmutableArrayChecked(IEnumerable items, string parameterName) where T : class { - return AddRangeAndFreeChecked(ArrayBuilder.GetInstance(), items, parameterName); + var builder = ArrayBuilder.GetInstance(); + AddRangeChecked(builder, items, parameterName); + return builder.ToImmutableAndFree(); } private static ImmutableArray ConcatChecked(ImmutableArray existing, IEnumerable items, string parameterName) @@ -348,10 +350,11 @@ private static ImmutableArray ConcatChecked(ImmutableArray existing, IE { var builder = ArrayBuilder.GetInstance(); builder.AddRange(existing); - return AddRangeAndFreeChecked(builder, items, parameterName); + AddRangeChecked(builder, items, parameterName); + return builder.ToImmutableAndFree(); } - private static ImmutableArray AddRangeAndFreeChecked(ArrayBuilder builder, IEnumerable items, string parameterName) + private static void AddRangeChecked(ArrayBuilder builder, IEnumerable items, string parameterName) where T : class { RequireNonNull(items, parameterName); @@ -360,14 +363,11 @@ private static ImmutableArray AddRangeAndFreeChecked(ArrayBuilder build { if (item == null) { - builder.Free(); throw new ArgumentNullException($"{parameterName}[{builder.Count}]"); } builder.Add(item); } - - return builder.ToImmutableAndFree(); } private static IEnumerable SelectChecked(IEnumerable items, string parameterName, Func selector) diff --git a/src/Scripting/CoreTest/RuntimeMetadataReferenceResolverTests.cs b/src/Scripting/CoreTest/RuntimeMetadataReferenceResolverTests.cs new file mode 100644 index 0000000000000..a6007fec5fa25 --- /dev/null +++ b/src/Scripting/CoreTest/RuntimeMetadataReferenceResolverTests.cs @@ -0,0 +1,78 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.CodeAnalysis.Scripting.Hosting; +using Microsoft.CodeAnalysis.Test.Utilities; +using Roslyn.Test.Utilities; +using System.Collections.Immutable; +using Xunit; + +namespace Microsoft.CodeAnalysis.UnitTests.Interactive +{ + public class RuntimeMetadataReferenceResolverTests : TestBase + { + [Fact] + public void Resolve() + { + using (var directory = new DisposableDirectory(Temp)) + { + var assembly1 = directory.CreateFile("_1.dll"); + var assembly2 = directory.CreateFile("_2.dll"); + + // With NuGetPackageResolver. + var resolver = new RuntimeMetadataReferenceResolver( + new RelativePathResolver(ImmutableArray.Create(directory.Path), baseDirectory: directory.Path), + new PackageResolver(ImmutableDictionary>.Empty.Add("nuget:N/1.0", ImmutableArray.Create(assembly1.Path, assembly2.Path))), + gacFileResolver: null); + // Recognized NuGet reference. + var actualReferences = resolver.ResolveReference("nuget:N/1.0", baseFilePath: null, properties: MetadataReferenceProperties.Assembly); + AssertEx.SetEqual(actualReferences.SelectAsArray(r => r.FilePath), assembly1.Path, assembly2.Path); + // Unrecognized NuGet reference. + actualReferences = resolver.ResolveReference("nuget:N/2.0", baseFilePath: null, properties: MetadataReferenceProperties.Assembly); + Assert.True(actualReferences.IsEmpty); + // Recognized file path. + actualReferences = resolver.ResolveReference("_2.dll", baseFilePath: null, properties: MetadataReferenceProperties.Assembly); + AssertEx.SetEqual(actualReferences.SelectAsArray(r => r.FilePath), assembly2.Path); + // Unrecognized file path. + actualReferences = resolver.ResolveReference("_3.dll", baseFilePath: null, properties: MetadataReferenceProperties.Assembly); + Assert.True(actualReferences.IsEmpty); + + // Without NuGetPackageResolver. + resolver = new RuntimeMetadataReferenceResolver( + new RelativePathResolver(ImmutableArray.Create(directory.Path), baseDirectory: directory.Path), + packageResolver: null, + gacFileResolver: null); + // Unrecognized NuGet reference. + actualReferences = resolver.ResolveReference("nuget:N/1.0", baseFilePath: null, properties: MetadataReferenceProperties.Assembly); + Assert.True(actualReferences.IsEmpty); + // Recognized file path. + actualReferences = resolver.ResolveReference("_2.dll", baseFilePath: null, properties: MetadataReferenceProperties.Assembly); + AssertEx.SetEqual(actualReferences.SelectAsArray(r => r.FilePath), assembly2.Path); + // Unrecognized file path. + actualReferences = resolver.ResolveReference("_3.dll", baseFilePath: null, properties: MetadataReferenceProperties.Assembly); + Assert.True(actualReferences.IsEmpty); + } + } + + private sealed class PackageResolver : NuGetPackageResolver + { + private const string Prefix = "nuget:"; + private readonly IImmutableDictionary> _map; + + internal PackageResolver(IImmutableDictionary> map) + { + _map = map; + } + + internal override ImmutableArray ResolveNuGetPackage(string packageName, string packageVersion) + { + var reference = $"{Prefix}{packageName}/{packageVersion}"; + ImmutableArray paths; + if (_map.TryGetValue(reference, out paths)) + { + return paths; + } + return ImmutableArray.Empty; + } + } + } +} diff --git a/src/Scripting/CoreTest/ScriptingTest.csproj b/src/Scripting/CoreTest/ScriptingTest.csproj index 548f2f1569ac4..31547e8ffd217 100644 --- a/src/Scripting/CoreTest/ScriptingTest.csproj +++ b/src/Scripting/CoreTest/ScriptingTest.csproj @@ -59,6 +59,7 @@ + @@ -79,4 +80,4 @@ - + \ No newline at end of file From 1179a33565eb0ec7afc580641a860aa56c43cf26 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Wed, 23 Sep 2015 10:53:53 +0800 Subject: [PATCH 29/83] Fix leading trivia test and add tenery operator cases --- .../Diagnostics/Async/AddAwaitTests.cs | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs index adfcfe9526cf0..afb39791d9cb8 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs @@ -48,6 +48,113 @@ async Task Test2() Test(initial, expected); } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] + public void BadAsyncReturnOperand_WithLeadingTrivia1() + { + var initial = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() + { + return 3; + } + + async Task Test2() + { + return + // Useful comment + [|Test()|]; + } +}"; + + var expected = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() + { + return 3; + } + + async Task Test2() + { + return + // Useful comment + await Test(); + } +}"; + Test(initial, expected); + } + + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] + public void BadAsyncReturnOperand_WithTrailingTrivia1() + { + var initial = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() => 3; + + async Task Test2() + {[| + return true ? Test() /* true */ : Test() /* false */; + |]} +}"; + + var expected = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() => 3; + + async Task Test2() + { + return await (true ? Test() /* true */ : Test() /* false */); + } +}"; + Test(initial, expected); + } + + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] + public void BadAsyncReturnOperand_WithTrailingTrivia2() + { + var initial = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() => 3; + + async Task Test2() + {[| + return true ? Test() // aaa + : Test() // bbb + ; + |]} +}"; + + var expected = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() => 3; + + async Task Test2() + { + return await (true ? Test() // aaa + : Test() // bbb +); + } +}"; + Test(initial, expected); + } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] public void TaskNotAwaited() { From e9137a041e908cf09addb50fbc21ef731990ee81 Mon Sep 17 00:00:00 2001 From: Gen Lu Date: Tue, 22 Sep 2015 22:55:56 -0700 Subject: [PATCH 30/83] Add unittests --- .../Editor/InteractiveWindow.UIThreadOnly.cs | 14 +- .../EditorTest/InteractiveWindowTests.cs | 461 ++++++++++++++++++ .../EditorTest/TestInteractiveEngine.cs | 2 +- 3 files changed, 474 insertions(+), 3 deletions(-) diff --git a/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs b/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs index 37cc2d023bb01..024220d5385a6 100644 --- a/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs +++ b/src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs @@ -2164,8 +2164,18 @@ private bool IsStreamSelectionInEditableBuffer(ITextSelection selection) { Debug.Assert(selection.Mode == TextSelectionMode.Stream); - return MapToEditableBuffer(selection.AnchorPoint.Position) != null || - MapToEditableBuffer(selection.ActivePoint.Position) != null; + var editableBuffer = (ReadingStandardInput) ? StandardInputBuffer : CurrentLanguageBuffer; + var selectedSpans = selection.SelectedSpans; + + foreach (var selectedSpan in selectedSpans) + { + var spans = TextView.BufferGraph.MapDownToBuffer(selectedSpan, SpanTrackingMode.EdgeInclusive, editableBuffer); + if (spans.Count > 0) + { + return true; + } + } + return false; } private bool ReduceBoxSelectionToEditableBox(bool isDelete = true) diff --git a/src/InteractiveWindow/EditorTest/InteractiveWindowTests.cs b/src/InteractiveWindow/EditorTest/InteractiveWindowTests.cs index f244befcbe12d..c06f48cc54c3b 100644 --- a/src/InteractiveWindow/EditorTest/InteractiveWindowTests.cs +++ b/src/InteractiveWindow/EditorTest/InteractiveWindowTests.cs @@ -756,6 +756,467 @@ public void SelectAllInHeader() Assert.Equal(new Span(0, fullText.Length), Window.TextView.Selection.SelectedSpans.Single().Span); } + [Fact] + public void DeleteWithOutSelectionInReadOnlyArea() + { + Submit( +@"1", +@"1 +"); + Window.InsertCode("2"); + + var caret = Window.TextView.Caret; + + // with empty selection, Delete() only handles caret movement, + // so we can only test caret location. + + // Delete() with caret in readonly area, no-op + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + AssertCaretVirtualPosition(1, 1); + + Task.Run(() => Window.Operations.Delete()).PumpingWait(); + AssertCaretVirtualPosition(1, 1); + + // Delete() with caret in active prompt, move caret to + // closest editable buffer + caret.MoveToNextCaretPosition(); + AssertCaretVirtualPosition(2, 0); + Task.Run(() => Window.Operations.Delete()).PumpingWait(); + AssertCaretVirtualPosition(2, 2); + } + + [Fact] + public void DeleteWithSelectionInReadonlyArea() + { + Submit( +@"1", +@"1 +"); + Window.InsertCode("23"); + + var caret = Window.TextView.Caret; + var selection = Window.TextView.Selection; + + + // Delete() with selection in readonly area, no-op + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + AssertCaretVirtualPosition(1, 1); + + Window.Operations.SelectAll(); + + Task.Run(() => Window.Operations.Delete()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 23", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + + // Delete() with selection in active prompt, no-op + selection.Clear(); + var start = caret.MoveToNextCaretPosition().VirtualBufferPosition; + caret.MoveToNextCaretPosition(); + var end = caret.MoveToNextCaretPosition().VirtualBufferPosition; + AssertCaretVirtualPosition(2, 2); + + selection.Select(start, end); + + Task.Run(() => Window.Operations.Delete()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 23", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + + // Delete() with selection overlaps with editable buffer, + // delete editable content and move caret to closest editable location + selection.Clear(); + caret.MoveToPreviousCaretPosition(); + start = caret.MoveToPreviousCaretPosition().VirtualBufferPosition; + caret.MoveToNextCaretPosition(); + caret.MoveToNextCaretPosition(); + end = caret.MoveToNextCaretPosition().VirtualBufferPosition; + AssertCaretVirtualPosition(2, 3); + + selection.Select(start, end); + + Task.Run(() => Window.Operations.Delete()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 3", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + AssertCaretVirtualPosition(2, 2); + } + + [Fact] + public void BackspaceWithOutSelectionInReadOnlyArea() + { + Submit( +@"1", +@"1 +"); + Window.InsertCode("int x"); + Window.Operations.BreakLine(); + Window.InsertCode(";"); + + var caret = Window.TextView.Caret; + + // Backspace() with caret in readonly area, no-op + Window.Operations.Home(false); + Window.Operations.Home(false); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + Window.Operations.Home(false); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + AssertCaretVirtualPosition(1, 1); + + Task.Run(() => Window.Operations.Backspace()).PumpingWait(); + AssertCaretVirtualPosition(1, 1); + Assert.Equal("> 1\r\n1\r\n> int x\r\n> ;", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + + // Backspace() with caret in 2nd active prompt, move caret to + // closest editable buffer then delete prvious characer (breakline) + caret.MoveToNextCaretPosition(); + Window.Operations.End(false); + caret.MoveToNextCaretPosition(); + caret.MoveToNextCaretPosition(); + AssertCaretVirtualPosition(3, 1); + + Task.Run(() => Window.Operations.Backspace()).PumpingWait(); + AssertCaretVirtualPosition(2, 7); + Assert.Equal("> 1\r\n1\r\n> int x;", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + } + + [Fact] + public void BackspaceWithSelectionInReadonlyArea() + { + Submit( +@"1", +@"1 +"); + Window.InsertCode("int x"); + Window.Operations.BreakLine(); + Window.InsertCode(";"); + + var caret = Window.TextView.Caret; + var selection = Window.TextView.Selection; + + + // Backspace() with selection in readonly area, no-op + Window.Operations.Home(false); + Window.Operations.Home(false); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + Window.Operations.Home(false); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + AssertCaretVirtualPosition(1, 1); + + Window.Operations.SelectAll(); + + Task.Run(() => Window.Operations.Backspace()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> int x\r\n> ;", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + + // Backspace() with selection in active prompt, no-op + selection.Clear(); + var start = caret.MoveToNextCaretPosition().VirtualBufferPosition; + caret.MoveToNextCaretPosition(); + var end = caret.MoveToNextCaretPosition().VirtualBufferPosition; + AssertCaretVirtualPosition(2, 2); + + selection.Select(start, end); + + Task.Run(() => Window.Operations.Backspace()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> int x\r\n> ;", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + + // Backspace() with selection overlaps with editable buffer + selection.Clear(); + Window.Operations.End(false); + start = caret.Position.VirtualBufferPosition; + caret.MoveToNextCaretPosition(); + caret.MoveToNextCaretPosition(); + end = caret.MoveToNextCaretPosition().VirtualBufferPosition; + AssertCaretVirtualPosition(3, 2); + + selection.Select(start, end); + + Task.Run(() => Window.Operations.Backspace()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> int x;", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + AssertCaretVirtualPosition(2, 7); + } + + [Fact] + public void ReturnWithOutSelectionInReadOnlyArea() + { + Submit( +@"1", +@"1 +"); + + var caret = Window.TextView.Caret; + + // Return() with caret in readonly area, no-op + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + AssertCaretVirtualPosition(1, 1); + + Task.Run(() => Window.Operations.Return()).PumpingWait(); + AssertCaretVirtualPosition(1, 1); + + // Return() with caret in active prompt, move caret to + // closest editable buffer first + caret.MoveToNextCaretPosition(); + AssertCaretVirtualPosition(2, 0); + + Task.Run(() => Window.Operations.Return()).PumpingWait(); + AssertCaretVirtualPosition(3, 2); + } + + [Fact] + public void ReturnWithSelectionInReadonlyArea() + { + Submit( +@"1", +@"1 +"); + Window.InsertCode("23"); + + var caret = Window.TextView.Caret; + var selection = Window.TextView.Selection; + + + // Return() with selection in readonly area, no-op + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + AssertCaretVirtualPosition(1, 1); + + Window.Operations.SelectAll(); + + Task.Run(() => Window.Operations.Return()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 23", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + + // Return() with selection in active prompt, no-op + selection.Clear(); + var start = caret.MoveToNextCaretPosition().VirtualBufferPosition; + caret.MoveToNextCaretPosition(); + var end = caret.MoveToNextCaretPosition().VirtualBufferPosition; + AssertCaretVirtualPosition(2, 2); + + selection.Select(start, end); + + Task.Run(() => Window.Operations.Return()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 23", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + + // Delete() with selection overlaps with editable buffer, + // delete editable content and move caret to closest editable location and insert a return + selection.Clear(); + caret.MoveToPreviousCaretPosition(); + start = caret.MoveToPreviousCaretPosition().VirtualBufferPosition; + caret.MoveToNextCaretPosition(); + caret.MoveToNextCaretPosition(); + end = caret.MoveToNextCaretPosition().VirtualBufferPosition; + AssertCaretVirtualPosition(2, 3); + + selection.Select(start, end); + + Task.Run(() => Window.Operations.Return()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> \r\n> 3", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + AssertCaretVirtualPosition(3, 2); + } + + [Fact] + public void CutWithOutSelectionInReadOnlyArea() + { + Submit( +@"1", +@"1 +"); + Window.InsertCode("2"); + + var caret = Window.TextView.Caret; + Clipboard.Clear(); + + // Cut() with caret in readonly area, no-op + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + AssertCaretVirtualPosition(1, 1); + + Task.Run(() => Window.Operations.Cut()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 2", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + AssertCaretVirtualPosition(1, 1); + + VerifyClipboardData(null); + + // Cut() with caret in active prompt + caret.MoveToNextCaretPosition(); + AssertCaretVirtualPosition(2, 0); + Task.Run(() => Window.Operations.Cut()).PumpingWait(); + + Assert.Equal("> 1\r\n1\r\n> ", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + AssertCaretVirtualPosition(2, 2); + VerifyClipboardData("2", expectedRtf: null); + } + + [Fact] + public void CutWithSelectionInReadonlyArea() + { + Submit( +@"1", +@"1 +"); + Window.InsertCode("23"); + + var caret = Window.TextView.Caret; + var selection = Window.TextView.Selection; + Clipboard.Clear(); + + + // Cut() with selection in readonly area, no-op + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + AssertCaretVirtualPosition(1, 1); + + Window.Operations.SelectAll(); + + Task.Run(() => Window.Operations.Cut()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 23", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + VerifyClipboardData(null); + + // Cut() with selection in active prompt, no-op + selection.Clear(); + var start = caret.MoveToNextCaretPosition().VirtualBufferPosition; + caret.MoveToNextCaretPosition(); + var end = caret.MoveToNextCaretPosition().VirtualBufferPosition; + AssertCaretVirtualPosition(2, 2); + + selection.Select(start, end); + + Task.Run(() => Window.Operations.Cut()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 23", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + VerifyClipboardData(null); + + // Cut() with selection overlaps with editable buffer, + // Cut editable content and move caret to closest editable location + selection.Clear(); + caret.MoveToPreviousCaretPosition(); + start = caret.MoveToPreviousCaretPosition().VirtualBufferPosition; + caret.MoveToNextCaretPosition(); + caret.MoveToNextCaretPosition(); + end = caret.MoveToNextCaretPosition().VirtualBufferPosition; + AssertCaretVirtualPosition(2, 3); + + selection.Select(start, end); + + Task.Run(() => Window.Operations.Cut()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 3", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + AssertCaretVirtualPosition(2, 2); + VerifyClipboardData("2", expectedRtf: null); + } + + [Fact] + public void PasteWithOutSelectionInReadOnlyArea() + { + Submit( +@"1", +@"1 +"); + Window.InsertCode("2"); + + var caret = Window.TextView.Caret; + + Clipboard.Clear(); + Window.Operations.Home(true); + Window.Operations.Copy(); + VerifyClipboardData("2", @"\ansi{\fonttbl{\f0 Consolas;}}{\colortbl;\red0\green0\blue0;\red255\green255\blue255;}\f0 \fs24 \cf1 \cb2 \highlight2 2"); + + // Paste() with caret in readonly area, no-op + Window.TextView.Selection.Clear(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + AssertCaretVirtualPosition(1, 1); + + Task.Run(() => Window.Operations.Paste()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 2", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + AssertCaretVirtualPosition(1, 1); + + // Paste() with caret in active prompt + caret.MoveToNextCaretPosition(); + AssertCaretVirtualPosition(2, 0); + Task.Run(() => Window.Operations.Paste()).PumpingWait(); + + Assert.Equal("> 1\r\n1\r\n> 22", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + AssertCaretVirtualPosition(2, 3); + } + + [Fact] + public void PasteWithSelectionInReadonlyArea() + { + Submit( +@"1", +@"1 +"); + Window.InsertCode("23"); + + var caret = Window.TextView.Caret; + var selection = Window.TextView.Selection; + + Clipboard.Clear(); + Window.Operations.Home(true); + Window.Operations.Copy(); + VerifyClipboardData("23", @"\ansi{\fonttbl{\f0 Consolas;}}{\colortbl;\red0\green0\blue0;\red255\green255\blue255;}\f0 \fs24 \cf1 \cb2 \highlight2 23"); + + + // Paste() with selection in readonly area, no-op + selection.Clear(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + caret.MoveToPreviousCaretPosition(); + AssertCaretVirtualPosition(1, 1); + + Window.Operations.SelectAll(); + + Task.Run(() => Window.Operations.Paste()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 23", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + + // Paste() with selection in active prompt, no-op + selection.Clear(); + var start = caret.MoveToNextCaretPosition().VirtualBufferPosition; + caret.MoveToNextCaretPosition(); + var end = caret.MoveToNextCaretPosition().VirtualBufferPosition; + AssertCaretVirtualPosition(2, 2); + + selection.Select(start, end); + + Task.Run(() => Window.Operations.Paste()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 23", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + + // Paste() with selection overlaps with editable buffer, + // Cut editable content, move caret to closest editable location and insert text + selection.Clear(); + caret.MoveToPreviousCaretPosition(); + start = caret.MoveToPreviousCaretPosition().VirtualBufferPosition; + caret.MoveToNextCaretPosition(); + caret.MoveToNextCaretPosition(); + end = caret.MoveToNextCaretPosition().VirtualBufferPosition; + AssertCaretVirtualPosition(2, 3); + + selection.Select(start, end); + + Task.Run(() => Window.Operations.Paste()).PumpingWait(); + Assert.Equal("> 1\r\n1\r\n> 233", Window.TextView.TextBuffer.CurrentSnapshot.GetText()); + AssertCaretVirtualPosition(2, 4); + } + private void Submit(string submission, string output) { Task.Run(() => Window.SubmitAsync(new[] { submission })).PumpingWait(); diff --git a/src/InteractiveWindow/EditorTest/TestInteractiveEngine.cs b/src/InteractiveWindow/EditorTest/TestInteractiveEngine.cs index 7c9e9873de879..835c7f0d2112d 100644 --- a/src/InteractiveWindow/EditorTest/TestInteractiveEngine.cs +++ b/src/InteractiveWindow/EditorTest/TestInteractiveEngine.cs @@ -57,7 +57,7 @@ public Task ExecuteCodeAsync(string text) public string FormatClipboard() { - return ""; + return null; } public void AbortExecution() From 8ae2c821371dd82f5e515051e28a88d0f9b9486c Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Wed, 23 Sep 2015 12:39:59 +0800 Subject: [PATCH 31/83] Refactor a little bit. --- .../Async/CSharpAddAwaitCodeFixProvider.cs | 13 +++++----- .../Extensions/ExpressionSyntaxExtensions.cs | 25 ++++++++----------- .../Extensions/ExpressionSyntaxExtensions.vb | 12 +++------ 3 files changed, 19 insertions(+), 31 deletions(-) diff --git a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs index df0059450b9ac..121d5980f4af8 100644 --- a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs +++ b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs @@ -50,10 +50,10 @@ protected override Task GetNewRoot( CancellationToken cancellationToken) { var expression = oldNode as ExpressionSyntax; - if (expression == null) - { + if (expression == null) + { return SpecializedTasks.Default(); - } + } switch (diagnostic.Id) { @@ -152,14 +152,13 @@ private static SyntaxNode ConvertToAwaitExpression(ExpressionSyntax expression) { var root = expression.Ancestors().Last(); if (RequiresParenthesis(expression, root)) - { + { expression = expression.Parenthesize(); } return SyntaxFactory.AwaitExpression(expression.WithoutTrivia()) - .WithTriviaFrom(expression) - .WithAdditionalAnnotations(Formatter.Annotation) - .WithAdditionalAnnotations(Simplifier.Annotation); + .WithTriviaFrom(expression) + .WithAdditionalAnnotations(Formatter.Annotation, Simplifier.Annotation); } private static bool RequiresParenthesis(ExpressionSyntax expression, SyntaxNode root) diff --git a/src/Workspaces/CSharp/Portable/Extensions/ExpressionSyntaxExtensions.cs b/src/Workspaces/CSharp/Portable/Extensions/ExpressionSyntaxExtensions.cs index a3f9705c18e0c..c0683fbefbea2 100644 --- a/src/Workspaces/CSharp/Portable/Extensions/ExpressionSyntaxExtensions.cs +++ b/src/Workspaces/CSharp/Portable/Extensions/ExpressionSyntaxExtensions.cs @@ -43,27 +43,22 @@ public static ExpressionSyntax WalkDownParentheses(this ExpressionSyntax express public static ExpressionSyntax Parenthesize(this ExpressionSyntax expression, bool includeElasticTrivia = true) { - var leadingTrivia = expression.GetLeadingTrivia(); - var trailingTrivia = expression.GetTrailingTrivia(); - expression = expression.WithoutLeadingTrivia() - .WithoutTrailingTrivia(); - if (includeElasticTrivia) { - return SyntaxFactory.ParenthesizedExpression(expression) - .WithLeadingTrivia(leadingTrivia) - .WithTrailingTrivia(trailingTrivia) - .WithAdditionalAnnotations(Simplifier.Annotation); + return SyntaxFactory.ParenthesizedExpression(expression.WithoutTrivia()) + .WithTriviaFrom(expression) + .WithAdditionalAnnotations(Simplifier.Annotation); } else { - return SyntaxFactory.ParenthesizedExpression( + return SyntaxFactory.ParenthesizedExpression + ( SyntaxFactory.Token(SyntaxTriviaList.Empty, SyntaxKind.OpenParenToken, SyntaxTriviaList.Empty), - expression, - SyntaxFactory.Token(SyntaxTriviaList.Empty, SyntaxKind.CloseParenToken, SyntaxTriviaList.Empty)) - .WithLeadingTrivia(leadingTrivia) - .WithTrailingTrivia(trailingTrivia) - .WithAdditionalAnnotations(Simplifier.Annotation); + expression.WithoutTrivia(), + SyntaxFactory.Token(SyntaxTriviaList.Empty, SyntaxKind.CloseParenToken, SyntaxTriviaList.Empty) + ) + .WithTriviaFrom(expression) + .WithAdditionalAnnotations(Simplifier.Annotation); } } diff --git a/src/Workspaces/VisualBasic/Portable/Extensions/ExpressionSyntaxExtensions.vb b/src/Workspaces/VisualBasic/Portable/Extensions/ExpressionSyntaxExtensions.vb index 88881aae3455a..636c7f8eb2973 100644 --- a/src/Workspaces/VisualBasic/Portable/Extensions/ExpressionSyntaxExtensions.vb +++ b/src/Workspaces/VisualBasic/Portable/Extensions/ExpressionSyntaxExtensions.vb @@ -52,15 +52,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions Public Function Parenthesize(expression As ExpressionSyntax) As ParenthesizedExpressionSyntax - Dim leadingTrivia = expression.GetLeadingTrivia() - Dim trailingTrivia = expression.GetTrailingTrivia() - - Dim strippedExpression = expression.WithoutLeadingTrivia().WithoutTrailingTrivia() - - Return SyntaxFactory.ParenthesizedExpression(strippedExpression) _ - .WithLeadingTrivia(leadingTrivia) _ - .WithTrailingTrivia(trailingTrivia) _ - .WithAdditionalAnnotations(Simplifier.Annotation) + Return SyntaxFactory.ParenthesizedExpression(expression.WithoutTrivia()) _ + .WithTriviaFrom(expression) _ + .WithAdditionalAnnotations(Simplifier.Annotation) End Function From af822eb6945d9f3b2cbfcd10ae564d5781819782 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Wed, 23 Sep 2015 16:17:30 +0800 Subject: [PATCH 32/83] Fix incorrectly passed cases. --- .../Diagnostics/Async/AddAwaitTests.cs | 18 +++++----- .../Diagnostics/Async/AddAwaitTests.vb | 33 +++++++++++++++---- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs index 909a385bb775d..93f49ce1c5ab2 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs @@ -86,7 +86,7 @@ async Task Test2() await Test(); } }"; - Test(initial, expected); + Test(initial, expected, compareTokens: false); } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] @@ -114,10 +114,10 @@ class Program async Task Test2() { - return await (true ? Test() /* true */ : Test() /* false */); + return await (true ? Test() /* true */ : Test()) /* false */; } }"; - Test(initial, expected); + Test(initial, expected, compareTokens: false); } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] @@ -148,11 +148,11 @@ class Program async Task Test2() { return await (true ? Test() // aaa - : Test() // bbb -); + : Test()) // bbb + ; } }"; - Test(initial, expected); + Test(initial, expected, compareTokens: false); } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] @@ -206,7 +206,7 @@ async void Test() await Task.Delay(3); } }"; - Test(initial, expected); + Test(initial, expected, compareTokens: false); } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] @@ -280,7 +280,7 @@ async void Test() await AwaitableFunction(); } }"; - Test(initial, expected); + Test(initial, expected, compareTokens: false); } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] @@ -319,7 +319,7 @@ async void Test() await AwaitableFunction(); } }"; - Test(initial, expected); + Test(initial, expected, compareTokens: false); } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] diff --git a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb index b827f2c3b3152..ac83be5f18342 100644 --- a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb @@ -19,10 +19,31 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Diagnostics.Async Public Sub TaskNotAwaited_WithLeadingTrivia() - Test( - NewLines("Imports System \n Imports System.Threading.Tasks \n Module Program \n Async Sub MySub() \n ' Useful comment \n [|Task.Delay(3)|] \n End Sub \n End Module"), - NewLines("Imports System \n Imports System.Threading.Tasks \n Module Program \n Async Sub MySub() \n ' Useful comment \n Await Task.Delay(3) \n End Sub \n End Module"), -) + Dim initial = + +Imports System +Imports System.Threading.Tasks + +Module Program + Async Sub M() + ' Useful comment + [|Task.Delay(3)|] + End Function +End Module + + Dim expected = + +Imports System +Imports System.Threading.Tasks + +Module Program + Async Sub M() + ' Useful comment + Await Task.Delay(3) + End Function +End Module + + Test(initial, expected, compareTokens:=False) End Sub @@ -145,7 +166,7 @@ Module Program End Module - Test(initial, expected) + Test(initial, expected, compareTokens:=True) End Sub @@ -219,7 +240,7 @@ Module Program End Module - Test(initial, expected) + Test(initial, expected, compareTokens:=True) End Sub From 341a1c78216fd3cc08d063d3f101fcbe63a986ca Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Wed, 23 Sep 2015 16:23:41 +0800 Subject: [PATCH 33/83] Fix typo --- .../VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb index ac83be5f18342..b6db824b89be8 100644 --- a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb @@ -28,7 +28,7 @@ Module Program Async Sub M() ' Useful comment [|Task.Delay(3)|] - End Function + End Sub End Module Dim expected = @@ -40,7 +40,7 @@ Module Program Async Sub M() ' Useful comment Await Task.Delay(3) - End Function + End Sub End Module Test(initial, expected, compareTokens:=False) From b7fee1dc96d56d6b42bf5367a2b8ce883874dcd1 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Wed, 23 Sep 2015 22:12:05 +0800 Subject: [PATCH 34/83] Just use Simplifier.Annotation within CS version of ConvertToAwaitExpression --- .../Async/CSharpAddAwaitCodeFixProvider.cs | 25 +------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs index 121d5980f4af8..ce72878ba3fde 100644 --- a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs +++ b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs @@ -81,8 +81,6 @@ protected override Task GetNewRoot( } } - - private static bool DoesExpressionReturnTask(ExpressionSyntax expression, SemanticModel semanticModel) { INamedTypeSymbol taskType = null; @@ -150,30 +148,9 @@ private static bool IsInAsyncFunction(ExpressionSyntax expression) private static SyntaxNode ConvertToAwaitExpression(ExpressionSyntax expression) { - var root = expression.Ancestors().Last(); - if (RequiresParenthesis(expression, root)) - { - expression = expression.Parenthesize(); - } - - return SyntaxFactory.AwaitExpression(expression.WithoutTrivia()) + return SyntaxFactory.AwaitExpression(expression.WithoutTrivia().Parenthesize()) .WithTriviaFrom(expression) .WithAdditionalAnnotations(Formatter.Annotation, Simplifier.Annotation); } - - private static bool RequiresParenthesis(ExpressionSyntax expression, SyntaxNode root) - { - var parenthesizedExpression = SyntaxFactory.AwaitExpression(SyntaxFactory.ParenthesizedExpression(expression)); - var newRoot = root.ReplaceNode(expression, parenthesizedExpression); - var newNode = newRoot.FindNode(expression.Span) - .DescendantNodesAndSelf(n => n.Kind() != SyntaxKind.ParenthesizedExpression) - .OfType().FirstOrDefault(); - if (newNode != null) - { - return !newNode.CanRemoveParentheses(); - } - - return false; - } } } From f57a025ffcd05645f30f5042c8e1fdff8818dc71 Mon Sep 17 00:00:00 2001 From: Ravi Chande Date: Wed, 23 Sep 2015 09:15:14 -0700 Subject: [PATCH 35/83] Remove an extra word. --- .../SmartIndent/AbstractIndentationService.AbstractIndenter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EditorFeatures/Core/Implementation/SmartIndent/AbstractIndentationService.AbstractIndenter.cs b/src/EditorFeatures/Core/Implementation/SmartIndent/AbstractIndentationService.AbstractIndenter.cs index a659d988be15d..7511af07e2c43 100644 --- a/src/EditorFeatures/Core/Implementation/SmartIndent/AbstractIndentationService.AbstractIndenter.cs +++ b/src/EditorFeatures/Core/Implementation/SmartIndent/AbstractIndentationService.AbstractIndenter.cs @@ -137,7 +137,7 @@ protected ITextSnapshotLine GetPreviousNonBlankOrPreprocessorLine() continue; } - // No preprocessors in the entire tree, so this line + // No preprocessors in the entire tree, so this // line definitely doesn't have one var root = Tree.GetRoot(CancellationToken); if (!root.ContainsDirectives) From 0c10bc2ef6d1ddcf6f1bce549f8fa2f2d9a057d5 Mon Sep 17 00:00:00 2001 From: Ravi Chande Date: Wed, 23 Sep 2015 09:16:14 -0700 Subject: [PATCH 36/83] Add OSS header --- .../Formatting/Indentation/SmartIndenterTests_Performance.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterTests_Performance.cs b/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterTests_Performance.cs index d7bbaa7a4202a..897af5bdfbc9f 100644 --- a/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterTests_Performance.cs +++ b/src/EditorFeatures/CSharpTest/Formatting/Indentation/SmartIndenterTests_Performance.cs @@ -1,4 +1,6 @@ -using System; +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; using System.Collections.Generic; using System.Linq; using System.Text; From e34e5dc1e24ffb1b7d4333b62c8aa3d7c0c5419b Mon Sep 17 00:00:00 2001 From: Charles Stoner Date: Wed, 23 Sep 2015 09:40:41 -0700 Subject: [PATCH 37/83] Misc. cleanup --- .../Features/Interactive/Core/NuGetPackageResolverImpl.cs | 2 +- src/Interactive/HostTest/NuGetPackageResolverTests.cs | 2 +- .../Core/Resolvers/RuntimeMetadataReferenceResolver.cs | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Interactive/Features/Interactive/Core/NuGetPackageResolverImpl.cs b/src/Interactive/Features/Interactive/Core/NuGetPackageResolverImpl.cs index c87c1d5669acc..805e9c7cc267b 100644 --- a/src/Interactive/Features/Interactive/Core/NuGetPackageResolverImpl.cs +++ b/src/Interactive/Features/Interactive/Core/NuGetPackageResolverImpl.cs @@ -87,7 +87,7 @@ internal override ImmutableArray ResolveNuGetPackage(string packageName, catch (UnauthorizedAccessException) { } - return default(ImmutableArray); + return ImmutableArray.Empty; } /// diff --git a/src/Interactive/HostTest/NuGetPackageResolverTests.cs b/src/Interactive/HostTest/NuGetPackageResolverTests.cs index feca034d1debc..2fc46df9c1578 100644 --- a/src/Interactive/HostTest/NuGetPackageResolverTests.cs +++ b/src/Interactive/HostTest/NuGetPackageResolverTests.cs @@ -126,7 +126,7 @@ public void HandledException() bool restored = false; var resolver = new NuGetPackageResolverImpl(directory.Path, startInfo => { restored = true; throw new IOException(); }); var actualPaths = resolver.ResolveNuGetPackage("A.B.C", "1.2"); - Assert.True(actualPaths.IsDefault); + Assert.True(actualPaths.IsEmpty); Assert.True(restored); } } diff --git a/src/Scripting/Core/Resolvers/RuntimeMetadataReferenceResolver.cs b/src/Scripting/Core/Resolvers/RuntimeMetadataReferenceResolver.cs index 8a7c45c27da66..4edd31612e5d7 100644 --- a/src/Scripting/Core/Resolvers/RuntimeMetadataReferenceResolver.cs +++ b/src/Scripting/Core/Resolvers/RuntimeMetadataReferenceResolver.cs @@ -25,9 +25,7 @@ internal sealed class RuntimeMetadataReferenceResolver : MetadataReferenceResolv internal RuntimeMetadataReferenceResolver( ImmutableArray searchPaths, string baseDirectory) - : this(new RelativePathResolver(searchPaths.NullToEmpty(), baseDirectory), - null, - GacFileResolver.Default) + : this(new RelativePathResolver(searchPaths, baseDirectory), null, GacFileResolver.Default) { } From 690c9ab4c138b1c71bfad6377d4180857ee1c0a8 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Thu, 24 Sep 2015 00:54:28 +0800 Subject: [PATCH 38/83] Special casing for single line ternary expressions that without singleline comments in C# --- .../Diagnostics/Async/AddAwaitTests.cs | 136 +++++++++++++++++- .../Async/CSharpAddAwaitCodeFixProvider.cs | 11 ++ 2 files changed, 144 insertions(+), 3 deletions(-) diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs index 93f49ce1c5ab2..8602a60ec94d0 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs @@ -90,7 +90,7 @@ async Task Test2() } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] - public void BadAsyncReturnOperand_WithTrailingTrivia1() + public void BadAsyncReturnOperand_ConditionalExpressionWithTrailingTrivia_SingleLine() { var initial = @"using System.Threading.Tasks; @@ -114,14 +114,14 @@ class Program async Task Test2() { - return await (true ? Test() /* true */ : Test()) /* false */; + return await (true ? Test() /* true */ : Test() /* false */); } }"; Test(initial, expected, compareTokens: false); } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] - public void BadAsyncReturnOperand_WithTrailingTrivia2() + public void BadAsyncReturnOperand_ConditionalExpressionWithTrailingTrivia_Multiline() { var initial = @"using System.Threading.Tasks; @@ -155,6 +155,136 @@ async Task Test2() Test(initial, expected, compareTokens: false); } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] + public void BadAsyncReturnOperand_NullCoalescingExpressionWithTrailingTrivia_SingleLine() + { + var initial = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() => 3; + + async Task Test2() + {[| + return null /* 0 */ ?? Test() /* 1 */; + |]} +}"; + + var expected = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() => 3; + + async Task Test2() + { + return await (null /* 0 */ ?? Test() /* 1 */); + } +}"; + Test(initial, expected, compareTokens: false); + } + + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] + public void BadAsyncReturnOperand_NullCoalescingExpressionWithTrailingTrivia_Multiline() + { + var initial = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() => 3; + + async Task Test2() + {[| + return null // aaa + ?? Test() // bbb + ; + |]} +}"; + + var expected = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() => 3; + + async Task Test2() + { + return await (null // aaa + ?? Test()) // bbb + ; + } +}"; + Test(initial, expected, compareTokens: false); + } + + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] + public void BadAsyncReturnOperand_AsExpressionWithTrailingTrivia_SingleLine() + { + var initial = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test2() + {[| + return null /* 0 */ as Task /* 1 */; + |]} +}"; + + var expected = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() => 3; + + async Task Test2() + { + return await (null /* 0 */ as Task /* 1 */); + } +}"; + Test(initial, expected, compareTokens: false); + } + + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] + public void BadAsyncReturnOperand_AsExpressionWithTrailingTrivia_Multiline() + { + var initial = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() => 3; + + async Task Test2() + {[| + return null // aaa + as Task // bbb + ; + |]} +}"; + + var expected = +@"using System.Threading.Tasks; + +class Program +{ + async Task Test() => 3; + + async Task Test2() + { + return await (null // aaa + as Task) // bbb + ; + } +}"; + Test(initial, expected, compareTokens: false); + } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] public void TaskNotAwaited() { diff --git a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs index ce72878ba3fde..75688095d9c37 100644 --- a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs +++ b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs @@ -148,6 +148,17 @@ private static bool IsInAsyncFunction(ExpressionSyntax expression) private static SyntaxNode ConvertToAwaitExpression(ExpressionSyntax expression) { + if ((expression is BinaryExpressionSyntax || expression is ConditionalExpressionSyntax) && expression.HasTrailingTrivia) + { + var expWithTrailing = expression.WithoutLeadingTrivia(); + var span = expWithTrailing.GetLocation().GetLineSpan().Span; + if (span.Start.Line == span.End.Line && !expWithTrailing.DescendantTrivia().Any(trivia => trivia.IsKind(SyntaxKind.SingleLineCommentTrivia))) + { + return SyntaxFactory.AwaitExpression(SyntaxFactory.ParenthesizedExpression(expWithTrailing)) + .WithLeadingTrivia(expression.GetLeadingTrivia()) + .WithAdditionalAnnotations(Formatter.Annotation, Simplifier.Annotation); + } + } return SyntaxFactory.AwaitExpression(expression.WithoutTrivia().Parenthesize()) .WithTriviaFrom(expression) .WithAdditionalAnnotations(Formatter.Annotation, Simplifier.Annotation); From 0038e10c08d04887950a2f4d1a97d6454f2765b2 Mon Sep 17 00:00:00 2001 From: "Brett V. Forsgren" Date: Tue, 22 Sep 2015 16:08:47 -0700 Subject: [PATCH 39/83] update auto-property analyzer to explicitly check for exactly one setter statement --- .../UseAutoPropertyAnalyzer.cs | 26 +++++++++---------- .../UseAutoProperty/UseAutoPropertyTests.cs | 6 +++++ .../UseAutoPropertyAnalyzer.vb | 21 ++++++++------- .../UseAutoProperty/UseAutoPropertyTests.vb | 6 +++++ 4 files changed, 37 insertions(+), 22 deletions(-) diff --git a/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs b/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs index ea8bf804e3edf..46af67eeafe29 100644 --- a/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs +++ b/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs @@ -101,22 +101,22 @@ protected override ExpressionSyntax GetGetterExpression(IMethodSymbol getMethod, protected override ExpressionSyntax GetSetterExpression(IMethodSymbol setMethod, SemanticModel semanticModel, CancellationToken cancellationToken) { var setAccessor = setMethod.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken) as AccessorDeclarationSyntax; - - // Setter has to be of the form: - // - // set { field = value; } or - // set { this.field = value; } - var firstStatement = setAccessor?.Body.Statements.SingleOrDefault(); - if (firstStatement?.Kind() == SyntaxKind.ExpressionStatement) + var statements = setAccessor?.Body?.Statements; + if (statements?.Count == 1) { - var expressionStatement = (ExpressionStatementSyntax)firstStatement; - if (expressionStatement.Expression.Kind() == SyntaxKind.SimpleAssignmentExpression) + // this only works with a setter body with exactly one statement + var firstStatement = statements.Value[0]; + if (firstStatement?.Kind() == SyntaxKind.ExpressionStatement) { - var assignmentExpression = (AssignmentExpressionSyntax)expressionStatement.Expression; - if (assignmentExpression.Right.Kind() == SyntaxKind.IdentifierName && - ((IdentifierNameSyntax)assignmentExpression.Right).Identifier.ValueText == "value") + var expressionStatement = (ExpressionStatementSyntax)firstStatement; + if (expressionStatement.Expression.Kind() == SyntaxKind.SimpleAssignmentExpression) { - return CheckExpressionSyntactically(assignmentExpression.Left) ? assignmentExpression.Left : null; + var assignmentExpression = (AssignmentExpressionSyntax)expressionStatement.Expression; + if (assignmentExpression.Right.Kind() == SyntaxKind.IdentifierName && + ((IdentifierNameSyntax)assignmentExpression.Right).Identifier.ValueText == "value") + { + return CheckExpressionSyntactically(assignmentExpression.Left) ? assignmentExpression.Left : null; + } } } } diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/UseAutoProperty/UseAutoPropertyTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/UseAutoProperty/UseAutoPropertyTests.cs index 461b62171f796..7c80a2ac67f71 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/UseAutoProperty/UseAutoPropertyTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/UseAutoProperty/UseAutoPropertyTests.cs @@ -119,6 +119,12 @@ public void TestSetterWithMutipleStatements() @"class Class { [|int i|]; int P { set { ; i = value; } } }"); } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseAutoProperty)] + public void TestSetterWithMultipleStatementsAndGetterWithSingleStatement() + { + TestMissing(@"class Class { [|int i|]; int P { get { return i; } set { ; i = value; } } }"); + } + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseAutoProperty)] public void TestGetterAndSetterUseDifferentFields() { diff --git a/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb b/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb index a39414f00ade8..cb7b953ccbc4d 100644 --- a/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb +++ b/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb @@ -63,15 +63,18 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UseAutoProperty Protected Overrides Function GetSetterExpression(setMethod As IMethodSymbol, semanticModel As SemanticModel, cancellationToken As CancellationToken) As ExpressionSyntax Dim setAccessor = TryCast(TryCast(setMethod.DeclaringSyntaxReferences(0).GetSyntax(cancellationToken), AccessorStatementSyntax)?.Parent, AccessorBlockSyntax) - - Dim firstStatement = setAccessor?.Statements.SingleOrDefault() - If firstStatement?.Kind() = SyntaxKind.SimpleAssignmentStatement Then - Dim assignmentStatement = DirectCast(firstStatement, AssignmentStatementSyntax) - If assignmentStatement.Right.Kind() = SyntaxKind.IdentifierName Then - Dim identifier = DirectCast(assignmentStatement.Right, IdentifierNameSyntax) - Dim symbol = semanticModel.GetSymbolInfo(identifier).Symbol - If setMethod.Parameters.Contains(TryCast(symbol, IParameterSymbol)) Then - Return If(CheckExpressionSyntactically(assignmentStatement.Left), assignmentStatement.Left, Nothing) + Dim statements = setAccessor?.Statements + If statements?.Count = 1 Then + ' this only works with a setter body with exactly one statement + Dim firstStatement = statements.Value(0) + If firstStatement?.Kind() = SyntaxKind.SimpleAssignmentStatement Then + Dim assignmentStatement = DirectCast(firstStatement, AssignmentStatementSyntax) + If assignmentStatement.Right.Kind() = SyntaxKind.IdentifierName Then + Dim identifier = DirectCast(assignmentStatement.Right, IdentifierNameSyntax) + Dim symbol = semanticModel.GetSymbolInfo(identifier).Symbol + If setMethod.Parameters.Contains(TryCast(symbol, IParameterSymbol)) Then + Return If(CheckExpressionSyntactically(assignmentStatement.Left), assignmentStatement.Left, Nothing) + End If End If End If End If diff --git a/src/EditorFeatures/VisualBasicTest/Diagnostics/UseAutoProperty/UseAutoPropertyTests.vb b/src/EditorFeatures/VisualBasicTest/Diagnostics/UseAutoProperty/UseAutoPropertyTests.vb index df22724cb1cd2..e69175b1537a5 100644 --- a/src/EditorFeatures/VisualBasicTest/Diagnostics/UseAutoProperty/UseAutoPropertyTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Diagnostics/UseAutoProperty/UseAutoPropertyTests.vb @@ -106,6 +106,12 @@ NewLines("class Class1 \n [|dim i as integer|] \n property P as Integer \n get \ NewLines("class Class1 \n [|dim i as integer|] \n property P as Integer \n set \n Foo() \n i = value \n end set \n end property \n end class")) End Sub + + Public Sub TestSetterWithMutipleStatementsAndGetterWithSingleStatement() + TestMissing( +NewLines("class Class1 \n [|dim i as integer|] \n property P as Integer \n get \n Return i \n end get \n \n set \n Foo() \n i = value \n end set \n end property \n end class")) + End Sub + Public Sub TestGetterAndSetterUseDifferentFields() TestMissing( From da6559f1d266168ff6b55bbd64013d399d5ef865 Mon Sep 17 00:00:00 2001 From: "Brett V. Forsgren" Date: Wed, 23 Sep 2015 09:20:08 -0700 Subject: [PATCH 40/83] add more descriptive comments --- .../UseAutoPropertyAnalyzer.cs | 10 ++++++++-- .../UseAutoPropertyAnalyzer.vb | 20 +++++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs b/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs index 46af67eeafe29..b5cbece621bc7 100644 --- a/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs +++ b/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs @@ -82,11 +82,14 @@ private bool CheckExpressionSyntactically(ExpressionSyntax expression) protected override ExpressionSyntax GetGetterExpression(IMethodSymbol getMethod, CancellationToken cancellationToken) { + // Getter has to be of the form: + // + // get { return field; } or + // get { return this.field; } var getAccessor = getMethod.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken) as AccessorDeclarationSyntax; var statements = getAccessor?.Body?.Statements; if (statements?.Count == 1) { - // this only works with a getter body with exactly one statement var firstStatement = statements.Value[0]; if (firstStatement.Kind() == SyntaxKind.ReturnStatement) { @@ -100,11 +103,14 @@ protected override ExpressionSyntax GetGetterExpression(IMethodSymbol getMethod, protected override ExpressionSyntax GetSetterExpression(IMethodSymbol setMethod, SemanticModel semanticModel, CancellationToken cancellationToken) { + // Setter has to be of the form: + // + // set { field = value; } or + // set { this.field = value; } var setAccessor = setMethod.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken) as AccessorDeclarationSyntax; var statements = setAccessor?.Body?.Statements; if (statements?.Count == 1) { - // this only works with a setter body with exactly one statement var firstStatement = statements.Value[0]; if (firstStatement?.Kind() == SyntaxKind.ExpressionStatement) { diff --git a/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb b/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb index cb7b953ccbc4d..96913df521952 100644 --- a/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb +++ b/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb @@ -47,10 +47,18 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UseAutoProperty End Function Protected Overrides Function GetGetterExpression(getMethod As IMethodSymbol, cancellationToken As CancellationToken) As ExpressionSyntax + ' Getter has to be of the form: + ' + ' Get + ' Return field + ' End Get + ' or + ' Get + ' Return Me.field + ' End Get Dim accessor = TryCast(TryCast(getMethod.DeclaringSyntaxReferences(0).GetSyntax(cancellationToken), AccessorStatementSyntax)?.Parent, AccessorBlockSyntax) Dim statements = accessor?.Statements If statements?.Count = 1 Then - ' this only works with a getter body with exactly one statement Dim firstStatement = statements.Value(0) If firstStatement.Kind() = SyntaxKind.ReturnStatement Then Dim expr = DirectCast(firstStatement, ReturnStatementSyntax).Expression @@ -62,10 +70,18 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UseAutoProperty End Function Protected Overrides Function GetSetterExpression(setMethod As IMethodSymbol, semanticModel As SemanticModel, cancellationToken As CancellationToken) As ExpressionSyntax + ' Setter has to be of the form: + ' + ' Set(value) + ' field = value + ' End Set + ' or + ' Set(value) + ' Me.field = value + ' End Set Dim setAccessor = TryCast(TryCast(setMethod.DeclaringSyntaxReferences(0).GetSyntax(cancellationToken), AccessorStatementSyntax)?.Parent, AccessorBlockSyntax) Dim statements = setAccessor?.Statements If statements?.Count = 1 Then - ' this only works with a setter body with exactly one statement Dim firstStatement = statements.Value(0) If firstStatement?.Kind() = SyntaxKind.SimpleAssignmentStatement Then Dim assignmentStatement = DirectCast(firstStatement, AssignmentStatementSyntax) From 7996c8a25136d661404692230a2f31212be8208d Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Thu, 24 Sep 2015 01:02:27 +0800 Subject: [PATCH 41/83] Fix incorrectly passed test cases, hopfully. --- .../Diagnostics/Async/AddAwaitTests.cs | 80 ++++++++++++------- 1 file changed, 52 insertions(+), 28 deletions(-) diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs index 8602a60ec94d0..70a4cc1f534c2 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs @@ -15,7 +15,8 @@ public partial class AddAwaitTests : AbstractCSharpDiagnosticProviderBasedUserDi public void BadAsyncReturnOperand1() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -31,7 +32,8 @@ async Task Test2() }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -52,7 +54,8 @@ async Task Test2() public void BadAsyncReturnOperand_WithLeadingTrivia1() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -70,7 +73,8 @@ async Task Test2() }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -93,7 +97,8 @@ async Task Test2() public void BadAsyncReturnOperand_ConditionalExpressionWithTrailingTrivia_SingleLine() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -106,7 +111,8 @@ async Task Test2() }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -124,7 +130,8 @@ async Task Test2() public void BadAsyncReturnOperand_ConditionalExpressionWithTrailingTrivia_Multiline() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -139,7 +146,8 @@ async Task Test2() }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -159,7 +167,8 @@ async Task Test2() public void BadAsyncReturnOperand_NullCoalescingExpressionWithTrailingTrivia_SingleLine() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -172,7 +181,8 @@ async Task Test2() }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -190,7 +200,8 @@ async Task Test2() public void BadAsyncReturnOperand_NullCoalescingExpressionWithTrailingTrivia_Multiline() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -205,7 +216,8 @@ async Task Test2() }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -225,7 +237,8 @@ async Task Test2() public void BadAsyncReturnOperand_AsExpressionWithTrailingTrivia_SingleLine() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -236,12 +249,11 @@ async Task Test2() }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { - async Task Test() => 3; - async Task Test2() { return await (null /* 0 */ as Task /* 1 */); @@ -254,7 +266,8 @@ async Task Test2() public void BadAsyncReturnOperand_AsExpressionWithTrailingTrivia_Multiline() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -269,7 +282,8 @@ as Task // bbb }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { @@ -289,7 +303,8 @@ async Task Test2() public void TaskNotAwaited() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { async void Test() @@ -299,7 +314,8 @@ async void Test() }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { async void Test() @@ -314,7 +330,8 @@ async void Test() public void TaskNotAwaited_WithLeadingTrivia() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { async void Test() @@ -326,7 +343,8 @@ async void Test() }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { async void Test() @@ -343,7 +361,8 @@ async void Test() public void FunctionNotAwaited() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { Task AwaitableFunction() @@ -358,7 +377,8 @@ async void Test() }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { Task AwaitableFunction() @@ -378,7 +398,8 @@ async void Test() public void FunctionNotAwaited_WithLeadingTrivia() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { Task AwaitableFunction() @@ -395,7 +416,8 @@ async void Test() }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { Task AwaitableFunction() @@ -417,7 +439,8 @@ async void Test() public void FunctionNotAwaited_WithLeadingTrivia1() { var initial = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { Task AwaitableFunction() @@ -434,7 +457,8 @@ async void Test() }"; var expected = -@"using System.Threading.Tasks; +@"using System; +using System.Threading.Tasks; class Program { Task AwaitableFunction() From 57a99308640a6a8f6c3cdd30f1410cf84c8fd4db Mon Sep 17 00:00:00 2001 From: "Brett V. Forsgren" Date: Wed, 23 Sep 2015 10:33:15 -0700 Subject: [PATCH 42/83] change variable name to make it more clear --- .../UseAutoProperty/UseAutoPropertyAnalyzer.cs | 12 ++++++------ .../UseAutoProperty/UseAutoPropertyAnalyzer.vb | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs b/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs index b5cbece621bc7..f4d4e247daf8f 100644 --- a/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs +++ b/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs @@ -90,10 +90,10 @@ protected override ExpressionSyntax GetGetterExpression(IMethodSymbol getMethod, var statements = getAccessor?.Body?.Statements; if (statements?.Count == 1) { - var firstStatement = statements.Value[0]; - if (firstStatement.Kind() == SyntaxKind.ReturnStatement) + var statement = statements.Value[0]; + if (statement.Kind() == SyntaxKind.ReturnStatement) { - var expr = ((ReturnStatementSyntax)firstStatement).Expression; + var expr = ((ReturnStatementSyntax)statement).Expression; return CheckExpressionSyntactically(expr) ? expr : null; } } @@ -111,10 +111,10 @@ protected override ExpressionSyntax GetSetterExpression(IMethodSymbol setMethod, var statements = setAccessor?.Body?.Statements; if (statements?.Count == 1) { - var firstStatement = statements.Value[0]; - if (firstStatement?.Kind() == SyntaxKind.ExpressionStatement) + var statement = statements.Value[0]; + if (statement?.Kind() == SyntaxKind.ExpressionStatement) { - var expressionStatement = (ExpressionStatementSyntax)firstStatement; + var expressionStatement = (ExpressionStatementSyntax)statement; if (expressionStatement.Expression.Kind() == SyntaxKind.SimpleAssignmentExpression) { var assignmentExpression = (AssignmentExpressionSyntax)expressionStatement.Expression; diff --git a/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb b/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb index 96913df521952..3c097a57a252d 100644 --- a/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb +++ b/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb @@ -59,9 +59,9 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UseAutoProperty Dim accessor = TryCast(TryCast(getMethod.DeclaringSyntaxReferences(0).GetSyntax(cancellationToken), AccessorStatementSyntax)?.Parent, AccessorBlockSyntax) Dim statements = accessor?.Statements If statements?.Count = 1 Then - Dim firstStatement = statements.Value(0) - If firstStatement.Kind() = SyntaxKind.ReturnStatement Then - Dim expr = DirectCast(firstStatement, ReturnStatementSyntax).Expression + Dim statement = statements.Value(0) + If statement.Kind() = SyntaxKind.ReturnStatement Then + Dim expr = DirectCast(statement, ReturnStatementSyntax).Expression Return If(CheckExpressionSyntactically(expr), expr, Nothing) End If End If @@ -82,9 +82,9 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UseAutoProperty Dim setAccessor = TryCast(TryCast(setMethod.DeclaringSyntaxReferences(0).GetSyntax(cancellationToken), AccessorStatementSyntax)?.Parent, AccessorBlockSyntax) Dim statements = setAccessor?.Statements If statements?.Count = 1 Then - Dim firstStatement = statements.Value(0) - If firstStatement?.Kind() = SyntaxKind.SimpleAssignmentStatement Then - Dim assignmentStatement = DirectCast(firstStatement, AssignmentStatementSyntax) + Dim statement = statements.Value(0) + If statement?.Kind() = SyntaxKind.SimpleAssignmentStatement Then + Dim assignmentStatement = DirectCast(statement, AssignmentStatementSyntax) If assignmentStatement.Right.Kind() = SyntaxKind.IdentifierName Then Dim identifier = DirectCast(assignmentStatement.Right, IdentifierNameSyntax) Dim symbol = semanticModel.GetSymbolInfo(identifier).Symbol From a1680cf8be80cb2916757687b30aa55cb2fcd9ca Mon Sep 17 00:00:00 2001 From: Kevin Halverson Date: Wed, 23 Sep 2015 10:20:23 -0700 Subject: [PATCH 43/83] Disable UseAutoPropertyAnalyzer for now... The performance impact needs to be investigated. --- .../CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs | 5 +++-- .../VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs b/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs index ea8bf804e3edf..4dee58f4b56e6 100644 --- a/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs +++ b/src/EditorFeatures/CSharp/UseAutoProperty/UseAutoPropertyAnalyzer.cs @@ -12,8 +12,9 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UseAutoProperty { - [Export] - [DiagnosticAnalyzer(LanguageNames.CSharp)] + // https://github.com/dotnet/roslyn/issues/5408 + //[Export] + //[DiagnosticAnalyzer(LanguageNames.CSharp)] internal class UseAutoPropertyAnalyzer : AbstractUseAutoPropertyAnalyzer { protected override bool SupportsReadOnlyProperties(Compilation compilation) diff --git a/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb b/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb index a39414f00ade8..4bf98d3fe93d0 100644 --- a/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb +++ b/src/EditorFeatures/VisualBasic/UseAutoProperty/UseAutoPropertyAnalyzer.vb @@ -8,8 +8,9 @@ Imports Microsoft.CodeAnalysis.UseAutoProperty Imports Microsoft.CodeAnalysis.VisualBasic.Syntax Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UseAutoProperty - - + ' https://github.com/dotnet/roslyn/issues/5408 + ' + ' Friend Class UseAutoPropertyAnalyzer Inherits AbstractUseAutoPropertyAnalyzer(Of PropertyBlockSyntax, FieldDeclarationSyntax, ModifiedIdentifierSyntax, ExpressionSyntax) From 9b7d716f4d5eb797abab64b783a912ae0e6688a1 Mon Sep 17 00:00:00 2001 From: Manish Vasani Date: Wed, 23 Sep 2015 12:23:03 -0700 Subject: [PATCH 44/83] Compiler layer changes to expose suppression info for suppressed diagnostics. This change adds a new public type SuppressionInfo, which is exposed by Diagnostic.GetSuppressionInfo() for suppressed diagnostics. --- .../Core/Portable/CodeAnalysis.csproj | 1 + .../Core/Portable/Diagnostic/Diagnostic.cs | 20 ++++++++++++++ .../Portable/Diagnostic/SuppressionInfo.cs | 27 +++++++++++++++++++ .../SuppressMessageAttributeState.cs | 26 +++++++++++++++--- .../DiagnosticAnalyzer/SuppressMessageInfo.cs | 1 + .../Core/Portable/PublicAPI.Unshipped.txt | 4 +++ 6 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 src/Compilers/Core/Portable/Diagnostic/SuppressionInfo.cs diff --git a/src/Compilers/Core/Portable/CodeAnalysis.csproj b/src/Compilers/Core/Portable/CodeAnalysis.csproj index c0bc3465c5f01..1702732745b18 100644 --- a/src/Compilers/Core/Portable/CodeAnalysis.csproj +++ b/src/Compilers/Core/Portable/CodeAnalysis.csproj @@ -52,6 +52,7 @@ + diff --git a/src/Compilers/Core/Portable/Diagnostic/Diagnostic.cs b/src/Compilers/Core/Portable/Diagnostic/Diagnostic.cs index 582b9b90039e1..8f4e0be8f557e 100644 --- a/src/Compilers/Core/Portable/Diagnostic/Diagnostic.cs +++ b/src/Compilers/Core/Portable/Diagnostic/Diagnostic.cs @@ -283,6 +283,26 @@ internal static Diagnostic Create(DiagnosticInfo info) /// public abstract bool IsSuppressed { get; } + /// + /// Gets the for suppressed diagnostics, i.e. = true. + /// Otherwise, returns null. + /// + public SuppressionInfo GetSuppressionInfo(Compilation compilation) + { + if (!IsSuppressed) + { + return null; + } + + AttributeData attribute; + if (!SuppressMessageAttributeState.IsDiagnosticSuppressed(this, compilation, out attribute)) + { + attribute = null; + } + + return new SuppressionInfo(this.Id, attribute); + } + /// /// Returns true if this diagnostic is enabled by default by the author of the diagnostic. /// diff --git a/src/Compilers/Core/Portable/Diagnostic/SuppressionInfo.cs b/src/Compilers/Core/Portable/Diagnostic/SuppressionInfo.cs new file mode 100644 index 0000000000000..94b717a2ec18a --- /dev/null +++ b/src/Compilers/Core/Portable/Diagnostic/SuppressionInfo.cs @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.CodeAnalysis.Diagnostics +{ + /// + /// Contains information about the source of diagnostic suppression. + /// + public class SuppressionInfo + { + /// + /// of the suppressed diagnostic. + /// + public string Id { get; } + + /// + /// If the diagnostic was suppressed by an attribute, then returns that attribute. + /// Otherwise, returns null. + /// + public AttributeData Attribute { get; } + + internal SuppressionInfo(string id, AttributeData attribute) + { + Id = id; + Attribute = attribute; + } + } +} diff --git a/src/Compilers/Core/Portable/DiagnosticAnalyzer/SuppressMessageAttributeState.cs b/src/Compilers/Core/Portable/DiagnosticAnalyzer/SuppressMessageAttributeState.cs index 60c605999d97f..49b07e515c571 100644 --- a/src/Compilers/Core/Portable/DiagnosticAnalyzer/SuppressMessageAttributeState.cs +++ b/src/Compilers/Core/Portable/DiagnosticAnalyzer/SuppressMessageAttributeState.cs @@ -46,7 +46,7 @@ public void AddGlobalSymbolSuppression(ISymbol symbol, SuppressMessageInfo info) } else { - suppressions = new Dictionary() {{ info.Id, info }}; + suppressions = new Dictionary() { { info.Id, info } }; _globalSymbolSuppressions.Add(symbol, suppressions); } } @@ -85,10 +85,8 @@ public static Diagnostic ApplySourceSuppressions(Diagnostic diagnostic, Compilat return diagnostic; } - var suppressMessageState = AnalyzerDriver.GetOrCreateCachedCompilationData(compilation).SuppressMessageAttributeState; - SuppressMessageInfo info; - if (suppressMessageState.IsDiagnosticSuppressed(diagnostic, out info)) + if (IsDiagnosticSuppressed(diagnostic, compilation, out info)) { // Attach the suppression info to the diagnostic. diagnostic = diagnostic.WithIsSuppressed(true); @@ -97,6 +95,25 @@ public static Diagnostic ApplySourceSuppressions(Diagnostic diagnostic, Compilat return diagnostic; } + public static bool IsDiagnosticSuppressed(Diagnostic diagnostic, Compilation compilation, out AttributeData suppressingAttribute) + { + SuppressMessageInfo info; + if (IsDiagnosticSuppressed(diagnostic, compilation, out info)) + { + suppressingAttribute = info.Attribute; + return true; + } + + suppressingAttribute = null; + return false; + } + + private static bool IsDiagnosticSuppressed(Diagnostic diagnostic, Compilation compilation, out SuppressMessageInfo info) + { + var suppressMessageState = AnalyzerDriver.GetOrCreateCachedCompilationData(compilation).SuppressMessageAttributeState; + return suppressMessageState.IsDiagnosticSuppressed(diagnostic, out info); + } + private bool IsDiagnosticSuppressed(Diagnostic diagnostic, out SuppressMessageInfo info, ISymbol symbolOpt = null) { if (symbolOpt != null && IsDiagnosticSuppressed(diagnostic.Id, symbolOpt, out info)) @@ -359,6 +376,7 @@ private static bool TryDecodeSuppressMessageAttributeData(AttributeData attribut info.Scope = attribute.DecodeNamedArgument("Scope", SpecialType.System_String); info.Target = attribute.DecodeNamedArgument("Target", SpecialType.System_String); info.MessageId = attribute.DecodeNamedArgument("MessageId", SpecialType.System_String); + info.Attribute = attribute; return true; } diff --git a/src/Compilers/Core/Portable/DiagnosticAnalyzer/SuppressMessageInfo.cs b/src/Compilers/Core/Portable/DiagnosticAnalyzer/SuppressMessageInfo.cs index 7bc59b3d9a4d0..c946c1850f68d 100644 --- a/src/Compilers/Core/Portable/DiagnosticAnalyzer/SuppressMessageInfo.cs +++ b/src/Compilers/Core/Portable/DiagnosticAnalyzer/SuppressMessageInfo.cs @@ -8,5 +8,6 @@ internal struct SuppressMessageInfo public string Scope; public string Target; public string MessageId; + public AttributeData Attribute; } } diff --git a/src/Compilers/Core/Portable/PublicAPI.Unshipped.txt b/src/Compilers/Core/Portable/PublicAPI.Unshipped.txt index 802e13a07bbb7..593464cee86ea 100644 --- a/src/Compilers/Core/Portable/PublicAPI.Unshipped.txt +++ b/src/Compilers/Core/Portable/PublicAPI.Unshipped.txt @@ -7,6 +7,7 @@ Microsoft.CodeAnalysis.Compilation.ScriptClass.get -> Microsoft.CodeAnalysis.INa Microsoft.CodeAnalysis.Compilation.WithPreviousSubmission(Microsoft.CodeAnalysis.Compilation newPreviousSubmission) -> Microsoft.CodeAnalysis.Compilation Microsoft.CodeAnalysis.CompilationOptions.ReportSuppressedDiagnostics.get -> bool Microsoft.CodeAnalysis.CompilationOptions.WithReportSuppressedDiagnostics(bool value) -> Microsoft.CodeAnalysis.CompilationOptions +Microsoft.CodeAnalysis.Diagnostic.GetSuppressionInfo(Microsoft.CodeAnalysis.Compilation compilation) -> Microsoft.CodeAnalysis.Diagnostics.SuppressionInfo Microsoft.CodeAnalysis.DiagnosticDescriptor.GetEffectiveSeverity(Microsoft.CodeAnalysis.CompilationOptions compilationOptions) -> Microsoft.CodeAnalysis.ReportDiagnostic Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers.AnalysisOptions.get -> Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzersOptions Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers.Analyzers.get -> System.Collections.Immutable.ImmutableArray @@ -29,6 +30,9 @@ Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzersOptions.ConcurrentAna Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzersOptions.LogAnalyzerExecutionTime.get -> bool Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzersOptions.OnAnalyzerException.get -> System.Action Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzersOptions.ReportSuppressedDiagnostics.get -> bool +Microsoft.CodeAnalysis.Diagnostics.SuppressionInfo +Microsoft.CodeAnalysis.Diagnostics.SuppressionInfo.Attribute.get -> Microsoft.CodeAnalysis.AttributeData +Microsoft.CodeAnalysis.Diagnostics.SuppressionInfo.Id.get -> string Microsoft.CodeAnalysis.Diagnostics.Telemetry.AnalyzerTelemetry Microsoft.CodeAnalysis.Diagnostics.Telemetry.AnalyzerTelemetry.ActionCounts Microsoft.CodeAnalysis.Diagnostics.Telemetry.AnalyzerTelemetry.ActionCounts.CodeBlockActionsCount.get -> int From 515c3f96b088cd5f047aefd305a108f8b539c48b Mon Sep 17 00:00:00 2001 From: Manish Vasani Date: Wed, 23 Sep 2015 12:26:51 -0700 Subject: [PATCH 45/83] This change adds a new code action to Features layer Suppression fixer to enable Removing suppressions on diagnostics which are suppressed in source by pragma/SuppressMessageAttribute. Additionally, this change also adds a batch fixer to enable removing suppression on multiple/all diagnostics. This functionality will be consumed by the "Remove suppression(s)" context menu for error list selection. --- .../SuggestedActionsSourceProvider.cs | 13 +- .../Suggestions/SuppressionSuggestedAction.cs | 1 - .../CSharpSuppressionCodeFixProvider.cs | 52 +++- .../Core/Portable/CodeFixes/CodeFixService.cs | 4 +- .../FixAllOccurrences/FixAllProviderInfo.cs | 6 +- ...ppressionCodeFixProvider.FixAllProvider.cs | 8 +- ...rovider.GlobalSuppressMessageCodeAction.cs | 2 +- ...nCodeFixProvider.IPragmaBasedCodeAction.cs | 15 + ...onCodeFixProvider.PragmaBatchFixHelpers.cs | 194 ++++++++++++ ...uppressionCodeFixProvider.PragmaHelpers.cs | 208 +++++++++++++ ...ovider.PragmaWarningBatchFixAllProvider.cs | 33 +- ...CodeFixProvider.PragmaWarningCodeAction.cs | 151 ++------- ....RemoveSuppressionCodeAction.BatchFixer.cs | 144 +++++++++ ...FixProvider.RemoveSuppressionCodeAction.cs | 55 ++++ ...r.RemoveSuppressionCodeAction_Attribute.cs | 80 +++++ ...ider.RemoveSuppressionCodeAction_Pragma.cs | 293 ++++++++++++++++++ .../AbstractSuppressionCodeFixProvider.cs | 75 +++-- .../Suppression/ISuppressionFixProvider.cs | 6 +- .../NestedSuppressionCodeAction.cs | 7 +- .../Suppression/SuppressionHelpers.cs | 22 +- .../Suppression/WrapperCodeFixProvider.cs | 2 +- src/Features/Core/Portable/Features.csproj | 7 + .../Portable/FeaturesResources.Designer.cs | 18 ++ .../Core/Portable/FeaturesResources.resx | 6 + .../VisualBasicSuppressionCodeFixProvider.vb | 72 ++++- 25 files changed, 1271 insertions(+), 203 deletions(-) create mode 100644 src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.IPragmaBasedCodeAction.cs create mode 100644 src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaBatchFixHelpers.cs create mode 100644 src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaHelpers.cs create mode 100644 src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.BatchFixer.cs create mode 100644 src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.cs create mode 100644 src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Attribute.cs create mode 100644 src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Pragma.cs diff --git a/src/EditorFeatures/Core/Implementation/Suggestions/SuggestedActionsSourceProvider.cs b/src/EditorFeatures/Core/Implementation/Suggestions/SuggestedActionsSourceProvider.cs index 0d82f38cc1b6b..dbe64197c4d8d 100644 --- a/src/EditorFeatures/Core/Implementation/Suggestions/SuggestedActionsSourceProvider.cs +++ b/src/EditorFeatures/Core/Implementation/Suggestions/SuggestedActionsSourceProvider.cs @@ -316,8 +316,17 @@ private void GroupFixes(Workspace workspace, IEnumerable fixC { if (fix.Action is SuppressionCodeAction) { - var suggestedAction = new SuppressionSuggestedAction(workspace, _subjectBuffer, _owner._editHandler, - fix, fixCollection.Provider, getFixAllSuggestedActionSet); + SuggestedAction suggestedAction; + if (fix.Action.HasCodeActions) + { + suggestedAction = new SuppressionSuggestedAction(workspace, _subjectBuffer, _owner._editHandler, + fix, fixCollection.Provider, getFixAllSuggestedActionSet); + } + else + { + suggestedAction = new CodeFixSuggestedAction(workspace, _subjectBuffer, _owner._editHandler, + fix, fix.Action, fixCollection.Provider, getFixAllSuggestedActionSet(fix.Action)); + } AddFix(fix, suggestedAction, map, order); } diff --git a/src/EditorFeatures/Core/Implementation/Suggestions/SuppressionSuggestedAction.cs b/src/EditorFeatures/Core/Implementation/Suggestions/SuppressionSuggestedAction.cs index 0a747032136ae..a7d45d8247582 100644 --- a/src/EditorFeatures/Core/Implementation/Suggestions/SuppressionSuggestedAction.cs +++ b/src/EditorFeatures/Core/Implementation/Suggestions/SuppressionSuggestedAction.cs @@ -9,7 +9,6 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis.CodeActions; using Microsoft.CodeAnalysis.CodeFixes; -using Microsoft.CodeAnalysis.CodeFixes.Suppression; using Microsoft.VisualStudio.Language.Intellisense; using Microsoft.VisualStudio.Text; using Roslyn.Utilities; diff --git a/src/Features/CSharp/Portable/CodeFixes/Suppression/CSharpSuppressionCodeFixProvider.cs b/src/Features/CSharp/Portable/CodeFixes/Suppression/CSharpSuppressionCodeFixProvider.cs index f9a06efc6752c..895bf755c40f5 100644 --- a/src/Features/CSharp/Portable/CodeFixes/Suppression/CSharpSuppressionCodeFixProvider.cs +++ b/src/Features/CSharp/Portable/CodeFixes/Suppression/CSharpSuppressionCodeFixProvider.cs @@ -1,7 +1,9 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.Composition; using System.Globalization; +using System.Linq; using Microsoft.CodeAnalysis.CodeFixes; using Microsoft.CodeAnalysis.CodeFixes.Suppression; using Microsoft.CodeAnalysis.CSharp.Extensions; @@ -14,24 +16,25 @@ namespace Microsoft.CodeAnalysis.CSharp.CodeFixes.Suppression [ExportSuppressionFixProvider(PredefinedCodeFixProviderNames.Suppression, LanguageNames.CSharp), Shared] internal class CSharpSuppressionCodeFixProvider : AbstractSuppressionCodeFixProvider { - protected override SyntaxTriviaList CreatePragmaRestoreDirectiveTrivia(Diagnostic diagnostic, bool needsTrailingEndOfLine) + protected override SyntaxTriviaList CreatePragmaRestoreDirectiveTrivia(Diagnostic diagnostic, Func formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine) { var restoreKeyword = SyntaxFactory.Token(SyntaxKind.RestoreKeyword); - return CreatePragmaDirectiveTrivia(restoreKeyword, diagnostic, true, needsTrailingEndOfLine); + return CreatePragmaDirectiveTrivia(restoreKeyword, diagnostic, formatNode, needsLeadingEndOfLine, needsTrailingEndOfLine); } - protected override SyntaxTriviaList CreatePragmaDisableDirectiveTrivia(Diagnostic diagnostic, bool needsLeadingEndOfLine) + protected override SyntaxTriviaList CreatePragmaDisableDirectiveTrivia(Diagnostic diagnostic, Func formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine) { var disableKeyword = SyntaxFactory.Token(SyntaxKind.DisableKeyword); - return CreatePragmaDirectiveTrivia(disableKeyword, diagnostic, needsLeadingEndOfLine, true); + return CreatePragmaDirectiveTrivia(disableKeyword, diagnostic, formatNode, needsLeadingEndOfLine, needsTrailingEndOfLine); } - private SyntaxTriviaList CreatePragmaDirectiveTrivia(SyntaxToken disableOrRestoreKeyword, Diagnostic diagnostic, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine) + private SyntaxTriviaList CreatePragmaDirectiveTrivia(SyntaxToken disableOrRestoreKeyword, Diagnostic diagnostic, Func formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine) { var id = SyntaxFactory.IdentifierName(diagnostic.Id); var ids = new SeparatedSyntaxList().Add(id); var pragmaDirective = SyntaxFactory.PragmaWarningDirectiveTrivia(disableOrRestoreKeyword, ids, true); - var pragmaDirectiveTrivia = SyntaxFactory.Trivia(pragmaDirective.WithAdditionalAnnotations(Formatter.Annotation)); + pragmaDirective = (PragmaWarningDirectiveTriviaSyntax)formatNode(pragmaDirective); + var pragmaDirectiveTrivia = SyntaxFactory.Trivia(pragmaDirective); var endOfLineTrivia = SyntaxFactory.ElasticCarriageReturnLineFeed; var triviaList = SyntaxFactory.TriviaList(pragmaDirectiveTrivia); @@ -157,5 +160,42 @@ private AttributeArgumentListSyntax CreateAttributeArguments(ISymbol targetSymbo return attributeArgumentList; } + + protected override bool IsSingleAttributeInAttributeList(SyntaxNode attribute) + { + var attributeSyntax = attribute as AttributeSyntax; + if (attributeSyntax != null) + { + var attributeList = attributeSyntax.Parent as AttributeListSyntax; + return attributeList != null && attributeList.Attributes.Count == 1; + } + + return false; + } + + protected override bool IsAnyPragmaDirectiveForId(SyntaxTrivia trivia, string id, out bool enableDirective, out bool hasMultipleIds) + { + if (trivia.Kind() == SyntaxKind.PragmaWarningDirectiveTrivia) + { + var pragmaWarning = (PragmaWarningDirectiveTriviaSyntax)trivia.GetStructure(); + enableDirective = pragmaWarning.DisableOrRestoreKeyword.Kind() == SyntaxKind.RestoreKeyword; + hasMultipleIds = pragmaWarning.ErrorCodes.Count > 1; + return pragmaWarning.ErrorCodes.Any(n => n.ToString() == id); + } + + enableDirective = false; + hasMultipleIds = false; + return false; + } + + protected override SyntaxTrivia TogglePragmaDirective(SyntaxTrivia trivia) + { + var pragmaWarning = (PragmaWarningDirectiveTriviaSyntax)trivia.GetStructure(); + var currentKeyword = pragmaWarning.DisableOrRestoreKeyword; + var toggledKeywordKind = currentKeyword.Kind() == SyntaxKind.DisableKeyword ? SyntaxKind.RestoreKeyword : SyntaxKind.DisableKeyword; + var toggledToken = SyntaxFactory.Token(currentKeyword.LeadingTrivia, toggledKeywordKind, currentKeyword.TrailingTrivia); + var newPragmaWarning = pragmaWarning.WithDisableOrRestoreKeyword(toggledToken); + return SyntaxFactory.Trivia(newPragmaWarning); + } } } diff --git a/src/Features/Core/Portable/CodeFixes/CodeFixService.cs b/src/Features/Core/Portable/CodeFixes/CodeFixService.cs index acffdb77d404b..7b71a0d3b23c8 100644 --- a/src/Features/Core/Portable/CodeFixes/CodeFixService.cs +++ b/src/Features/Core/Portable/CodeFixes/CodeFixService.cs @@ -243,7 +243,7 @@ private async Task> AppendSuppressionsAsync( var diagnostics = await DiagnosticData.ToDiagnosticsAsync(document.Project, diagnosticDataCollection, cancellationToken).ConfigureAwait(false); - Func hasFix = (d) => lazySuppressionProvider.Value.CanBeSuppressed(d); + Func hasFix = (d) => lazySuppressionProvider.Value.CanBeSuppressedOrUnsuppressed(d); Func, Task>> getFixes = (dxs) => lazySuppressionProvider.Value.GetSuppressionsAsync(document, span, dxs, cancellationToken); await AppendFixesOrSuppressionsAsync(document, span, diagnostics, result, lazySuppressionProvider.Value, hasFix, getFixes, cancellationToken).ConfigureAwait(false); return result; @@ -374,7 +374,7 @@ private async Task ContainsAnyFix(Document document, DiagnosticData diagno var dx = await diagnostic.ToDiagnosticAsync(document.Project, cancellationToken).ConfigureAwait(false); - if (hasSuppressionFixer && lazySuppressionProvider.Value.CanBeSuppressed(dx)) + if (hasSuppressionFixer && lazySuppressionProvider.Value.CanBeSuppressedOrUnsuppressed(dx)) { return true; } diff --git a/src/Features/Core/Portable/CodeFixes/FixAllOccurrences/FixAllProviderInfo.cs b/src/Features/Core/Portable/CodeFixes/FixAllOccurrences/FixAllProviderInfo.cs index 440bf93956f94..ac266a1751875 100644 --- a/src/Features/Core/Portable/CodeFixes/FixAllOccurrences/FixAllProviderInfo.cs +++ b/src/Features/Core/Portable/CodeFixes/FixAllOccurrences/FixAllProviderInfo.cs @@ -106,7 +106,7 @@ public override bool CanBeFixed(Diagnostic diagnostic) private class SuppressionFixerFixAllProviderInfo : FixAllProviderInfo { - private readonly Func _canBeSuppressedOrTriaged; + private readonly Func _canBeSuppressedOrUnsuppressed; public SuppressionFixerFixAllProviderInfo( FixAllProvider fixAllProvider, @@ -114,12 +114,12 @@ public SuppressionFixerFixAllProviderInfo( IEnumerable supportedScopes) : base(fixAllProvider, supportedScopes) { - this._canBeSuppressedOrTriaged = suppressionFixer.CanBeSuppressed; + this._canBeSuppressedOrUnsuppressed = suppressionFixer.CanBeSuppressedOrUnsuppressed; } public override bool CanBeFixed(Diagnostic diagnostic) { - return _canBeSuppressedOrTriaged(diagnostic); + return _canBeSuppressedOrUnsuppressed(diagnostic); } } } diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.FixAllProvider.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.FixAllProvider.cs index c3e022ea1355b..2f345c42b99ab 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.FixAllProvider.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.FixAllProvider.cs @@ -33,8 +33,12 @@ public async override Task GetFixAsync(FixAllContext fixAllContext) var isGlobalSuppression = NestedSuppressionCodeAction.IsEquivalenceKeyForGlobalSuppression(fixAllContext.CodeActionEquivalenceKey); if (!isGlobalSuppression) { - // Pragma warning fix all. - batchFixer = new PragmaWarningBatchFixAllProvider(suppressionFixer); + var isPragmaWarningSuppression = NestedSuppressionCodeAction.IsEquivalenceKeyForPragmaWarning(fixAllContext.CodeActionEquivalenceKey); + Contract.ThrowIfFalse(isPragmaWarningSuppression || NestedSuppressionCodeAction.IsEquivalenceKeyForRemoveSuppression(fixAllContext.CodeActionEquivalenceKey)); + + batchFixer = isPragmaWarningSuppression ? + new PragmaWarningBatchFixAllProvider(suppressionFixer) : + RemoveSuppressionCodeAction.GetBatchFixer(suppressionFixer); } var title = fixAllContext.CodeActionEquivalenceKey; diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.GlobalSuppressMessageCodeAction.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.GlobalSuppressMessageCodeAction.cs index ed79ad6fcb5d5..d51f7078e4ac9 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.GlobalSuppressMessageCodeAction.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.GlobalSuppressMessageCodeAction.cs @@ -13,7 +13,7 @@ internal sealed class GlobalSuppressMessageCodeAction : AbstractGlobalSuppressMe private readonly ISymbol _targetSymbol; private readonly Diagnostic _diagnostic; - public GlobalSuppressMessageCodeAction(AbstractSuppressionCodeFixProvider fixer, ISymbol targetSymbol, Project project, Diagnostic diagnostic) + public GlobalSuppressMessageCodeAction(ISymbol targetSymbol, Project project, Diagnostic diagnostic, AbstractSuppressionCodeFixProvider fixer) : base(fixer, project) { _targetSymbol = targetSymbol; diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.IPragmaBasedCodeAction.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.IPragmaBasedCodeAction.cs new file mode 100644 index 0000000000000..d6900e56c98bf --- /dev/null +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.IPragmaBasedCodeAction.cs @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading; +using System.Threading.Tasks; + +namespace Microsoft.CodeAnalysis.CodeFixes.Suppression +{ + internal partial class AbstractSuppressionCodeFixProvider + { + internal interface IPragmaBasedCodeAction + { + Task GetChangedDocumentAsync(bool includeStartTokenChange, bool includeEndTokenChange, CancellationToken cancellationToken); + } + } +} diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaBatchFixHelpers.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaBatchFixHelpers.cs new file mode 100644 index 0000000000000..1c02969c38f51 --- /dev/null +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaBatchFixHelpers.cs @@ -0,0 +1,194 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.CodeAnalysis.CodeActions; +using Microsoft.CodeAnalysis.Formatting; +using Microsoft.CodeAnalysis.Text; +using Roslyn.Utilities; + +namespace Microsoft.CodeAnalysis.CodeFixes.Suppression +{ + internal partial class AbstractSuppressionCodeFixProvider + { + private static class PragmaBatchFixHelpers + { + public static CodeAction CreateBatchPragmaFix( + AbstractSuppressionCodeFixProvider suppressionFixProvider, + Document document, + ImmutableArray pragmaActions, + ImmutableArray pragmaDiagnostics, + FixAllContext fixAllContext) + { + // This is a temporary generated code action, which doesn't need telemetry, hence suppressing RS0005. +#pragma warning disable RS0005 // Do not use generic CodeAction.Create to create CodeAction + return CodeAction.Create( + ((CodeAction)pragmaActions[0]).Title, + createChangedDocument: ct => + BatchPragmaFixesAsync(suppressionFixProvider, document, pragmaActions, pragmaDiagnostics, fixAllContext.CancellationToken), + equivalenceKey: fixAllContext.CodeActionEquivalenceKey); +#pragma warning restore RS0005 // Do not use generic CodeAction.Create to create CodeAction + } + + private static async Task BatchPragmaFixesAsync( + AbstractSuppressionCodeFixProvider suppressionFixProvider, + Document document, + ImmutableArray pragmaActions, + ImmutableArray diagnostics, + CancellationToken cancellationToken) + { + // We apply all the pragma removal fixes sequentially. + // At every application, we track the updated locations for remaining diagnostics in the document. + var currentDiagnosticSpans = new Dictionary(); + foreach (var diagnostic in diagnostics) + { + currentDiagnosticSpans.Add(diagnostic, diagnostic.Location.SourceSpan); + } + + var currentDocument = document; + for (int i = 0; i < pragmaActions.Length; i++) + { + var originalpragmaAction = pragmaActions[i]; + var diagnostic = diagnostics[i]; + + // Get the diagnostic span for the diagnostic in latest document snapshot. + TextSpan currentDiagnosticSpan; + if (!currentDiagnosticSpans.TryGetValue(diagnostic, out currentDiagnosticSpan)) + { + // Diagnostic whose location conflicts with a prior fix. + continue; + } + + // Compute and apply pragma removal fix. + var currentTree = await currentDocument.GetSyntaxTreeAsync(cancellationToken).ConfigureAwait(false); + var currentLocation = Location.Create(currentTree, currentDiagnosticSpan); + diagnostic = Diagnostic.Create( + id: diagnostic.Id, + category: diagnostic.Descriptor.Category, + message: diagnostic.GetMessage(), + severity: diagnostic.Severity, + defaultSeverity: diagnostic.DefaultSeverity, + isEnabledByDefault: diagnostic.Descriptor.IsEnabledByDefault, + warningLevel: diagnostic.WarningLevel, + title: diagnostic.Descriptor.Title, + description: diagnostic.Descriptor.Description, + helpLink: diagnostic.Descriptor.HelpLinkUri, + location: currentLocation, + additionalLocations: diagnostic.AdditionalLocations, + customTags: diagnostic.Descriptor.CustomTags, + properties: diagnostic.Properties, + isSuppressed: diagnostic.IsSuppressed); + + var newSuppressionFixes = await suppressionFixProvider.GetSuppressionsAsync(currentDocument, currentDiagnosticSpan, SpecializedCollections.SingletonEnumerable(diagnostic), cancellationToken).ConfigureAwait(false); + var newSuppressionFix = newSuppressionFixes.SingleOrDefault(); + if (newSuppressionFix != null) + { + var newPragmaAction = newSuppressionFix.Action as IPragmaBasedCodeAction ?? + newSuppressionFix.Action.GetCodeActions().OfType().SingleOrDefault(); + if (newPragmaAction != null) + { + // Get the changed document with pragma suppression add/removals. + // Note: We do it one token at a time to ensure we get single text change in the new document, otherwise UpdateDiagnosticSpans won't function as expected. + // Update the diagnostics spans based on the text changes. + var startTokenChanges = await GetChangedDocumentAsync(newPragmaAction, currentDocument, diagnostics, currentDiagnosticSpans, + includeStartTokenChange: true, includeEndTokenChange: false, cancellationToken: cancellationToken).ConfigureAwait(false); + + var endTokenChanges = await GetChangedDocumentAsync(newPragmaAction, currentDocument, diagnostics, currentDiagnosticSpans, + includeStartTokenChange: false, includeEndTokenChange: true, cancellationToken: cancellationToken).ConfigureAwait(false); + + var currentText = await currentDocument.GetTextAsync(cancellationToken).ConfigureAwait(false); + var orderedChanges = startTokenChanges.Concat(endTokenChanges).OrderBy(change => change.Span).Distinct(); + var newText = currentText.WithChanges(orderedChanges); + currentDocument = currentDocument.WithText(newText); + } + } + } + + return currentDocument; + } + + private static async Task> GetChangedDocumentAsync( + IPragmaBasedCodeAction pragmaAction, + Document currentDocument, + ImmutableArray diagnostics, + Dictionary currentDiagnosticSpans, + bool includeStartTokenChange, + bool includeEndTokenChange, + CancellationToken cancellationToken) + { + var newDocument = await pragmaAction.GetChangedDocumentAsync(includeStartTokenChange, includeEndTokenChange, cancellationToken).ConfigureAwait(false); + + // Update the diagnostics spans based on the text changes. + var textChanges = await newDocument.GetTextChangesAsync(currentDocument, cancellationToken).ConfigureAwait(false); + foreach (var textChange in textChanges) + { + UpdateDiagnosticSpans(diagnostics, currentDiagnosticSpans, textChange); + } + + return textChanges; + } + + private static async Task UpdateDiagnosticSpansAsync(Document currentDocument, Document newDocument, ImmutableArray diagnostics, Dictionary currentDiagnosticSpans, CancellationToken cancellationToken) + { + // Update the diagnostics spans based on the text changes. + var textChanges = await newDocument.GetTextChangesAsync(currentDocument, cancellationToken).ConfigureAwait(false); + foreach (var textChange in textChanges) + { + UpdateDiagnosticSpans(diagnostics, currentDiagnosticSpans, textChange); + } + } + + private static void UpdateDiagnosticSpans(ImmutableArray diagnostics, Dictionary currentDiagnosticSpans, TextChange textChange) + { + var isAdd = textChange.Span.Length == 0; + Func isPriorSpan = span => span.End <= textChange.Span.Start; + Func isFollowingSpan = span => span.Start >= textChange.Span.End; + Func isEnclosingSpan = span => span.Contains(textChange.Span); + + foreach (var diagnostic in diagnostics) + { + TextSpan currentSpan; + if (!currentDiagnosticSpans.TryGetValue(diagnostic, out currentSpan)) + { + continue; + } + + if (isPriorSpan(currentSpan)) + { + // Prior span, needs no update. + continue; + } + + var delta = textChange.NewText.Length - textChange.Span.Length; + if (delta != 0) + { + if (isFollowingSpan(currentSpan)) + { + // Following span. + var newStart = currentSpan.Start + delta; + var newSpan = new TextSpan(newStart, currentSpan.Length); + currentDiagnosticSpans[diagnostic] = newSpan; + } + else if (isEnclosingSpan(currentSpan)) + { + // Enclosing span. + var newLength = currentSpan.Length + delta; + var newSpan = new TextSpan(currentSpan.Start, newLength); + currentDiagnosticSpans[diagnostic] = newSpan; + } + else + { + // Overlapping span. + // Drop conflicting diagnostics. + currentDiagnosticSpans.Remove(diagnostic); + } + } + } + } + } + } +} diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaHelpers.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaHelpers.cs new file mode 100644 index 0000000000000..7afeb564118eb --- /dev/null +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaHelpers.cs @@ -0,0 +1,208 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.CodeAnalysis.Formatting; +using Microsoft.CodeAnalysis.Text; + +namespace Microsoft.CodeAnalysis.CodeFixes.Suppression +{ + internal partial class AbstractSuppressionCodeFixProvider + { + private static class PragmaHelpers + { + internal async static Task GetChangeDocumentWithPragmaAdjustedAsync( + Document document, + TextSpan diagnosticSpan, + SuppressionTargetInfo suppressionTargetInfo, + Func getNewStartToken, + Func getNewEndToken, + CancellationToken cancellationToken) + { + var startToken = suppressionTargetInfo.StartToken; + var endToken = suppressionTargetInfo.EndToken; + var nodeWithTokens = suppressionTargetInfo.NodeWithTokens; + var root = await nodeWithTokens.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false); + + var startAndEndTokenAreTheSame = startToken == endToken; + SyntaxToken newStartToken = getNewStartToken(startToken, diagnosticSpan); + + SyntaxToken newEndToken = endToken; + if (startAndEndTokenAreTheSame) + { + var annotation = new SyntaxAnnotation(); + newEndToken = root.ReplaceToken(startToken, newStartToken.WithAdditionalAnnotations(annotation)).GetAnnotatedTokens(annotation).Single(); + var spanChange = newStartToken.LeadingTrivia.FullSpan.Length - startToken.LeadingTrivia.FullSpan.Length; + diagnosticSpan = new TextSpan(diagnosticSpan.Start + spanChange, diagnosticSpan.Length); + } + + newEndToken = getNewEndToken(newEndToken, diagnosticSpan); + + SyntaxNode newNode; + if (startAndEndTokenAreTheSame) + { + newNode = nodeWithTokens.ReplaceToken(startToken, newEndToken); + } + else + { + newNode = nodeWithTokens.ReplaceTokens(new[] { startToken, endToken }, (o, n) => o == startToken ? newStartToken : newEndToken); + } + + var newRoot = root.ReplaceNode(nodeWithTokens, newNode); + return document.WithSyntaxRoot(newRoot); + } + + private static int GetPositionForPragmaInsertion(ImmutableArray triviaList, TextSpan currentDiagnosticSpan, AbstractSuppressionCodeFixProvider fixer, bool isStartToken, out SyntaxTrivia triviaAtIndex) + { + // Start token: Insert the #pragma disable directive just **before** the first end of line trivia prior to diagnostic location. + // End token: Insert the #pragma disable directive just **after** the first end of line trivia after diagnostic location. + + Func getNextIndex = cur => isStartToken ? cur - 1 : cur + 1; + Func shouldConsiderTrivia = trivia => + isStartToken ? + trivia.FullSpan.End <= currentDiagnosticSpan.Start : + trivia.FullSpan.Start >= currentDiagnosticSpan.End; + + var walkedPastDiagnosticSpan = false; + var seenEndOfLineTrivia = false; + var index = isStartToken ? triviaList.Length - 1 : 0; + while (index >= 0 && index < triviaList.Length) + { + var trivia = triviaList[index]; + + walkedPastDiagnosticSpan = walkedPastDiagnosticSpan || shouldConsiderTrivia(trivia); + seenEndOfLineTrivia = seenEndOfLineTrivia || + (fixer.IsEndOfLine(trivia) || + (trivia.HasStructure && + trivia.GetStructure().DescendantTrivia().Any(t => fixer.IsEndOfLine(t)))); + + if (walkedPastDiagnosticSpan && seenEndOfLineTrivia) + { + break; + } + + index = getNextIndex(index); + } + + triviaAtIndex = index >= 0 && index < triviaList.Length ? + triviaList[index] : + default(SyntaxTrivia); + + return index; + } + + internal static SyntaxToken GetNewStartTokenWithAddedPragma(SyntaxToken startToken, TextSpan currentDiagnosticSpan, Diagnostic diagnostic, AbstractSuppressionCodeFixProvider fixer, Func formatNode, bool isRemoveSuppression = false) + { + var trivia = startToken.LeadingTrivia.ToImmutableArray(); + SyntaxTrivia insertAfterTrivia; + var index = GetPositionForPragmaInsertion(trivia, currentDiagnosticSpan, fixer, isStartToken: true, triviaAtIndex: out insertAfterTrivia); + index++; + + bool needsLeadingEOL; + if (index > 0) + { + needsLeadingEOL = !fixer.IsEndOfLine(insertAfterTrivia); + } + else if (startToken.FullSpan.Start == 0) + { + needsLeadingEOL = false; + } + else + { + needsLeadingEOL = true; + } + + var pragmaTrivia = !isRemoveSuppression ? + fixer.CreatePragmaDisableDirectiveTrivia(diagnostic, formatNode, needsLeadingEOL, needsTrailingEndOfLine: true) : + fixer.CreatePragmaRestoreDirectiveTrivia(diagnostic, formatNode, needsLeadingEOL, needsTrailingEndOfLine: true); + + return startToken.WithLeadingTrivia(trivia.InsertRange(index, pragmaTrivia)); + } + + internal static SyntaxToken GetNewEndTokenWithAddedPragma(SyntaxToken endToken, TextSpan currentDiagnosticSpan, Diagnostic diagnostic, AbstractSuppressionCodeFixProvider fixer, Func formatNode, bool isRemoveSuppression = false) + { + ImmutableArray trivia; + var isEOF = fixer.IsEndOfFileToken(endToken); + if (isEOF) + { + trivia = endToken.LeadingTrivia.ToImmutableArray(); + } + else + { + trivia = endToken.TrailingTrivia.ToImmutableArray(); + } + + SyntaxTrivia insertBeforeTrivia; + var index = GetPositionForPragmaInsertion(trivia, currentDiagnosticSpan, fixer, isStartToken: false, triviaAtIndex: out insertBeforeTrivia); + + bool needsTrailingEOL; + if (index < trivia.Length) + { + needsTrailingEOL = !fixer.IsEndOfLine(insertBeforeTrivia); + } + else if (isEOF) + { + needsTrailingEOL = false; + } + else + { + needsTrailingEOL = true; + } + + var pragmaTrivia = !isRemoveSuppression ? + fixer.CreatePragmaRestoreDirectiveTrivia(diagnostic, formatNode, needsLeadingEndOfLine: true, needsTrailingEndOfLine: needsTrailingEOL) : + fixer.CreatePragmaDisableDirectiveTrivia(diagnostic, formatNode, needsLeadingEndOfLine: true, needsTrailingEndOfLine: needsTrailingEOL); + + if (isEOF) + { + return endToken.WithLeadingTrivia(trivia.InsertRange(index, pragmaTrivia)); + } + else + { + return endToken.WithTrailingTrivia(trivia.InsertRange(index, pragmaTrivia)); + }; + } + + internal static void ResolveFixAllMergeConflictForPragmaAdd(List cumulativeChanges, int indexOfCurrentCumulativeChange, TextChange conflictingChange, bool isAddPragmaWarningSuppression) + { + // If there are multiple diagnostics with different IDs on the same line, we want to retain all the added pragmas. + var cumulativeChange = cumulativeChanges[indexOfCurrentCumulativeChange]; + var mergedChange = ResolveFixAllMergeConflictForPragmaAdd(cumulativeChange, conflictingChange, isAddPragmaWarningSuppression: false); + cumulativeChanges[indexOfCurrentCumulativeChange] = mergedChange; + } + + private static TextChange ResolveFixAllMergeConflictForPragmaAdd(TextChange cumulativeChange, TextChange conflictingChange, bool isAddPragmaWarningSuppression) + { + // If one of the change is a removal, just return the other one. + if (string.IsNullOrEmpty(cumulativeChange.NewText)) + { + return conflictingChange; + } + else if (string.IsNullOrEmpty(conflictingChange.NewText)) + { + return cumulativeChange; + } + + // We have 2 code actions trying to add a pragma directive at the same location. + // If these are different IDs, then the order doesn't really matter. + // However, if these are disable and enable directives with same ID, then order does matter. + // We won't to make sure that for add suppression case, the restore precedes the enable and for remove suppression case, it is vice versa. + // We get the right ordering by sorting the pragma directive text. + string newText = cumulativeChange.NewText + conflictingChange.NewText; + var conflictChangeLexicallySmaller = string.Compare(conflictingChange.NewText, cumulativeChange.NewText, StringComparison.OrdinalIgnoreCase) < 0; + if ((isAddPragmaWarningSuppression && !conflictChangeLexicallySmaller) || + (!isAddPragmaWarningSuppression && conflictChangeLexicallySmaller)) + { + newText = conflictingChange.NewText + cumulativeChange.NewText; + } + + var newSpan = new TextSpan(cumulativeChange.Span.Start, cumulativeChange.Span.Length); + return new TextChange(newSpan, newText); + } + } + } +} diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaWarningBatchFixAllProvider.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaWarningBatchFixAllProvider.cs index 79c7938ade590..595f929de8077 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaWarningBatchFixAllProvider.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaWarningBatchFixAllProvider.cs @@ -1,11 +1,14 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.CodeActions; +using Microsoft.CodeAnalysis.Text; +using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.CodeFixes.Suppression { @@ -22,22 +25,34 @@ public PragmaWarningBatchFixAllProvider(AbstractSuppressionCodeFixProvider suppr public override async Task AddDocumentFixesAsync(Document document, ImmutableArray diagnostics, Action addFix, FixAllContext fixAllContext) { - foreach (var diagnosticsForSpan in diagnostics.Where(d => d.Location.IsInSource).GroupBy(d => d.Location.SourceSpan)) + var pragmaActionsBuilder = ImmutableArray.CreateBuilder(); + var pragmaDiagnosticsBuilder = ImmutableArray.CreateBuilder(); + + foreach (var diagnostic in diagnostics.Where(d => d.Location.IsInSource && !d.IsSuppressed)) { - var span = diagnosticsForSpan.First().Location.SourceSpan; - var pragmaSuppressions = await _suppressionFixProvider.GetPragmaSuppressionsAsync(document, span, diagnosticsForSpan, fixAllContext.CancellationToken).ConfigureAwait(false); - foreach (var pragmaSuppression in pragmaSuppressions) + var span = diagnostic.Location.SourceSpan; + var pragmaSuppressions = await _suppressionFixProvider.GetPragmaSuppressionsAsync(document, span, SpecializedCollections.SingletonEnumerable(diagnostic), fixAllContext.CancellationToken).ConfigureAwait(false); + var pragmaSuppression = pragmaSuppressions.SingleOrDefault(); + if (pragmaSuppression != null) { if (fixAllContext is FixMultipleContext) { - addFix(pragmaSuppression.CloneForFixMultipleContext()); - } - else - { - addFix(pragmaSuppression); + pragmaSuppression = pragmaSuppression.CloneForFixMultipleContext(); } + + pragmaActionsBuilder.Add(pragmaSuppression); + pragmaDiagnosticsBuilder.Add(diagnostic); } } + + // Get the pragma batch fix. + if (pragmaActionsBuilder.Count > 0) + { + var pragmaBatchFix = PragmaBatchFixHelpers.CreateBatchPragmaFix(_suppressionFixProvider, document, + pragmaActionsBuilder.ToImmutable(), pragmaDiagnosticsBuilder.ToImmutable(), fixAllContext); + + addFix(pragmaBatchFix); + } } } } diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaWarningCodeAction.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaWarningCodeAction.cs index 0b3902e60621d..69f493fb197ea 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaWarningCodeAction.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaWarningCodeAction.cs @@ -1,46 +1,37 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System; -using System.Collections.Immutable; -using System.Linq; using System.Threading; using System.Threading.Tasks; -using Microsoft.CodeAnalysis.CodeActions; +using Microsoft.CodeAnalysis.Formatting; namespace Microsoft.CodeAnalysis.CodeFixes.Suppression { internal abstract partial class AbstractSuppressionCodeFixProvider : ISuppressionFixProvider { - internal sealed class PragmaWarningCodeAction : AbstractSuppressionCodeAction + internal sealed class PragmaWarningCodeAction : AbstractSuppressionCodeAction, IPragmaBasedCodeAction { - private readonly SyntaxToken _startToken; - private readonly SyntaxToken _endToken; - private readonly SyntaxNode _nodeWithTokens; + private readonly SuppressionTargetInfo _suppressionTargetInfo; private readonly Document _document; private readonly Diagnostic _diagnostic; private readonly bool _forFixMultipleContext; - public PragmaWarningCodeAction( - AbstractSuppressionCodeFixProvider fixer, - SyntaxToken startToken, - SyntaxToken endToken, - SyntaxNode nodeWithTokens, + internal PragmaWarningCodeAction( + SuppressionTargetInfo suppressionTargetInfo, Document document, Diagnostic diagnostic, + AbstractSuppressionCodeFixProvider fixer, bool forFixMultipleContext = false) - : base (fixer, title: FeaturesResources.SuppressWithPragma) + : base(fixer, title: FeaturesResources.SuppressWithPragma) { - _startToken = startToken; - _endToken = endToken; - _nodeWithTokens = nodeWithTokens; + _suppressionTargetInfo = suppressionTargetInfo; _document = document; _diagnostic = diagnostic; _forFixMultipleContext = forFixMultipleContext; } - + public PragmaWarningCodeAction CloneForFixMultipleContext() { - return new PragmaWarningCodeAction(Fixer, _startToken, _endToken, _nodeWithTokens, _document, _diagnostic, forFixMultipleContext: true); + return new PragmaWarningCodeAction(_suppressionTargetInfo, _document, _diagnostic, Fixer, forFixMultipleContext: true); } protected override string DiagnosticIdForEquivalenceKey => @@ -48,121 +39,27 @@ public PragmaWarningCodeAction CloneForFixMultipleContext() protected async override Task GetChangedDocumentAsync(CancellationToken cancellationToken) { - var startAndEndTokenAreTheSame = _startToken == _endToken; - SyntaxToken newStartToken = GetNewStartToken(_startToken, _diagnostic, Fixer); - - SyntaxToken newEndToken = _endToken; - if (startAndEndTokenAreTheSame) - { - newEndToken = newStartToken; - } - - newEndToken = GetNewEndToken(newEndToken, _diagnostic, Fixer); - - SyntaxNode newNode; - if (startAndEndTokenAreTheSame) - { - newNode = _nodeWithTokens.ReplaceToken(_startToken, newEndToken); - } - else - { - newNode = _nodeWithTokens.ReplaceTokens(new[] { _startToken, _endToken }, (o, n) => o == _startToken ? newStartToken : newEndToken); - } - - var root = await _document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false); - var newRoot = root.ReplaceNode(_nodeWithTokens, newNode); - return _document.WithSyntaxRoot(newRoot); + return await GetChangedDocumentAsync(includeStartTokenChange: true, includeEndTokenChange: true, cancellationToken: cancellationToken).ConfigureAwait(false); } - private static SyntaxToken GetNewStartToken(SyntaxToken startToken, Diagnostic diagnostic, AbstractSuppressionCodeFixProvider fixer) + public async Task GetChangedDocumentAsync(bool includeStartTokenChange, bool includeEndTokenChange, CancellationToken cancellationToken) { - var trivia = startToken.LeadingTrivia.ToImmutableArray(); - - // Insert the #pragma disable directive after all leading new line trivia but before first trivia of any other kind. - int index; - SyntaxTrivia firstNonEOLTrivia = trivia.FirstOrDefault(t => !fixer.IsEndOfLine(t)); - if (firstNonEOLTrivia == default(SyntaxTrivia)) - { - index = trivia.Length; - } - else - { - index = trivia.IndexOf(firstNonEOLTrivia); - } - - bool needsLeadingEOL; - if (index > 0) - { - needsLeadingEOL = !fixer.IsEndOfLine(trivia[index - 1]); - } - else if (startToken.FullSpan.Start == 0) - { - needsLeadingEOL = false; - } - else - { - needsLeadingEOL = true; - } - - var pragmaWarningTrivia = fixer.CreatePragmaDisableDirectiveTrivia(diagnostic, needsLeadingEOL); - - return startToken.WithLeadingTrivia(trivia.InsertRange(index, pragmaWarningTrivia)); + return await PragmaHelpers.GetChangeDocumentWithPragmaAdjustedAsync( + _document, + _diagnostic.Location.SourceSpan, + _suppressionTargetInfo, + (startToken, currentDiagnosticSpan) => includeStartTokenChange ? PragmaHelpers.GetNewStartTokenWithAddedPragma(startToken, currentDiagnosticSpan, _diagnostic, Fixer, FormatNode) : startToken, + (endToken, currentDiagnosticSpan) => includeEndTokenChange ? PragmaHelpers.GetNewEndTokenWithAddedPragma(endToken, currentDiagnosticSpan, _diagnostic, Fixer, FormatNode) : endToken, + cancellationToken).ConfigureAwait(false); } - private static SyntaxToken GetNewEndToken(SyntaxToken endToken, Diagnostic diagnostic, AbstractSuppressionCodeFixProvider fixer) - { - ImmutableArray trivia; - var isEOF = fixer.IsEndOfFileToken(endToken); - if (isEOF) - { - trivia = endToken.LeadingTrivia.ToImmutableArray(); - } - else - { - trivia = endToken.TrailingTrivia.ToImmutableArray(); - } - - SyntaxTrivia lastNonEOLTrivia = trivia.LastOrDefault(t => !fixer.IsEndOfLine(t)); - - // Insert the #pragma restore directive after the last trailing trivia that is not a new line trivia. - int index; - if (lastNonEOLTrivia == default(SyntaxTrivia)) - { - index = 0; - } - else - { - index = trivia.IndexOf(lastNonEOLTrivia) + 1; - } + public SyntaxToken StartToken_TestOnly => _suppressionTargetInfo.StartToken; + public SyntaxToken EndToken_TestOnly => _suppressionTargetInfo.EndToken; - bool needsTrailingEOL; - if (index < trivia.Length) - { - needsTrailingEOL = !fixer.IsEndOfLine(trivia[index]); - } - else if (isEOF) - { - needsTrailingEOL = false; - } - else - { - needsTrailingEOL = true; - } - - var pragmaRestoreTrivia = fixer.CreatePragmaRestoreDirectiveTrivia(diagnostic, needsTrailingEOL); - - if (isEOF) - { - return endToken.WithLeadingTrivia(trivia.InsertRange(index, pragmaRestoreTrivia)); - } - else - { - return endToken.WithTrailingTrivia(trivia.InsertRange(index, pragmaRestoreTrivia)); - } + private SyntaxNode FormatNode(SyntaxNode node) + { + return Formatter.Format(node, _document.Project.Solution.Workspace); } - - public SyntaxToken StartToken_TestOnly => _startToken; - public SyntaxToken EndToken_TestOnly => _endToken; } } } diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.BatchFixer.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.BatchFixer.cs new file mode 100644 index 0000000000000..c8ad7a7ab2323 --- /dev/null +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.BatchFixer.cs @@ -0,0 +1,144 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.CodeAnalysis.CodeActions; +using Roslyn.Utilities; + +namespace Microsoft.CodeAnalysis.CodeFixes.Suppression +{ + internal abstract partial class AbstractSuppressionCodeFixProvider : ISuppressionFixProvider + { + internal abstract partial class RemoveSuppressionCodeAction + { + public static BatchFixAllProvider GetBatchFixer(AbstractSuppressionCodeFixProvider suppressionFixProvider) + { + return new BatchFixer(suppressionFixProvider); + } + + private sealed class BatchFixer : BatchFixAllProvider + { + private readonly AbstractSuppressionCodeFixProvider _suppressionFixProvider; + + public BatchFixer(AbstractSuppressionCodeFixProvider suppressionFixProvider) + { + _suppressionFixProvider = suppressionFixProvider; + } + + public override async Task AddDocumentFixesAsync(Document document, ImmutableArray diagnostics, Action addFix, FixAllContext fixAllContext) + { + // Batch all the pragma remove suppression fixes by executing them sequentially for the document. + var pragmaActionsBuilder = ImmutableArray.CreateBuilder(); + var pragmaDiagnosticsBuilder = ImmutableArray.CreateBuilder(); + foreach (var diagnostic in diagnostics.Where(d => d.Location.IsInSource && d.IsSuppressed)) + { + var span = diagnostic.Location.SourceSpan; + var removeSuppressionFixes = await _suppressionFixProvider.GetSuppressionsAsync(document, span, SpecializedCollections.SingletonEnumerable(diagnostic), fixAllContext.CancellationToken).ConfigureAwait(false); + var removeSuppressionFix = removeSuppressionFixes.SingleOrDefault(); + if (removeSuppressionFix != null) + { + var codeAction = removeSuppressionFix.Action as RemoveSuppressionCodeAction; + if (codeAction != null) + { + if (fixAllContext is FixMultipleContext) + { + codeAction = codeAction.CloneForFixMultipleContext(); + } + + var pragmaRemoveAction = codeAction as PragmaRemoveAction; + if (pragmaRemoveAction != null) + { + pragmaActionsBuilder.Add(pragmaRemoveAction); + pragmaDiagnosticsBuilder.Add(diagnostic); + } + else + { + addFix(codeAction); + } + } + } + } + + // Get the pragma batch fix. + if (pragmaActionsBuilder.Count > 0) + { + var pragmaBatchFix = PragmaBatchFixHelpers.CreateBatchPragmaFix(_suppressionFixProvider, document, + pragmaActionsBuilder.ToImmutable(), pragmaDiagnosticsBuilder.ToImmutable(), fixAllContext); + + addFix(pragmaBatchFix); + } + } + + public override async Task TryGetMergedFixAsync(IEnumerable batchOfFixes, FixAllContext fixAllContext) + { + // Batch all the attribute removal fixes into a single fix. + // Pragma removal fixes have already been batch for each document AddDocumentFixes method. + // This ensures no merge conflicts in merging all fixes by our base implementation. + + var cancellationToken = fixAllContext.CancellationToken; + var oldSolution = fixAllContext.Document.Project.Solution; + var currentSolution = oldSolution; + + var attributeRemoveFixes = new List(); + var newBatchOfFixes = new List(); + foreach (var codeAction in batchOfFixes) + { + var attributeRemoveFix = codeAction as AttributeRemoveAction; + if (attributeRemoveFix != null) + { + attributeRemoveFixes.Add(attributeRemoveFix); + } + else + { + newBatchOfFixes.Add(codeAction); + } + } + + if (attributeRemoveFixes.Count > 0) + { + // Batch all of attribute removal fixes. + foreach (var removeSuppressionFixesForTree in attributeRemoveFixes.GroupBy(fix => fix.SyntaxTreeToModify)) + { + var tree = removeSuppressionFixesForTree.Key; + + var attributeRemoveFixesForTree = removeSuppressionFixesForTree.OfType().ToImmutableArray(); + var attributesToRemove = await GetAttributeNodesToFixAsync(attributeRemoveFixesForTree, cancellationToken).ConfigureAwait(false); + var document = oldSolution.GetDocument(tree); + var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false); + var newRoot = root.RemoveNodes(attributesToRemove, SyntaxRemoveOptions.KeepLeadingTrivia); + currentSolution = currentSolution.WithDocumentSyntaxRoot(document.Id, newRoot); + } + + // This is a temporary generated code action, which doesn't need telemetry, hence suppressing RS0005. +#pragma warning disable RS0005 // Do not use generic CodeAction.Create to create CodeAction + var batchAttributeRemoveFix = Create( + attributeRemoveFixes.First().Title, + createChangedSolution: ct => Task.FromResult(currentSolution), + equivalenceKey: fixAllContext.CodeActionEquivalenceKey); +#pragma warning restore RS0005 // Do not use generic CodeAction.Create to create CodeAction + + newBatchOfFixes.Insert(0, batchAttributeRemoveFix); + } + + return await base.TryGetMergedFixAsync(newBatchOfFixes, fixAllContext).ConfigureAwait(false); + } + + private static async Task> GetAttributeNodesToFixAsync(ImmutableArray attributeRemoveFixes, CancellationToken cancellationToken) + { + var builder = ImmutableArray.CreateBuilder(attributeRemoveFixes.Length); + foreach (var attributeRemoveFix in attributeRemoveFixes) + { + var attributeToRemove = await attributeRemoveFix.GetAttributeToRemoveAsync(cancellationToken).ConfigureAwait(false); + builder.Add(attributeToRemove); + } + + return builder.ToImmutable(); + } + } + } + } +} \ No newline at end of file diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.cs new file mode 100644 index 0000000000000..ec74fa12de965 --- /dev/null +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.cs @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading; +using System.Threading.Tasks; + +namespace Microsoft.CodeAnalysis.CodeFixes.Suppression +{ + internal abstract partial class AbstractSuppressionCodeFixProvider : ISuppressionFixProvider + { + internal abstract partial class RemoveSuppressionCodeAction : AbstractSuppressionCodeAction + { + private readonly Document _document; + private readonly Diagnostic _diagnostic; + private readonly bool _forFixMultipleContext; + + public static async Task CreateAsync( + SuppressionTargetInfo suppressionTargetInfo, + Document document, + Diagnostic diagnostic, + AbstractSuppressionCodeFixProvider fixer, + CancellationToken cancellationToken) + { + var compilation = await document.Project.GetCompilationAsync(cancellationToken).ConfigureAwait(false); + var attribute = diagnostic.GetSuppressionInfo(compilation).Attribute; + if (attribute != null) + { + return AttributeRemoveAction.Create(attribute, document, diagnostic, fixer); + } + else + { + return PragmaRemoveAction.Create(suppressionTargetInfo, document, diagnostic, fixer); + } + } + + protected RemoveSuppressionCodeAction( + Document document, + Diagnostic diagnostic, + AbstractSuppressionCodeFixProvider fixer, + bool forFixMultipleContext = false) + : base (fixer, title: string.Format(FeaturesResources.RemoveSuppressionForId, diagnostic.Id)) + { + _document = document; + _diagnostic = diagnostic; + _forFixMultipleContext = forFixMultipleContext; + } + + public abstract RemoveSuppressionCodeAction CloneForFixMultipleContext(); + public abstract SyntaxTree SyntaxTreeToModify { get; } + + public override string EquivalenceKey => FeaturesResources.RemoveSuppressionEquivalenceKeyPrefix + DiagnosticIdForEquivalenceKey; + protected override string DiagnosticIdForEquivalenceKey => + _forFixMultipleContext ? string.Empty : _diagnostic.Id; + } + } +} diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Attribute.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Attribute.cs new file mode 100644 index 0000000000000..5baea72396044 --- /dev/null +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Attribute.cs @@ -0,0 +1,80 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading; +using System.Threading.Tasks; +using Microsoft.CodeAnalysis.Editing; + +namespace Microsoft.CodeAnalysis.CodeFixes.Suppression +{ + internal abstract partial class AbstractSuppressionCodeFixProvider : ISuppressionFixProvider + { + internal abstract partial class RemoveSuppressionCodeAction + { + private sealed class AttributeRemoveAction : RemoveSuppressionCodeAction + { + private readonly AttributeData _attribute; + + public static AttributeRemoveAction Create( + AttributeData attribute, + Document document, + Diagnostic diagnostic, + AbstractSuppressionCodeFixProvider fixer) + { + return new AttributeRemoveAction(attribute, document, diagnostic, fixer); + } + + private AttributeRemoveAction( + AttributeData attribute, + Document document, + Diagnostic diagnostic, + AbstractSuppressionCodeFixProvider fixer, + bool forFixMultipleContext = false) + : base(document, diagnostic, fixer, forFixMultipleContext) + { + _attribute = attribute; + } + + public override RemoveSuppressionCodeAction CloneForFixMultipleContext() + { + return new AttributeRemoveAction(_attribute, _document, _diagnostic, Fixer, forFixMultipleContext: true); + } + + public override SyntaxTree SyntaxTreeToModify => _attribute.ApplicationSyntaxReference.SyntaxTree; + + public async Task GetAttributeToRemoveAsync(CancellationToken cancellationToken) + { + var attributeNode = await _attribute.ApplicationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false); + return Fixer.IsSingleAttributeInAttributeList(attributeNode) ? + attributeNode.Parent : + attributeNode; + } + + protected override async Task GetChangedDocumentAsync(CancellationToken cancellationToken) + { + var attributeNode = await GetAttributeToRemoveAsync(cancellationToken).ConfigureAwait(false); + var document = GetDocumentWithAttribute(attributeNode); + if (document == null) + { + return _document; + } + + var editor = await DocumentEditor.CreateAsync(document, cancellationToken).ConfigureAwait(false); + editor.RemoveNode(attributeNode); + var newProject = editor.GetChangedDocument().Project; + return newProject.GetDocument(_document.Id); + } + + private Document GetDocumentWithAttribute(SyntaxNode attributeNode) + { + var tree = attributeNode.SyntaxTree; + if (_document.FilePath == tree.FilePath) + { + return _document; + } + + return _document.Project.GetDocument(tree); + } + } + } + } +} \ No newline at end of file diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Pragma.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Pragma.cs new file mode 100644 index 0000000000000..3d0a96d1fa036 --- /dev/null +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Pragma.cs @@ -0,0 +1,293 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Formatting; +using Microsoft.CodeAnalysis.Text; +using Roslyn.Utilities; + +namespace Microsoft.CodeAnalysis.CodeFixes.Suppression +{ + internal abstract partial class AbstractSuppressionCodeFixProvider : ISuppressionFixProvider + { + internal abstract partial class RemoveSuppressionCodeAction + { + private class PragmaRemoveAction : RemoveSuppressionCodeAction, IPragmaBasedCodeAction + { + private readonly SuppressionTargetInfo _suppressionTargetInfo; + + public static PragmaRemoveAction Create( + SuppressionTargetInfo suppressionTargetInfo, + Document document, + Diagnostic diagnostic, + AbstractSuppressionCodeFixProvider fixer) + { + // We need to normalize the leading trivia on start token to account for + // the trailing trivia on its previous token (and similarly normalize trailing trivia for end token). + NormalizeTriviaOnTokens(fixer, ref document, ref suppressionTargetInfo); + + return new PragmaRemoveAction(suppressionTargetInfo, document, diagnostic, fixer); + } + + private PragmaRemoveAction( + SuppressionTargetInfo suppressionTargetInfo, + Document document, + Diagnostic diagnostic, + AbstractSuppressionCodeFixProvider fixer, + bool forFixMultipleContext = false) + : base(document, diagnostic, fixer, forFixMultipleContext) + { + _suppressionTargetInfo = suppressionTargetInfo; + } + + public override RemoveSuppressionCodeAction CloneForFixMultipleContext() + { + return new PragmaRemoveAction(_suppressionTargetInfo, _document, _diagnostic, Fixer, forFixMultipleContext: true); + } + + public override SyntaxTree SyntaxTreeToModify => _suppressionTargetInfo.StartToken.SyntaxTree; + + protected async override Task GetChangedDocumentAsync(CancellationToken cancellationToken) + { + return await GetChangedDocumentAsync(includeStartTokenChange: true, includeEndTokenChange: true, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + public async Task GetChangedDocumentAsync(bool includeStartTokenChange, bool includeEndTokenChange, CancellationToken cancellationToken) + { + bool add = false; + bool toggle = false; + + int indexOfLeadingPragmaDisableToRemove = -1, indexOfTrailingPragmaEnableToRemove = -1; + if (CanRemovePragmaTrivia(_suppressionTargetInfo.StartToken, _diagnostic, Fixer, isStartToken: true, indexOfTriviaToRemove: out indexOfLeadingPragmaDisableToRemove) && + CanRemovePragmaTrivia(_suppressionTargetInfo.EndToken, _diagnostic, Fixer, isStartToken: false, indexOfTriviaToRemove: out indexOfTrailingPragmaEnableToRemove)) + { + // Verify if there is no other trivia before the start token would again cause this diagnostic to be suppressed. + // If invalidated, then we just toggle existing pragma enable and disable directives before and start of the line. + // If not, then we just remove the existing pragma trivia surrounding the line. + toggle = await IsDiagnosticSuppressedBeforeLeadingPragmaAsync(indexOfLeadingPragmaDisableToRemove, cancellationToken).ConfigureAwait(false); + } + else + { + // Otherwise, just add a pragma enable before the start token and a pragma restore after it. + add = true; + } + + Func getNewStartToken = (startToken, currentDiagnosticSpan) => includeStartTokenChange ? + GetNewTokenWithModifiedPragma(startToken, currentDiagnosticSpan, add, toggle, indexOfLeadingPragmaDisableToRemove, isStartToken: true) : + startToken; + + Func getNewEndToken = (endToken, currentDiagnosticSpan) => includeEndTokenChange ? + GetNewTokenWithModifiedPragma(endToken, currentDiagnosticSpan, add, toggle, indexOfTrailingPragmaEnableToRemove, isStartToken: false) : + endToken; + + return await PragmaHelpers.GetChangeDocumentWithPragmaAdjustedAsync( + _document, + _diagnostic.Location.SourceSpan, + _suppressionTargetInfo, + getNewStartToken, + getNewEndToken, + cancellationToken).ConfigureAwait(false); + } + + private static SyntaxTriviaList GetTriviaListForSuppression(SyntaxToken token, bool isStartToken, AbstractSuppressionCodeFixProvider fixer) + { + return isStartToken || fixer.IsEndOfFileToken(token) ? + token.LeadingTrivia : + token.TrailingTrivia; + } + + private static SyntaxToken UpdateTriviaList(SyntaxToken token, bool isStartToken, SyntaxTriviaList triviaList, AbstractSuppressionCodeFixProvider fixer) + { + return isStartToken || fixer.IsEndOfFileToken(token) ? + token.WithLeadingTrivia(triviaList) : + token.WithTrailingTrivia(triviaList); + } + + private static bool CanRemovePragmaTrivia(SyntaxToken token, Diagnostic diagnostic, AbstractSuppressionCodeFixProvider fixer, bool isStartToken, out int indexOfTriviaToRemove) + { + indexOfTriviaToRemove = -1; + + var triviaList = GetTriviaListForSuppression(token, isStartToken, fixer); + + var diagnosticSpan = diagnostic.Location.SourceSpan; + Func shouldIncludeTrivia = t => isStartToken ? t.FullSpan.End <= diagnosticSpan.Start : t.FullSpan.Start >= diagnosticSpan.End; + var filteredTriviaList = triviaList.Where(shouldIncludeTrivia); + if (isStartToken) + { + // Walk bottom up for leading trivia. + filteredTriviaList = filteredTriviaList.Reverse(); + } + + foreach (var trivia in filteredTriviaList) + { + bool isEnableDirective, hasMultipleIds; + if (fixer.IsAnyPragmaDirectiveForId(trivia, diagnostic.Id, out isEnableDirective, out hasMultipleIds)) + { + if (hasMultipleIds) + { + // Handle only simple cases where we have a single pragma directive with single ID matching ours in the trivia. + return false; + } + + // We want to look for leading disable directive and trailing enable directive. + if ((isStartToken && !isEnableDirective) || + (!isStartToken && isEnableDirective)) + { + indexOfTriviaToRemove = triviaList.IndexOf(trivia); + return true; + } + + return false; + } + } + + return false; + } + + private SyntaxToken GetNewTokenWithModifiedPragma(SyntaxToken token, TextSpan currentDiagnosticSpan, bool add, bool toggle, int indexOfTriviaToRemoveOrToggle, bool isStartToken) + { + return add ? + GetNewTokenWithAddedPragma(token, currentDiagnosticSpan, isStartToken) : + GetNewTokenWithRemovedOrToggledPragma(token, indexOfTriviaToRemoveOrToggle, isStartToken, toggle); + } + + private SyntaxToken GetNewTokenWithAddedPragma(SyntaxToken token, TextSpan currentDiagnosticSpan, bool isStartToken) + { + if (isStartToken) + { + return PragmaHelpers.GetNewStartTokenWithAddedPragma(token, currentDiagnosticSpan, _diagnostic, Fixer, FormatNode, isRemoveSuppression: true); + } + else + { + return PragmaHelpers.GetNewEndTokenWithAddedPragma(token, currentDiagnosticSpan, _diagnostic, Fixer, FormatNode, isRemoveSuppression: true); + } + } + + private SyntaxToken GetNewTokenWithRemovedOrToggledPragma(SyntaxToken token, int indexOfTriviaToRemoveOrToggle, bool isStartToken, bool toggle) + { + if (isStartToken) + { + return GetNewTokenWithPragmaUnsuppress(token, indexOfTriviaToRemoveOrToggle, _diagnostic, Fixer, isStartToken, toggle); + } + else + { + return GetNewTokenWithPragmaUnsuppress(token, indexOfTriviaToRemoveOrToggle, _diagnostic, Fixer, isStartToken, toggle); + } + } + + private static SyntaxToken GetNewTokenWithPragmaUnsuppress(SyntaxToken token, int indexOfTriviaToRemoveOrToggle, Diagnostic diagnostic, AbstractSuppressionCodeFixProvider fixer, bool isStartToken, bool toggle) + { + Contract.ThrowIfFalse(indexOfTriviaToRemoveOrToggle >= 0); + + var triviaList = GetTriviaListForSuppression(token, isStartToken, fixer); + + if (toggle) + { + var triviaToToggle = triviaList.ElementAt(indexOfTriviaToRemoveOrToggle); + Contract.ThrowIfFalse(triviaToToggle != default(SyntaxTrivia)); + var toggledTrivia = fixer.TogglePragmaDirective(triviaToToggle); + triviaList = triviaList.Replace(triviaToToggle, toggledTrivia); + } + else + { + triviaList = triviaList.RemoveAt(indexOfTriviaToRemoveOrToggle); + } + + return UpdateTriviaList(token, isStartToken, triviaList, fixer); + } + + private async Task IsDiagnosticSuppressedBeforeLeadingPragmaAsync(int indexOfPragma, CancellationToken cancellationToken) + { + var model = await _document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false); + var tree = model.SyntaxTree; + + // get the warning state of this diagnostic ID at the start of the pragma + var trivia = _suppressionTargetInfo.StartToken.LeadingTrivia.ElementAt(indexOfPragma); + var spanToCheck = new TextSpan( + start: Math.Max(0, trivia.Span.Start - 1), + length: 1); + var locationToCheck = Location.Create(tree, spanToCheck); + var dummyDiagnosticWithLocationToCheck = Diagnostic.Create(_diagnostic.Descriptor, locationToCheck); + var effectiveDiagnostic = CompilationWithAnalyzers.GetEffectiveDiagnostics(new[] { dummyDiagnosticWithLocationToCheck }, model.Compilation).FirstOrDefault(); + return effectiveDiagnostic == null || effectiveDiagnostic.IsSuppressed; + } + + public SyntaxToken StartToken_TestOnly => _suppressionTargetInfo.StartToken; + public SyntaxToken EndToken_TestOnly => _suppressionTargetInfo.EndToken; + + private SyntaxNode FormatNode(SyntaxNode node) + { + return Formatter.Format(node, _document.Project.Solution.Workspace); + } + + private static void NormalizeTriviaOnTokens(AbstractSuppressionCodeFixProvider fixer, ref Document document, ref SuppressionTargetInfo suppressionTargetInfo) + { + var startToken = suppressionTargetInfo.StartToken; + var endToken = suppressionTargetInfo.EndToken; + var nodeWithTokens = suppressionTargetInfo.NodeWithTokens; + var startAndEndTokensAreSame = startToken == endToken; + + var previousOfStart = startToken.GetPreviousToken(); + var nextOfEnd = endToken.GetNextToken(); + if (!previousOfStart.HasTrailingTrivia && !nextOfEnd.HasLeadingTrivia) + { + return; + } + + var root = nodeWithTokens.SyntaxTree.GetRoot(); + var subtreeRoot = root.FindNode(new TextSpan(previousOfStart.FullSpan.Start, nextOfEnd.FullSpan.End - previousOfStart.FullSpan.Start)); + + var currentStartToken = startToken; + var currentEndToken = endToken; + var newStartToken = startToken.WithLeadingTrivia(previousOfStart.TrailingTrivia.Concat(startToken.LeadingTrivia)); + + SyntaxToken newEndToken = currentEndToken; + if (startAndEndTokensAreSame) + { + newEndToken = newStartToken; + } + + newEndToken = newEndToken.WithTrailingTrivia(endToken.TrailingTrivia.Concat(nextOfEnd.LeadingTrivia)); + + var newPreviousOfStart = previousOfStart.WithTrailingTrivia(); + var newNextOfEnd = nextOfEnd.WithLeadingTrivia(); + + var newSubtreeRoot = subtreeRoot.ReplaceTokens(new[] { startToken, previousOfStart, endToken, nextOfEnd }, + (o, n) => + { + if (o == currentStartToken) + { + return newStartToken; + } + else if (o == previousOfStart) + { + return newPreviousOfStart; + } + else if (o == currentEndToken) + { + return newEndToken; + } + else if (o == nextOfEnd) + { + return newNextOfEnd; + } + else + { + return n; + } + }); + + root = root.ReplaceNode(subtreeRoot, newSubtreeRoot); + document = document.WithSyntaxRoot(root); + suppressionTargetInfo.StartToken = root.FindToken(startToken.SpanStart); + suppressionTargetInfo.EndToken = root.FindToken(endToken.SpanStart); + suppressionTargetInfo.NodeWithTokens = fixer.GetNodeWithTokens(suppressionTargetInfo.StartToken, suppressionTargetInfo.EndToken, root); + } + } + } + } +} \ No newline at end of file diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.cs index 1968dd42e3049..1805696480cd3 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.cs @@ -1,12 +1,10 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.Collections.Generic; -using System.Collections.Immutable; -using System.Globalization; using System.Linq; using System.Threading; using System.Threading.Tasks; -using Microsoft.CodeAnalysis.CodeActions; using Microsoft.CodeAnalysis.Diagnostics; using Microsoft.CodeAnalysis.LanguageServices; using Microsoft.CodeAnalysis.Shared.Extensions; @@ -36,13 +34,13 @@ public FixAllProvider GetFixAllProvider() return SuppressionFixAllProvider.Instance; } - public bool CanBeSuppressed(Diagnostic diagnostic) + public bool CanBeSuppressedOrUnsuppressed(Diagnostic diagnostic) { - return SuppressionHelpers.CanBeSuppressed(diagnostic); + return SuppressionHelpers.CanBeSuppressed(diagnostic) || SuppressionHelpers.CanBeUnsuppressed(diagnostic); } - protected abstract SyntaxTriviaList CreatePragmaDisableDirectiveTrivia(Diagnostic diagnostic, bool needsLeadingEndOfLine); - protected abstract SyntaxTriviaList CreatePragmaRestoreDirectiveTrivia(Diagnostic diagnostic, bool needsTrailingEndOfLine); + protected abstract SyntaxTriviaList CreatePragmaDisableDirectiveTrivia(Diagnostic diagnostic, Func formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine); + protected abstract SyntaxTriviaList CreatePragmaRestoreDirectiveTrivia(Diagnostic diagnostic, Func formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine); protected abstract SyntaxNode AddGlobalSuppressMessageAttribute(SyntaxNode newRoot, ISymbol targetSymbol, Diagnostic diagnostic); @@ -51,6 +49,9 @@ public bool CanBeSuppressed(Diagnostic diagnostic) protected abstract bool IsAttributeListWithAssemblyAttributes(SyntaxNode node); protected abstract bool IsEndOfLine(SyntaxTrivia trivia); protected abstract bool IsEndOfFileToken(SyntaxToken token); + protected abstract bool IsSingleAttributeInAttributeList(SyntaxNode attribute); + protected abstract bool IsAnyPragmaDirectiveForId(SyntaxTrivia trivia, string id, out bool enableDirective, out bool hasMultipleIds); + protected abstract SyntaxTrivia TogglePragmaDirective(SyntaxTrivia trivia); protected string GlobalSuppressionsFileHeaderComment { @@ -72,19 +73,19 @@ protected virtual SyntaxToken GetAdjustedTokenForPragmaRestore(SyntaxToken token public Task> GetSuppressionsAsync(Document document, TextSpan span, IEnumerable diagnostics, CancellationToken cancellationToken) { - return GetSuppressionsAsync(document, span, diagnostics, skipSuppressMessage: false, cancellationToken: cancellationToken); + return GetSuppressionsAsync(document, span, diagnostics, skipSuppressMessage: false, skipUnsuppress: false, cancellationToken: cancellationToken); } internal async Task> GetPragmaSuppressionsAsync(Document document, TextSpan span, IEnumerable diagnostics, CancellationToken cancellationToken) { - var codeFixes = await GetSuppressionsAsync(document, span, diagnostics, skipSuppressMessage: true, cancellationToken: cancellationToken).ConfigureAwait(false); + var codeFixes = await GetSuppressionsAsync(document, span, diagnostics, skipSuppressMessage: true, skipUnsuppress: true, cancellationToken: cancellationToken).ConfigureAwait(false); return codeFixes.SelectMany(fix => fix.Action.GetCodeActions()).OfType(); } - private async Task> GetSuppressionsAsync(Document document, TextSpan span, IEnumerable diagnostics, bool skipSuppressMessage, CancellationToken cancellationToken) + private async Task> GetSuppressionsAsync(Document document, TextSpan span, IEnumerable diagnostics, bool skipSuppressMessage, bool skipUnsuppress, CancellationToken cancellationToken) { - // We only care about diagnostics that can be suppressed. - diagnostics = diagnostics.Where(CanBeSuppressed); + // We only care about diagnostics that can be suppressed/unsuppressed. + diagnostics = diagnostics.Where(CanBeSuppressedOrUnsuppressed); if (diagnostics.IsEmpty()) { return SpecializedCollections.EmptyEnumerable(); @@ -106,25 +107,33 @@ private async Task> GetSuppressionsAsync(Document document, var result = new List(); foreach (var diagnostic in diagnostics) { - var nestedActions = new List(); + if (!diagnostic.IsSuppressed) + { + var nestedActions = new List(); + + // pragma warning disable. + nestedActions.Add(new PragmaWarningCodeAction(suppressionTargetInfo, document, diagnostic, this)); - // pragma warning disable. - nestedActions.Add(new PragmaWarningCodeAction(this, suppressionTargetInfo.StartToken, suppressionTargetInfo.EndToken, suppressionTargetInfo.NodeWithTokens, document, diagnostic)); + // SuppressMessageAttribute suppression is not supported for compiler diagnostics. + if (!skipSuppressMessage && !SuppressionHelpers.IsCompilerDiagnostic(diagnostic)) + { + // global assembly-level suppress message attribute. + nestedActions.Add(new GlobalSuppressMessageCodeAction(suppressionTargetInfo.TargetSymbol, document.Project, diagnostic, this)); + } - // SuppressMessageAttribute suppression is not supported for compiler diagnostics. - if (!skipSuppressMessage && !SuppressionHelpers.IsCompilerDiagnostic(diagnostic)) + result.Add(new CodeFix(new SuppressionCodeAction(diagnostic, nestedActions), diagnostic)); + } + else if (!skipUnsuppress) { - // global assembly-level suppress message attribute. - nestedActions.Add(new GlobalSuppressMessageCodeAction(this, suppressionTargetInfo.TargetSymbol, document.Project, diagnostic)); + var codeAcion = await RemoveSuppressionCodeAction.CreateAsync(suppressionTargetInfo, document, diagnostic, this, cancellationToken).ConfigureAwait(false); + result.Add(new CodeFix(codeAcion, diagnostic)); } - - result.Add(new CodeFix(new SuppressionCodeAction(diagnostic, nestedActions), diagnostic)); } return result; } - private class SuppressionTargetInfo + internal class SuppressionTargetInfo { public ISymbol TargetSymbol { get; set; } public SyntaxToken StartToken { get; set; } @@ -165,15 +174,7 @@ private async Task GetSuppressionTargetInfoAsync(Document var endToken = root.FindToken(lineAtPos.End); endToken = GetAdjustedTokenForPragmaRestore(endToken, root, lines, indexOfLine); - SyntaxNode nodeWithTokens = null; - if (IsEndOfFileToken(endToken)) - { - nodeWithTokens = root; - } - else - { - nodeWithTokens = startToken.GetCommonRoot(endToken); - } + var nodeWithTokens = GetNodeWithTokens(startToken, endToken, root); var semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false); var syntaxFacts = document.GetLanguageService(); @@ -229,6 +230,18 @@ private async Task GetSuppressionTargetInfoAsync(Document return new SuppressionTargetInfo() { TargetSymbol = targetSymbol, NodeWithTokens = nodeWithTokens, StartToken = startToken, EndToken = endToken }; } + internal SyntaxNode GetNodeWithTokens(SyntaxToken startToken, SyntaxToken endToken, SyntaxNode root) + { + if (IsEndOfFileToken(endToken)) + { + return root; + } + else + { + return startToken.GetCommonRoot(endToken); + } + } + protected string GetScopeString(SymbolKind targetSymbolKind) { switch (targetSymbolKind) diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/ISuppressionFixProvider.cs b/src/Features/Core/Portable/CodeFixes/Suppression/ISuppressionFixProvider.cs index 16431c72f1278..4c76ed21e1ab3 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/ISuppressionFixProvider.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/ISuppressionFixProvider.cs @@ -11,12 +11,12 @@ namespace Microsoft.CodeAnalysis.CodeFixes.Suppression internal interface ISuppressionFixProvider { /// - /// Returns true if the given diagnostic can be suppressed or triaged. + /// Returns true if the given diagnostic can be suppressed or unsuppressed. /// - bool CanBeSuppressed(Diagnostic diagnostic); + bool CanBeSuppressedOrUnsuppressed(Diagnostic diagnostic); /// - /// Gets one or more suppression or triage fixes for the specified diagnostics represented as a list of 's. + /// Gets one or more add suppression or remove suppression fixes for the specified diagnostics represented as a list of 's. /// /// A list of zero or more potential 'es. It is also safe to return null if there are none. Task> GetSuppressionsAsync(Document document, TextSpan span, IEnumerable diagnostics, CancellationToken cancellationToken); diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/NestedSuppressionCodeAction.cs b/src/Features/Core/Portable/CodeFixes/Suppression/NestedSuppressionCodeAction.cs index b41fec7a76ee1..d7b32921e070a 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/NestedSuppressionCodeAction.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/NestedSuppressionCodeAction.cs @@ -16,8 +16,13 @@ protected NestedSuppressionCodeAction(string title) public sealed override string Title => _title; protected abstract string DiagnosticIdForEquivalenceKey { get; } - public sealed override string EquivalenceKey => Title + DiagnosticIdForEquivalenceKey; + public override string EquivalenceKey => Title + DiagnosticIdForEquivalenceKey; + public static bool IsEquivalenceKeyForGlobalSuppression(string equivalenceKey) => equivalenceKey.StartsWith(FeaturesResources.SuppressWithGlobalSuppressMessage); + public static bool IsEquivalenceKeyForPragmaWarning(string equivalenceKey) => + equivalenceKey.StartsWith(FeaturesResources.SuppressWithPragma); + public static bool IsEquivalenceKeyForRemoveSuppression(string equivalenceKey) => + equivalenceKey.StartsWith(FeaturesResources.RemoveSuppressionEquivalenceKeyPrefix); } } diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/SuppressionHelpers.cs b/src/Features/Core/Portable/CodeFixes/Suppression/SuppressionHelpers.cs index d4ffbd7e4558f..4b0dacd93a910 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/SuppressionHelpers.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/SuppressionHelpers.cs @@ -1,16 +1,9 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Generic; -using System.Collections.Immutable; using System.Globalization; using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.CodeAnalysis.CodeActions; using Microsoft.CodeAnalysis.Diagnostics; -using Microsoft.CodeAnalysis.LanguageServices; -using Microsoft.CodeAnalysis.Shared.Extensions; -using Microsoft.CodeAnalysis.Text; using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.CodeFixes.Suppression @@ -19,7 +12,19 @@ internal static class SuppressionHelpers { public static bool CanBeSuppressed(Diagnostic diagnostic) { - if (diagnostic.Location.Kind != LocationKind.SourceFile || diagnostic.IsSuppressed || IsNotConfigurableDiagnostic(diagnostic)) + return CanBeSuppressedOrUnsuppressed(diagnostic, checkCanBeSuppressed: true); + } + + public static bool CanBeUnsuppressed(Diagnostic diagnostic) + { + return CanBeSuppressedOrUnsuppressed(diagnostic, checkCanBeSuppressed: false); + } + + private static bool CanBeSuppressedOrUnsuppressed(Diagnostic diagnostic, bool checkCanBeSuppressed) + { + if (diagnostic.Location.Kind != LocationKind.SourceFile || + (diagnostic.IsSuppressed == checkCanBeSuppressed) || + IsNotConfigurableDiagnostic(diagnostic)) { // Don't offer suppression fixes for: // 1. Diagnostics without a source location. @@ -31,6 +36,7 @@ public static bool CanBeSuppressed(Diagnostic diagnostic) switch (diagnostic.Severity) { case DiagnosticSeverity.Hidden: + // Hidden diagnostics should never show up. return false; case DiagnosticSeverity.Error: diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/WrapperCodeFixProvider.cs b/src/Features/Core/Portable/CodeFixes/Suppression/WrapperCodeFixProvider.cs index 675538127d1c9..729b9cb964f42 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/WrapperCodeFixProvider.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/WrapperCodeFixProvider.cs @@ -22,7 +22,7 @@ public WrapperCodeFixProvider(ISuppressionFixProvider suppressionFixProvider, Im public async override Task RegisterCodeFixesAsync(CodeFixContext context) { - var diagnostics = context.Diagnostics.WhereAsArray(_suppressionFixProvider.CanBeSuppressed); + var diagnostics = context.Diagnostics.WhereAsArray(_suppressionFixProvider.CanBeSuppressedOrUnsuppressed); var suppressionFixes = await _suppressionFixProvider.GetSuppressionsAsync(context.Document, context.Span, diagnostics, context.CancellationToken).ConfigureAwait(false); if (suppressionFixes != null) { diff --git a/src/Features/Core/Portable/Features.csproj b/src/Features/Core/Portable/Features.csproj index 86bc4289eee6e..c4489e42249a3 100644 --- a/src/Features/Core/Portable/Features.csproj +++ b/src/Features/Core/Portable/Features.csproj @@ -107,6 +107,13 @@ + + + + + + + diff --git a/src/Features/Core/Portable/FeaturesResources.Designer.cs b/src/Features/Core/Portable/FeaturesResources.Designer.cs index 1d753a7f246ca..255d0b09462a3 100644 --- a/src/Features/Core/Portable/FeaturesResources.Designer.cs +++ b/src/Features/Core/Portable/FeaturesResources.Designer.cs @@ -1654,6 +1654,24 @@ internal static string Remarks { } } + /// + /// Looks up a localized string similar to Remove Suppression. + /// + internal static string RemoveSuppressionEquivalenceKeyPrefix { + get { + return ResourceManager.GetString("RemoveSuppressionEquivalenceKeyPrefix", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Remove Suppression {0}. + /// + internal static string RemoveSuppressionForId { + get { + return ResourceManager.GetString("RemoveSuppressionForId", resourceCulture); + } + } + /// /// Looks up a localized string similar to Remove Unnecessary Cast. /// diff --git a/src/Features/Core/Portable/FeaturesResources.resx b/src/Features/Core/Portable/FeaturesResources.resx index 89194a82889a8..38c244018a767 100644 --- a/src/Features/Core/Portable/FeaturesResources.resx +++ b/src/Features/Core/Portable/FeaturesResources.resx @@ -700,6 +700,12 @@ Do you want to continue? in Suppression File + + Remove Suppression {0} + + + Remove Suppression + <Pending> diff --git a/src/Features/VisualBasic/Portable/CodeFixes/Suppression/VisualBasicSuppressionCodeFixProvider.vb b/src/Features/VisualBasic/Portable/CodeFixes/Suppression/VisualBasicSuppressionCodeFixProvider.vb index d13d3fc283aa9..855f276d40373 100644 --- a/src/Features/VisualBasic/Portable/CodeFixes/Suppression/VisualBasicSuppressionCodeFixProvider.vb +++ b/src/Features/VisualBasic/Portable/CodeFixes/Suppression/VisualBasicSuppressionCodeFixProvider.vb @@ -14,16 +14,16 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeFixes.Suppression Friend Class VisualBasicSuppressionCodeFixProvider Inherits AbstractSuppressionCodeFixProvider - Protected Overrides Function CreatePragmaRestoreDirectiveTrivia(diagnostic As Diagnostic, needsTrailingEndOfLine As Boolean) As SyntaxTriviaList + Protected Overrides Function CreatePragmaRestoreDirectiveTrivia(diagnostic As Diagnostic, formatNode As Func(Of SyntaxNode, SyntaxNode), needsLeadingEndOfLine As Boolean, needsTrailingEndOfLine As Boolean) As SyntaxTriviaList Dim errorCodes = GetErrorCodes(diagnostic) Dim pragmaDirective = SyntaxFactory.EnableWarningDirectiveTrivia(errorCodes) - Return CreatePragmaDirectiveTrivia(pragmaDirective, diagnostic, True, needsTrailingEndOfLine) + Return CreatePragmaDirectiveTrivia(pragmaDirective, diagnostic, formatNode, needsLeadingEndOfLine, needsTrailingEndOfLine) End Function - Protected Overrides Function CreatePragmaDisableDirectiveTrivia(diagnostic As Diagnostic, needsLeadingEndOfLine As Boolean) As SyntaxTriviaList + Protected Overrides Function CreatePragmaDisableDirectiveTrivia(diagnostic As Diagnostic, formatNode As Func(Of SyntaxNode, SyntaxNode), needsLeadingEndOfLine As Boolean, needsTrailingEndOfLine As Boolean) As SyntaxTriviaList Dim errorCodes = GetErrorCodes(diagnostic) Dim pragmaDirective = SyntaxFactory.DisableWarningDirectiveTrivia(errorCodes) - Return CreatePragmaDirectiveTrivia(pragmaDirective, diagnostic, needsLeadingEndOfLine, True) + Return CreatePragmaDirectiveTrivia(pragmaDirective, diagnostic, formatNode, needsLeadingEndOfLine, needsTrailingEndOfLine) End Function Private Shared Function GetErrorCodes(diagnostic As Diagnostic) As SeparatedSyntaxList(Of IdentifierNameSyntax) @@ -34,8 +34,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeFixes.Suppression Return New SeparatedSyntaxList(Of IdentifierNameSyntax)().Add(SyntaxFactory.IdentifierName(text)) End Function - Private Function CreatePragmaDirectiveTrivia(enableOrDisablePragmaDirective As StructuredTriviaSyntax, diagnostic As Diagnostic, needsLeadingEndOfLine As Boolean, needsTrailingEndOfLine As Boolean) As SyntaxTriviaList - Dim pragmaDirectiveTrivia = SyntaxFactory.Trivia(enableOrDisablePragmaDirective.WithAdditionalAnnotations(Formatter.Annotation)) + Private Function CreatePragmaDirectiveTrivia(enableOrDisablePragmaDirective As StructuredTriviaSyntax, diagnostic As Diagnostic, formatNode As Func(Of SyntaxNode, SyntaxNode), needsLeadingEndOfLine As Boolean, needsTrailingEndOfLine As Boolean) As SyntaxTriviaList + enableOrDisablePragmaDirective = CType(formatNode(enableOrDisablePragmaDirective), StructuredTriviaSyntax) + Dim pragmaDirectiveTrivia = SyntaxFactory.Trivia(enableOrDisablePragmaDirective) Dim endOfLineTrivia = SyntaxFactory.ElasticCarriageReturnLineFeed Dim triviaList = SyntaxFactory.TriviaList(pragmaDirectiveTrivia) @@ -178,5 +179,64 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeFixes.Suppression Return attributeArgumentList End Function + + Protected Overrides Function IsSingleAttributeInAttributeList(attribute As SyntaxNode) As Boolean + Dim attributeSyntax = TryCast(attribute, AttributeSyntax) + If attributeSyntax IsNot Nothing Then + Dim attributeList = TryCast(attributeSyntax.Parent, AttributeListSyntax) + Return attributeList IsNot Nothing AndAlso attributeList.Attributes.Count = 1 + End If + + Return False + End Function + + Protected Overrides Function IsAnyPragmaDirectiveForId(trivia As SyntaxTrivia, id As String, ByRef enableDirective As Boolean, ByRef hasMultipleIds As Boolean) As Boolean + Dim errorCodes As SeparatedSyntaxList(Of IdentifierNameSyntax) + + Select Case trivia.Kind() + Case SyntaxKind.DisableWarningDirectiveTrivia + Dim pragmaWarning = DirectCast(trivia.GetStructure(), DisableWarningDirectiveTriviaSyntax) + errorCodes = pragmaWarning.ErrorCodes + enableDirective = False + + Case SyntaxKind.EnableWarningDirectiveTrivia + Dim pragmaWarning = DirectCast(trivia.GetStructure(), EnableWarningDirectiveTriviaSyntax) + errorCodes = pragmaWarning.ErrorCodes + enableDirective = True + + Case Else + enableDirective = False + hasMultipleIds = False + Return False + End Select + + hasMultipleIds = errorCodes.Count > 1 + Return errorCodes.Any(Function(node) node.ToString = id) + End Function + + Protected Overrides Function TogglePragmaDirective(trivia As SyntaxTrivia) As SyntaxTrivia + Select Case trivia.Kind() + Case SyntaxKind.DisableWarningDirectiveTrivia + Dim pragmaWarning = DirectCast(trivia.GetStructure(), DisableWarningDirectiveTriviaSyntax) + Dim disabledKeyword = pragmaWarning.DisableKeyword + Dim enabledKeyword = SyntaxFactory.Token(disabledKeyword.LeadingTrivia, SyntaxKind.EnableKeyword, disabledKeyword.TrailingTrivia) + Dim newPragmaWarning = SyntaxFactory.EnableWarningDirectiveTrivia(pragmaWarning.HashToken, enabledKeyword, pragmaWarning.WarningKeyword, pragmaWarning.ErrorCodes) _ + .WithLeadingTrivia(pragmaWarning.GetLeadingTrivia) _ + .WithTrailingTrivia(pragmaWarning.GetTrailingTrivia) + Return SyntaxFactory.Trivia(newPragmaWarning) + + Case SyntaxKind.EnableWarningDirectiveTrivia + Dim pragmaWarning = DirectCast(trivia.GetStructure(), EnableWarningDirectiveTriviaSyntax) + Dim enabledKeyword = pragmaWarning.EnableKeyword + Dim disabledKeyword = SyntaxFactory.Token(enabledKeyword.LeadingTrivia, SyntaxKind.DisableKeyword, enabledKeyword.TrailingTrivia) + Dim newPragmaWarning = SyntaxFactory.DisableWarningDirectiveTrivia(pragmaWarning.HashToken, disabledKeyword, pragmaWarning.WarningKeyword, pragmaWarning.ErrorCodes) _ + .WithLeadingTrivia(pragmaWarning.GetLeadingTrivia) _ + .WithTrailingTrivia(pragmaWarning.GetTrailingTrivia) + Return SyntaxFactory.Trivia(newPragmaWarning) + + Case Else + Contract.Fail() + End Select + End Function End Class End Namespace From 23872bf621283d2afd29bc1658a931656f60e967 Mon Sep 17 00:00:00 2001 From: Manish Vasani Date: Wed, 23 Sep 2015 12:28:32 -0700 Subject: [PATCH 46/83] This change enables "Remove Suppression(s)" context menu command in the error list to enable bulk selecting suppressed issues and removing the suppressions on them. --- ...ioDiagnosticListSuppressionStateService.cs | 168 ++++++++++++++++-- ...StudioDiagnosticListTableCommandHandler.cs | 4 +- .../VisualStudioSuppressionFixService.cs | 56 ++++-- .../Core/Def/ServicesVSResources.Designer.cs | 36 ++++ .../Core/Def/ServicesVSResources.resx | 12 ++ 5 files changed, 245 insertions(+), 31 deletions(-) diff --git a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListSuppressionStateService.cs b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListSuppressionStateService.cs index 85c8721598cfc..7c01fa7c394b6 100644 --- a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListSuppressionStateService.cs +++ b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListSuppressionStateService.cs @@ -5,13 +5,16 @@ using System.ComponentModel.Composition; using System.Linq; using System.Threading; +using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CodeFixes.Suppression; using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; using Microsoft.VisualStudio.Shell.TableControl; using Microsoft.VisualStudio.Shell.TableManager; +using Roslyn.Utilities; namespace Microsoft.VisualStudio.LanguageServices.Implementation.TableDataSource { @@ -135,9 +138,15 @@ private static bool EntrySupportsSuppressionState(ITableEntryHandle entryHandle, { int index; var roslynSnapshot = GetEntriesSnapshot(entryHandle, out index); + if (roslynSnapshot == null) + { + isRoslynEntry = false; + isCompilerDiagnosticEntry = false; + return IsNonRoslynEntrySupportingSuppressionState(entryHandle, out isSuppressedEntry); + } var diagnosticData = roslynSnapshot?.GetItem(index)?.Primary; - if (diagnosticData == null || !diagnosticData.HasTextSpan || SuppressionHelpers.IsNotConfigurableDiagnostic(diagnosticData)) + if (!IsEntryWithConfigurableSuppressionState(diagnosticData)) { isRoslynEntry = false; isSuppressedEntry = false; @@ -151,6 +160,30 @@ private static bool EntrySupportsSuppressionState(ITableEntryHandle entryHandle, return true; } + private static bool IsNonRoslynEntrySupportingSuppressionState(ITableEntryHandle entryHandle, out bool isSuppressedEntry) + { + string suppressionStateValue; + if (entryHandle.TryGetValue(SuppressionStateColumnDefinition.ColumnName, out suppressionStateValue)) + { + isSuppressedEntry = suppressionStateValue == ServicesVSResources.SuppressionStateSuppressed; + return true; + } + + isSuppressedEntry = false; + return false; + } + + /// + /// Returns true if an entry's suppression state can be modified. + /// + /// + private static bool IsEntryWithConfigurableSuppressionState(DiagnosticData entry) + { + return entry != null && + entry.HasTextSpan && + !SuppressionHelpers.IsNotConfigurableDiagnostic(entry); + } + private static AbstractTableEntriesSnapshot GetEntriesSnapshot(ITableEntryHandle entryHandle) { int index; @@ -171,9 +204,12 @@ private static AbstractTableEntriesSnapshot GetEntriesSnapshot(I /// /// Gets objects for error list entries, filtered based on the given parameters. /// - public ImmutableArray GetItems(bool selectedEntriesOnly, bool isAddSuppression, bool isSuppressionInSource, bool onlyCompilerDiagnostics, CancellationToken cancellationToken) + public async Task> GetItemsAsync(bool selectedEntriesOnly, bool isAddSuppression, bool isSuppressionInSource, bool onlyCompilerDiagnostics, CancellationToken cancellationToken) { var builder = ImmutableArray.CreateBuilder(); + Dictionary projectNameToProjectMapOpt = null; + Dictionary> filePathToDocumentMapOpt = null; + var entries = selectedEntriesOnly ? _tableControl.SelectedEntries : _tableControl.Entries; foreach (var entryHandle in entries) { @@ -185,28 +221,138 @@ public ImmutableArray GetItems(bool selectedEntriesOnly, bool is if (roslynSnapshot != null) { diagnosticData = roslynSnapshot.GetItem(index)?.Primary; - if (diagnosticData != null && diagnosticData.HasTextSpan) + } + else if (!isAddSuppression) + { + // For suppression removal, we also need to handle FxCop entries. + bool isSuppressedEntry; + if (!IsNonRoslynEntrySupportingSuppressionState(entryHandle, out isSuppressedEntry) || + !isSuppressedEntry) + { + continue; + } + + string errorCode = null, category = null, message = null, filePath = null, projectName = null; + int line = -1; // FxCop only supports line, not column. + var location = Location.None; + + if (entryHandle.TryGetValue(StandardTableColumnDefinitions.ErrorCode, out errorCode) && !string.IsNullOrEmpty(errorCode) && + entryHandle.TryGetValue(StandardTableColumnDefinitions.ErrorCategory, out category) && !string.IsNullOrEmpty(category) && + entryHandle.TryGetValue(StandardTableColumnDefinitions.Text, out message) && !string.IsNullOrEmpty(message) && + entryHandle.TryGetValue(StandardTableColumnDefinitions.ProjectName, out projectName) && !string.IsNullOrEmpty(projectName)) { - var isCompilerDiagnostic = SuppressionHelpers.IsCompilerDiagnostic(diagnosticData); - if (onlyCompilerDiagnostics && !isCompilerDiagnostic) + if (projectNameToProjectMapOpt == null) { + projectNameToProjectMapOpt = new Dictionary(); + foreach (var p in _workspace.CurrentSolution.Projects) + { + projectNameToProjectMapOpt[p.Name] = p; + } + } + + cancellationToken.ThrowIfCancellationRequested(); + + Project project; + if (!projectNameToProjectMapOpt.TryGetValue(projectName, out project)) + { + // bail out continue; } - if (isAddSuppression) + Document document = null; + var hasLocation = (entryHandle.TryGetValue(StandardTableColumnDefinitions.DocumentName, out filePath) && !string.IsNullOrEmpty(filePath)) || + (entryHandle.TryGetValue(StandardTableColumnDefinitions.Line, out line) && line >= 0); + if (hasLocation) { - // Compiler diagnostics can only be suppressed in source. - if (!diagnosticData.IsSuppressed && - (isSuppressionInSource || !isCompilerDiagnostic)) + if (string.IsNullOrEmpty(filePath) || line < 0) { - builder.Add(diagnosticData); + // bail out + continue; } + + ImmutableDictionary filePathMap; + filePathToDocumentMapOpt = filePathToDocumentMapOpt ?? new Dictionary>(); + if (!filePathToDocumentMapOpt.TryGetValue(project, out filePathMap)) + { + filePathMap = await GetFilePathToDocumentMapAsync(project, cancellationToken).ConfigureAwait(false); + filePathToDocumentMapOpt[project] = filePathMap; + } + + if (!filePathMap.TryGetValue(filePath, out document)) + { + // bail out + continue; + } + + var tree = await document.GetSyntaxTreeAsync(cancellationToken).ConfigureAwait(false); + var linePosition = new LinePosition(line, 0); + var linePositionSpan = new LinePositionSpan(start: linePosition, end: linePosition); + var textSpan = (await tree.GetTextAsync(cancellationToken).ConfigureAwait(false)).Lines.GetTextSpan(linePositionSpan); + location = tree.GetLocation(textSpan); } - else if (diagnosticData.IsSuppressed) + + Contract.ThrowIfNull(project); + Contract.ThrowIfFalse((document != null) == location.IsInSource); + + // Create a diagnostic with correct values for fields we care about: id, category, message, isSuppressed, location + // and default values for the rest of the fields (not used by suppression fixer). + var diagnostic = Diagnostic.Create( + id: errorCode, + category: category, + message: message, + severity: DiagnosticSeverity.Warning, + defaultSeverity: DiagnosticSeverity.Warning, + isEnabledByDefault: true, + warningLevel: 1, + isSuppressed: isSuppressedEntry, + title: message, + location: location); + + diagnosticData = document != null ? + DiagnosticData.Create(document, diagnostic) : + DiagnosticData.Create(project, diagnostic); + } + } + + if (IsEntryWithConfigurableSuppressionState(diagnosticData)) + { + var isCompilerDiagnostic = SuppressionHelpers.IsCompilerDiagnostic(diagnosticData); + if (onlyCompilerDiagnostics && !isCompilerDiagnostic) + { + continue; + } + + if (isAddSuppression) + { + // Compiler diagnostics can only be suppressed in source. + if (!diagnosticData.IsSuppressed && + (isSuppressionInSource || !isCompilerDiagnostic)) { builder.Add(diagnosticData); } } + else if (diagnosticData.IsSuppressed) + { + builder.Add(diagnosticData); + } + } + } + + return builder.ToImmutable(); + } + + private static async Task> GetFilePathToDocumentMapAsync(Project project, CancellationToken cancellationToken) + { + var builder = ImmutableDictionary.CreateBuilder(); + foreach (var document in project.Documents) + { + cancellationToken.ThrowIfCancellationRequested(); + + var tree = await document.GetSyntaxTreeAsync(cancellationToken).ConfigureAwait(false); + var filePath = tree.FilePath; + if (filePath != null) + { + builder.Add(filePath, document); } } diff --git a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListTableCommandHandler.cs b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListTableCommandHandler.cs index d6c8af97e6a1c..9cc4343707987 100644 --- a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListTableCommandHandler.cs +++ b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListTableCommandHandler.cs @@ -38,9 +38,7 @@ private void AddSuppressionsCommandHandlers(IMenuCommandService menuCommandServi AddCommand(menuCommandService, ID.RoslynCommands.AddSuppressions, delegate { }, OnAddSuppressionsStatus); AddCommand(menuCommandService, ID.RoslynCommands.AddSuppressionsInSource, OnAddSuppressionsInSource, OnAddSuppressionsInSourceStatus); AddCommand(menuCommandService, ID.RoslynCommands.AddSuppressionsInSuppressionFile, OnAddSuppressionsInSuppressionFile, OnAddSuppressionsInSuppressionFileStatus); - - // TODO: RemoveSupressions NYI - //AddCommand(menuCommandService, ID.RoslynCommands.RemoveSuppressions, OnRemoveSuppressions, OnRemoveSuppressionsStatus); + AddCommand(menuCommandService, ID.RoslynCommands.RemoveSuppressions, OnRemoveSuppressions, OnRemoveSuppressionsStatus); } /// diff --git a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioSuppressionFixService.cs b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioSuppressionFixService.cs index 63a05cf238288..7515d0cdeb7fe 100644 --- a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioSuppressionFixService.cs +++ b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioSuppressionFixService.cs @@ -75,6 +75,17 @@ public void AddSuppressions(bool selectedErrorListEntriesOnly, bool suppressInSo ApplySuppressionFix(shouldFixInProject, selectedErrorListEntriesOnly, isAddSuppression: true, isSuppressionInSource: suppressInSource, onlyCompilerDiagnostics: false, showPreviewChangesDialog: true); } + public void RemoveSuppressions(bool selectedErrorListEntriesOnly, IVsHierarchy projectHierarchyOpt) + { + if (_tableControl == null) + { + return; + } + + Func shouldFixInProject = GetShouldFixInProjectDelegate(_workspace, projectHierarchyOpt); + ApplySuppressionFix(shouldFixInProject, selectedErrorListEntriesOnly, isAddSuppression: false, isSuppressionInSource: false, onlyCompilerDiagnostics: false, showPreviewChangesDialog: true); + } + private static Func GetShouldFixInProjectDelegate(VisualStudioWorkspaceImpl workspace, IVsHierarchy projectHierarchyOpt) { if (projectHierarchyOpt == null) @@ -92,35 +103,29 @@ private static Func GetShouldFixInProjectDelegate(VisualStudioWor } } - public void RemoveSuppressions(bool selectedErrorListEntriesOnly, IVsHierarchy projectHierarchyOpt) - { - if (_tableControl == null) - { - return; - } - - // TODO - } - private void ApplySuppressionFix(Func shouldFixInProject, bool selectedEntriesOnly, bool isAddSuppression, bool isSuppressionInSource, bool onlyCompilerDiagnostics, bool showPreviewChangesDialog) { ImmutableDictionary> diagnosticsToFixMap = null; + var waitDialogAndPreviewChangesTitle = isAddSuppression ? ServicesVSResources.SuppressMultipleOccurrences : ServicesVSResources.RemoveSuppressMultipleOccurrences; + var waitDialogMessage = isAddSuppression ? ServicesVSResources.ComputingSuppressionFix : ServicesVSResources.ComputingRemoveSuppressionFix; + // Get the diagnostics to fix from the suppression state service. var result = _waitIndicator.Wait( - ServicesVSResources.SuppressMultipleOccurrences, - ServicesVSResources.ComputingSuppressionFix, + waitDialogAndPreviewChangesTitle, + waitDialogMessage, allowCancel: true, action: waitContext => { try { - var diagnosticsToFix = _suppressionStateService.GetItems( + var diagnosticsToFix = _suppressionStateService.GetItemsAsync( selectedEntriesOnly, isAddSuppression, isSuppressionInSource, onlyCompilerDiagnostics, - waitContext.CancellationToken); + waitContext.CancellationToken) + .WaitAndGetResult(waitContext.CancellationToken); if (diagnosticsToFix.IsEmpty) { @@ -132,6 +137,7 @@ private void ApplySuppressionFix(Func shouldFixInProject, bool se } catch (OperationCanceledException) { + diagnosticsToFixMap = null; } }); @@ -142,7 +148,11 @@ private void ApplySuppressionFix(Func shouldFixInProject, bool se return; } - var equivalenceKey = isSuppressionInSource ? FeaturesResources.SuppressWithPragma : FeaturesResources.SuppressWithGlobalSuppressMessage; + // Equivalence key determines what fix will be applied. + // Make sure we don't include any specific diagnostic ID, as we want all of the given diagnostics (which can have varied ID) to be fixed. + var equivalenceKey = isAddSuppression ? + (isSuppressionInSource ? FeaturesResources.SuppressWithPragma : FeaturesResources.SuppressWithGlobalSuppressMessage) : + FeaturesResources.RemoveSuppressionEquivalenceKeyPrefix; // We have different suppression fixers for every language. // So we need to group diagnostics by the containing project language and apply fixes separately. @@ -155,8 +165,20 @@ private void ApplySuppressionFix(Func shouldFixInProject, bool se foreach (var group in groups) { var language = group.Key; - var waitDialogAndPreviewChangesTitle = hasMultipleLangauges ? string.Format(ServicesVSResources.SuppressMultipleOccurrencesForLanguage, language) : ServicesVSResources.SuppressMultipleOccurrences; - var waitDialogMessage = hasMultipleLangauges ? string.Format(ServicesVSResources.ComputingSuppressionFixForLanguage, language) : ServicesVSResources.ComputingSuppressionFix; + if (hasMultipleLangauges) + { + // Change the dialog title and wait message appropriately. + if (isAddSuppression) + { + waitDialogAndPreviewChangesTitle = string.Format(ServicesVSResources.SuppressMultipleOccurrencesForLanguage, language); + waitDialogMessage = string.Format(ServicesVSResources.ComputingSuppressionFixForLanguage, language); + } + else + { + waitDialogAndPreviewChangesTitle = string.Format(ServicesVSResources.RemoveSuppressMultipleOccurrencesForLanguage, language); + waitDialogMessage = string.Format(ServicesVSResources.ComputingRemoveSuppressionFixForLanguage, language); + } + } ImmutableDictionary> documentDiagnosticsPerLanguage = null; CodeFixProvider suppressionFixer = null; diff --git a/src/VisualStudio/Core/Def/ServicesVSResources.Designer.cs b/src/VisualStudio/Core/Def/ServicesVSResources.Designer.cs index ee3b647e2fd00..13f9624bef6fa 100644 --- a/src/VisualStudio/Core/Def/ServicesVSResources.Designer.cs +++ b/src/VisualStudio/Core/Def/ServicesVSResources.Designer.cs @@ -132,6 +132,24 @@ internal static string CodefixOrRefactoringEncounteredError { } } + /// + /// Looks up a localized string similar to Computing remove suppressions fix.... + /// + internal static string ComputingRemoveSuppressionFix { + get { + return ResourceManager.GetString("ComputingRemoveSuppressionFix", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Computing remove suppressions fix ('{0}').... + /// + internal static string ComputingRemoveSuppressionFixForLanguage { + get { + return ResourceManager.GetString("ComputingRemoveSuppressionFixForLanguage", resourceCulture); + } + } + /// /// Looks up a localized string similar to Computing suppressions fix.... /// @@ -975,6 +993,24 @@ internal static string Remove { } } + /// + /// Looks up a localized string similar to Remove suppressions. + /// + internal static string RemoveSuppressMultipleOccurrences { + get { + return ResourceManager.GetString("RemoveSuppressMultipleOccurrences", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Remove suppressions ('{0}'). + /// + internal static string RemoveSuppressMultipleOccurrencesForLanguage { + get { + return ResourceManager.GetString("RemoveSuppressMultipleOccurrencesForLanguage", resourceCulture); + } + } + /// /// Looks up a localized string similar to Resetting Interactive. /// diff --git a/src/VisualStudio/Core/Def/ServicesVSResources.resx b/src/VisualStudio/Core/Def/ServicesVSResources.resx index 1ee58ed950f7f..0877d3d971dd2 100644 --- a/src/VisualStudio/Core/Def/ServicesVSResources.resx +++ b/src/VisualStudio/Core/Def/ServicesVSResources.resx @@ -510,4 +510,16 @@ Use the dropdown to view and switch to other projects this file may belong to. Computing suppressions fix ('{0}')... + + Remove suppressions + + + Remove suppressions ('{0}') + + + Computing remove suppressions fix... + + + Computing remove suppressions fix ('{0}')... + \ No newline at end of file From 22e9caabed8e64d53c02df1cdc082f5ae8c2e427 Mon Sep 17 00:00:00 2001 From: Manish Vasani Date: Wed, 23 Sep 2015 12:29:23 -0700 Subject: [PATCH 47/83] Add unit tests for Remove suppression code action and its batch fix scenario. Also fix some existing suppression tests. --- .../CSharpEditorServicesTest.csproj | 3 +- .../Suppression/RemoveSuppressionTests.cs | 906 ++++++++++++++++++ .../Suppression/SuppressionTests.cs | 8 +- .../AbstractSuppressionAllCodeTests.cs | 2 +- .../AbstractSuppressionDiagnosticTest.cs | 11 +- 5 files changed, 922 insertions(+), 8 deletions(-) create mode 100644 src/EditorFeatures/CSharpTest/Diagnostics/Suppression/RemoveSuppressionTests.cs diff --git a/src/EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj b/src/EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj index e307fe6153a80..1b12384ff8069 100644 --- a/src/EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj +++ b/src/EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj @@ -182,6 +182,7 @@ + @@ -651,4 +652,4 @@ - + \ No newline at end of file diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/Suppression/RemoveSuppressionTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/Suppression/RemoveSuppressionTests.cs new file mode 100644 index 0000000000000..d8067d865a873 --- /dev/null +++ b/src/EditorFeatures/CSharpTest/Diagnostics/Suppression/RemoveSuppressionTests.cs @@ -0,0 +1,906 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Immutable; +using Microsoft.CodeAnalysis.CodeFixes.Suppression; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.CodeFixes.Suppression; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; +using Roslyn.Test.Utilities; +using Xunit; + +namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Diagnostics.Suppression +{ + public partial class CSharpRemoveSuppressionTests : CSharpSuppressionTests + { + protected override bool IncludeSuppressedDiagnostics => true; + protected override bool IncludeUnsuppressedDiagnostics => false; + protected override int CodeActionIndex => 0; + private string FixAllActionEquivalenceKey => FeaturesResources.RemoveSuppressionEquivalenceKeyPrefix + UserDiagnosticAnalyzer.Decsciptor.Id; + + private class UserDiagnosticAnalyzer : DiagnosticAnalyzer + { + public static readonly DiagnosticDescriptor Decsciptor = + new DiagnosticDescriptor("InfoDiagnostic", "InfoDiagnostic Title", "InfoDiagnostic", "InfoDiagnostic", DiagnosticSeverity.Info, isEnabledByDefault: true); + + public override ImmutableArray SupportedDiagnostics + { + get + { + return ImmutableArray.Create(Decsciptor); + } + } + + public override void Initialize(AnalysisContext context) + { + context.RegisterSyntaxNodeAction(AnalyzeNode, SyntaxKind.ClassDeclaration); + } + + public void AnalyzeNode(SyntaxNodeAnalysisContext context) + { + var classDecl = (ClassDeclarationSyntax)context.Node; + context.ReportDiagnostic(Diagnostic.Create(Decsciptor, classDecl.Identifier.GetLocation())); + } + } + + internal override Tuple CreateDiagnosticProviderAndFixer(Workspace workspace) + { + return new Tuple( + new UserDiagnosticAnalyzer(), new CSharpSuppressionCodeFixProvider()); + } + + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsSuppression)] + public void TestRemovePragmaSuppression() + { + Test( + @" +using System; + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +[|class Class|] +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +{ + int Method() + { + int x = 0; + } +}", + @" +using System; + +class Class +{ + int Method() + { + int x = 0; + } +}"); + } + + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsSuppression)] + public void TestRemovePragmaSuppression_AdjacentTrivia() + { + Test( + @" +using System; + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +class Class1 { } +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +[|class Class2|] +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +{ + int Method() + { + int x = 0; + } +}", + @" +using System; + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +class Class1 { } +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +class Class2 +{ + int Method() + { + int x = 0; + } +}"); + } + + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsSuppression)] + public void TestRemovePragmaSuppression_TriviaWithMultipleIDs() + { + Test( + @" +using System; + +#pragma warning disable InfoDiagnostic, SomeOtherDiagnostic +[|class Class|] +#pragma warning restore InfoDiagnostic, SomeOtherDiagnostic +{ + int Method() + { + int x = 0; + } +}", + @" +using System; + +#pragma warning disable InfoDiagnostic, SomeOtherDiagnostic +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +class Class +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +#pragma warning restore InfoDiagnostic, SomeOtherDiagnostic +{ + int Method() + { + int x = 0; + } +}"); + } + + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsSuppression)] + public void TestRemovePragmaSuppression_WithEnclosingSuppression() + { + Test( + @" +#pragma warning disable InfoDiagnostic +using System; + +#pragma warning disable InfoDiagnostic +[|class Class|] +#pragma warning restore InfoDiagnostic +{ + int Method() + { + int x = 0; + } +}", + @" +#pragma warning disable InfoDiagnostic +using System; + +#pragma warning restore InfoDiagnostic +class Class +#pragma warning disable InfoDiagnostic +{ + int Method() + { + int x = 0; + } +}"); + } + + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsSuppression)] + public void TestRemoveLocalAttributeSuppression() + { + Test( + $@" +using System; + +[System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"")] +[|class Class|] +{{ + int Method() + {{ + int x = 0; + }} +}}", + @" +using System; + +class Class +{ + int Method() + { + int x = 0; + } +}"); + } + + [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsSuppression)] + public void TestRemoveGlobalAttributeSuppression() + { + Test( + $@" +using System; + +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class"")] + +[|class Class|] +{{ + int Method() + {{ + int x = 0; + }} +}}", + @" +using System; + +class Class +{ + int Method() + { + int x = 0; + } +}"); + } + + #region "Fix all occurrences tests" + + #region "Pragma disable tests" + + [Fact] + [Trait(Traits.Feature, Traits.Features.CodeActionsSuppression)] + [Trait(Traits.Feature, Traits.Features.CodeActionsFixAllOccurrences)] + public void TestFixAllInDocument_RemovePragmaSuppressions() + { + var input = @" + + + +using System; + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +{|FixAllInDocument:class Class1|} +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +{ + int Method() + { + int x = 0; + } +} + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +class Class2 +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +{ +} + + +class Class3 +{ +} + + + + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +"; + + var expected = @" + + + +using System; + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +class Class3 +{ +} + + + + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +"; + + Test(input, expected, compareTokens: false, fixAllActionEquivalenceKey: FixAllActionEquivalenceKey); + } + + [Fact] + [Trait(Traits.Feature, Traits.Features.CodeActionsSuppression)] + [Trait(Traits.Feature, Traits.Features.CodeActionsFixAllOccurrences)] + public void TestFixAllInProject_RemovePragmaSuppressions() + { + var input = @" + + + +using System; + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +{|FixAllInProject:class Class1|} +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +{ + int Method() + { + int x = 0; + } +} + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +class Class2 +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +{ +} + + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +class Class3 +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +{ +} + + + + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +"; + + var expected = @" + + + +using System; + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +class Class3 +{ +} + + + + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +"; + + Test(input, expected, compareTokens: false, fixAllActionEquivalenceKey: FixAllActionEquivalenceKey); + } + + [Fact] + [Trait(Traits.Feature, Traits.Features.CodeActionsSuppression)] + [Trait(Traits.Feature, Traits.Features.CodeActionsFixAllOccurrences)] + public void TestFixAllInSolution() + { + var input = @" + + + +using System; + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +{|FixAllInSolution:class Class1|} +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +{ + int Method() + { + int x = 0; + } +} + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +class Class2 +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +{ +} + + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +class Class3 +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +{ +} + + + + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +class Class1 +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +{ + int Method() + { + int x = 0; + } +} + +#pragma warning disable InfoDiagnostic // InfoDiagnostic Title +class Class2 +#pragma warning restore InfoDiagnostic // InfoDiagnostic Title +{ +} + + +"; + + var expected = @" + + + +using System; + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +class Class3 +{ +} + + + + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +"; + + Test(input, expected, compareTokens: false, fixAllActionEquivalenceKey: FixAllActionEquivalenceKey); + } + + #endregion + + #region "SuppressMessageAttribute tests" + + [Fact] + [Trait(Traits.Feature, Traits.Features.CodeActionsSuppression)] + [Trait(Traits.Feature, Traits.Features.CodeActionsFixAllOccurrences)] + public void TestFixAllInDocument_RemoveAttributeSuppressions() + { + var addedGlobalSuppressions = $@" +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""member"", Target = ""~M:Class1.Method~System.Int32"")] +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class1"")] +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class2"")] +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class3"")] + +".Replace("<", "<").Replace(">", ">"); + + var input = @" + + + +using System; + +{|FixAllInDocument:class Class1|} +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +class Class3 +{ +} + + " + addedGlobalSuppressions + +@" + + + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + " + addedGlobalSuppressions + +@" + +"; + + var newGlobalSuppressionsFile = $@" +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""member"", Target = ""~M:Class1.Method~System.Int32"")] +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class3"")] + +".Replace("<", "<").Replace(">", ">"); + var expected = @" + + + +using System; + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +class Class3 +{ +} + + " + newGlobalSuppressionsFile + +@" + + + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + " + addedGlobalSuppressions + +@" + +"; + + Test(input, expected, compareTokens: false, fixAllActionEquivalenceKey: FixAllActionEquivalenceKey); + } + + [Fact] + [Trait(Traits.Feature, Traits.Features.CodeActionsSuppression)] + [Trait(Traits.Feature, Traits.Features.CodeActionsFixAllOccurrences)] + public void TestFixAllInProject_RemoveAttributeSuppressions() + { + var addedGlobalSuppressions = $@" +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class1"")] +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class2"")] +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class3"")] + +".Replace("<", "<").Replace(">", ">"); + + var input = @" + + + +using System; + +{|FixAllInProject:class Class1|} +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +class Class3 +{ +} + + " + addedGlobalSuppressions + +@" + + + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + " + addedGlobalSuppressions + +@" + +"; + + var newGlobalSuppressionsFile = $@" +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + + +"; + var expected = @" + + + +using System; + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +class Class3 +{ +} + + " + newGlobalSuppressionsFile + +@" + + + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + " + addedGlobalSuppressions + +@" + +"; + + + + Test(input, expected, compareTokens: false, fixAllActionEquivalenceKey: FixAllActionEquivalenceKey); + } + + [Fact] + [Trait(Traits.Feature, Traits.Features.CodeActionsSuppression)] + [Trait(Traits.Feature, Traits.Features.CodeActionsFixAllOccurrences)] + public void TestFixAllInSolution_RemoveAttributeSuppression() + { + var addedGlobalSuppressionsProject1 = $@" +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class1"")] +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class2"")] +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class3"")] + +".Replace("<", "<").Replace(">", ">"); + + var addedGlobalSuppressionsProject2 = $@" +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class1"")] +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(""InfoDiagnostic"", ""InfoDiagnostic:InfoDiagnostic"", Justification = ""{FeaturesResources.SuppressionPendingJustification}"", Scope = ""type"", Target = ""~T:Class2"")] + +".Replace("<", "<").Replace(">", ">"); + + var input = @" + + + +using System; + +{|FixAllInSolution:class Class1|} +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +class Class3 +{ +} + + " + addedGlobalSuppressionsProject1 + +@" + + + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + " + addedGlobalSuppressionsProject2 + +@" + +"; + + var newGlobalSuppressionsFile = $@" +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + + +"; + var expected = @" + + + +using System; + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + +class Class3 +{ +} + + " + newGlobalSuppressionsFile + +@" + + + +class Class1 +{ + int Method() + { + int x = 0; + } +} + +class Class2 +{ +} + + " + newGlobalSuppressionsFile + +@" + +"; + + Test(input, expected, compareTokens: false, fixAllActionEquivalenceKey: FixAllActionEquivalenceKey); + } + + #endregion + + #endregion + } +} \ No newline at end of file diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/Suppression/SuppressionTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/Suppression/SuppressionTests.cs index 25d0f5ae909a3..32cabca365084 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/Suppression/SuppressionTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/Suppression/SuppressionTests.cs @@ -125,8 +125,8 @@ class Class {{ void Method() {{ + // Start comment previous line #pragma warning disable CS0219 // {CSharpResources.WRN_UnreferencedVarAssg_Title} - // Start comment previous line /* Start comment same line */ int x = 0; // End comment same line #pragma warning restore CS0219 // {CSharpResources.WRN_UnreferencedVarAssg_Title} @@ -296,9 +296,9 @@ class Class void Method() {{ + // Comment + // Comment #pragma warning disable CS1633 // {CSharpResources.WRN_IllegalPragma_Title} - // Comment - // Comment #pragma abcde }} // Comment @@ -325,7 +325,7 @@ public void TestPragmaWarningDirectiveAroundTrivia2() public void TestPragmaWarningDirectiveAroundTrivia3() { Test( - @" [|#pragma abcde|] ", + @"[|#pragma abcde|] ", $@"#pragma warning disable CS1633 // {CSharpResources.WRN_IllegalPragma_Title} #pragma abcde #pragma warning restore CS1633 // {CSharpResources.WRN_IllegalPragma_Title}"); diff --git a/src/EditorFeatures/Test/Diagnostics/AbstractSuppressionAllCodeTests.cs b/src/EditorFeatures/Test/Diagnostics/AbstractSuppressionAllCodeTests.cs index d8be380ac4e12..47adc094c4ad5 100644 --- a/src/EditorFeatures/Test/Diagnostics/AbstractSuppressionAllCodeTests.cs +++ b/src/EditorFeatures/Test/Diagnostics/AbstractSuppressionAllCodeTests.cs @@ -71,7 +71,7 @@ protected void TestPragmaOrAttribute( foreach (var diagnostic in diagnostics) { - if (!fixer.CanBeSuppressed(diagnostic)) + if (!fixer.CanBeSuppressedOrUnsuppressed(diagnostic)) { continue; } diff --git a/src/EditorFeatures/Test/Diagnostics/AbstractSuppressionDiagnosticTest.cs b/src/EditorFeatures/Test/Diagnostics/AbstractSuppressionDiagnosticTest.cs index 997ef5d097d4a..e49351be98b43 100644 --- a/src/EditorFeatures/Test/Diagnostics/AbstractSuppressionDiagnosticTest.cs +++ b/src/EditorFeatures/Test/Diagnostics/AbstractSuppressionDiagnosticTest.cs @@ -16,6 +16,8 @@ namespace Microsoft.CodeAnalysis.Editor.UnitTests.Diagnostics public abstract class AbstractSuppressionDiagnosticTest : AbstractUserDiagnosticTest { protected abstract int CodeActionIndex { get; } + protected virtual bool IncludeSuppressedDiagnostics => false; + protected virtual bool IncludeUnsuppressedDiagnostics => true; protected void Test(string initial, string expected) { @@ -52,13 +54,18 @@ internal override IEnumerable> GetDiagnosti document = GetDocumentAndAnnotatedSpan(workspace, out annotation, out span); } - using (var testDriver = new TestDiagnosticAnalyzerDriver(document.Project, provider)) + using (var testDriver = new TestDiagnosticAnalyzerDriver(document.Project, provider, includeSuppressedDiagnostics: IncludeSuppressedDiagnostics)) { var fixer = providerAndFixer.Item2; var diagnostics = testDriver.GetAllDiagnostics(provider, document, span) - .Where(d => fixer.CanBeSuppressed(d)) + .Where(d => fixer.CanBeSuppressedOrUnsuppressed(d)) .ToImmutableArray(); + if (!IncludeUnsuppressedDiagnostics) + { + diagnostics = diagnostics.WhereAsArray(d => d.IsSuppressed); + } + var wrapperCodeFixer = new WrapperCodeFixProvider(fixer, diagnostics); return GetDiagnosticAndFixes(diagnostics, provider, wrapperCodeFixer, testDriver, document, span, annotation, fixAllActionId); } From e08ced0e0d667800e94d25957f5a3a401be742ce Mon Sep 17 00:00:00 2001 From: Manish Vasani Date: Wed, 23 Sep 2015 12:46:41 -0700 Subject: [PATCH 48/83] Add some doc comments, remove unused code and fix a unit test. --- .../Suppression/SuppressionTests.vb | 2 +- ...nCodeFixProvider.IPragmaBasedCodeAction.cs | 3 ++ ...onCodeFixProvider.PragmaBatchFixHelpers.cs | 7 +++- ...uppressionCodeFixProvider.PragmaHelpers.cs | 40 ++----------------- ...ovider.PragmaWarningBatchFixAllProvider.cs | 3 ++ ....RemoveSuppressionCodeAction.BatchFixer.cs | 3 ++ ...FixProvider.RemoveSuppressionCodeAction.cs | 3 ++ ...r.RemoveSuppressionCodeAction_Attribute.cs | 3 ++ ...ider.RemoveSuppressionCodeAction_Pragma.cs | 3 ++ 9 files changed, 27 insertions(+), 40 deletions(-) diff --git a/src/EditorFeatures/VisualBasicTest/Diagnostics/Suppression/SuppressionTests.vb b/src/EditorFeatures/VisualBasicTest/Diagnostics/Suppression/SuppressionTests.vb index 14870366960e0..5bce81a516347 100644 --- a/src/EditorFeatures/VisualBasicTest/Diagnostics/Suppression/SuppressionTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Diagnostics/Suppression/SuppressionTests.vb @@ -402,8 +402,8 @@ End Class]]> Imports System Class C Sub Method() -#Disable Warning BC42024 ' {WRN_UnusedLocal_Title} ' Trivia previous line +#Disable Warning BC42024 ' {WRN_UnusedLocal_Title} Dim x As Integer ' Trivia same line #Enable Warning BC42024 ' {WRN_UnusedLocal_Title} ' Trivia next line diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.IPragmaBasedCodeAction.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.IPragmaBasedCodeAction.cs index d6900e56c98bf..ec31eb40a7d34 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.IPragmaBasedCodeAction.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.IPragmaBasedCodeAction.cs @@ -7,6 +7,9 @@ namespace Microsoft.CodeAnalysis.CodeFixes.Suppression { internal partial class AbstractSuppressionCodeFixProvider { + /// + /// Suppression code action based on pragma add/remove/edit. + /// internal interface IPragmaBasedCodeAction { Task GetChangedDocumentAsync(bool includeStartTokenChange, bool includeEndTokenChange, CancellationToken cancellationToken); diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaBatchFixHelpers.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaBatchFixHelpers.cs index 1c02969c38f51..e6510604166bd 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaBatchFixHelpers.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaBatchFixHelpers.cs @@ -15,6 +15,9 @@ namespace Microsoft.CodeAnalysis.CodeFixes.Suppression { internal partial class AbstractSuppressionCodeFixProvider { + /// + /// Helper methods for pragma suppression add/remove batch fixers. + /// private static class PragmaBatchFixHelpers { public static CodeAction CreateBatchPragmaFix( @@ -41,7 +44,7 @@ private static async Task BatchPragmaFixesAsync( ImmutableArray diagnostics, CancellationToken cancellationToken) { - // We apply all the pragma removal fixes sequentially. + // We apply all the pragma suppression fixes sequentially. // At every application, we track the updated locations for remaining diagnostics in the document. var currentDiagnosticSpans = new Dictionary(); foreach (var diagnostic in diagnostics) @@ -63,7 +66,7 @@ private static async Task BatchPragmaFixesAsync( continue; } - // Compute and apply pragma removal fix. + // Compute and apply pragma suppression fix. var currentTree = await currentDocument.GetSyntaxTreeAsync(cancellationToken).ConfigureAwait(false); var currentLocation = Location.Create(currentTree, currentDiagnosticSpan); diagnostic = Diagnostic.Create( diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaHelpers.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaHelpers.cs index 7afeb564118eb..790ce618cca8d 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaHelpers.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaHelpers.cs @@ -13,6 +13,9 @@ namespace Microsoft.CodeAnalysis.CodeFixes.Suppression { internal partial class AbstractSuppressionCodeFixProvider { + /// + /// Helper methods for pragma based suppression code actions. + /// private static class PragmaHelpers { internal async static Task GetChangeDocumentWithPragmaAdjustedAsync( @@ -166,43 +169,6 @@ internal static SyntaxToken GetNewEndTokenWithAddedPragma(SyntaxToken endToken, return endToken.WithTrailingTrivia(trivia.InsertRange(index, pragmaTrivia)); }; } - - internal static void ResolveFixAllMergeConflictForPragmaAdd(List cumulativeChanges, int indexOfCurrentCumulativeChange, TextChange conflictingChange, bool isAddPragmaWarningSuppression) - { - // If there are multiple diagnostics with different IDs on the same line, we want to retain all the added pragmas. - var cumulativeChange = cumulativeChanges[indexOfCurrentCumulativeChange]; - var mergedChange = ResolveFixAllMergeConflictForPragmaAdd(cumulativeChange, conflictingChange, isAddPragmaWarningSuppression: false); - cumulativeChanges[indexOfCurrentCumulativeChange] = mergedChange; - } - - private static TextChange ResolveFixAllMergeConflictForPragmaAdd(TextChange cumulativeChange, TextChange conflictingChange, bool isAddPragmaWarningSuppression) - { - // If one of the change is a removal, just return the other one. - if (string.IsNullOrEmpty(cumulativeChange.NewText)) - { - return conflictingChange; - } - else if (string.IsNullOrEmpty(conflictingChange.NewText)) - { - return cumulativeChange; - } - - // We have 2 code actions trying to add a pragma directive at the same location. - // If these are different IDs, then the order doesn't really matter. - // However, if these are disable and enable directives with same ID, then order does matter. - // We won't to make sure that for add suppression case, the restore precedes the enable and for remove suppression case, it is vice versa. - // We get the right ordering by sorting the pragma directive text. - string newText = cumulativeChange.NewText + conflictingChange.NewText; - var conflictChangeLexicallySmaller = string.Compare(conflictingChange.NewText, cumulativeChange.NewText, StringComparison.OrdinalIgnoreCase) < 0; - if ((isAddPragmaWarningSuppression && !conflictChangeLexicallySmaller) || - (!isAddPragmaWarningSuppression && conflictChangeLexicallySmaller)) - { - newText = conflictingChange.NewText + cumulativeChange.NewText; - } - - var newSpan = new TextSpan(cumulativeChange.Span.Start, cumulativeChange.Span.Length); - return new TextChange(newSpan, newText); - } } } } diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaWarningBatchFixAllProvider.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaWarningBatchFixAllProvider.cs index 595f929de8077..20744e78382b8 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaWarningBatchFixAllProvider.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.PragmaWarningBatchFixAllProvider.cs @@ -14,6 +14,9 @@ namespace Microsoft.CodeAnalysis.CodeFixes.Suppression { internal abstract partial class AbstractSuppressionCodeFixProvider : ISuppressionFixProvider { + /// + /// Batch fixer for pragma suppress code action. + /// internal sealed class PragmaWarningBatchFixAllProvider : BatchFixAllProvider { private readonly AbstractSuppressionCodeFixProvider _suppressionFixProvider; diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.BatchFixer.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.BatchFixer.cs index c8ad7a7ab2323..8946b3233bebd 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.BatchFixer.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.BatchFixer.cs @@ -20,6 +20,9 @@ public static BatchFixAllProvider GetBatchFixer(AbstractSuppressionCodeFixProvid return new BatchFixer(suppressionFixProvider); } + /// + /// Batch fixer for pragma suppression removal code action. + /// private sealed class BatchFixer : BatchFixAllProvider { private readonly AbstractSuppressionCodeFixProvider _suppressionFixProvider; diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.cs index ec74fa12de965..8955cb51d16b2 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction.cs @@ -7,6 +7,9 @@ namespace Microsoft.CodeAnalysis.CodeFixes.Suppression { internal abstract partial class AbstractSuppressionCodeFixProvider : ISuppressionFixProvider { + /// + /// Base type for remove suppression code actions. + /// internal abstract partial class RemoveSuppressionCodeAction : AbstractSuppressionCodeAction { private readonly Document _document; diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Attribute.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Attribute.cs index 5baea72396044..abdf78cf71dba 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Attribute.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Attribute.cs @@ -10,6 +10,9 @@ internal abstract partial class AbstractSuppressionCodeFixProvider : ISuppressio { internal abstract partial class RemoveSuppressionCodeAction { + /// + /// Code action to remove suppress message attributes for remove suppression. + /// private sealed class AttributeRemoveAction : RemoveSuppressionCodeAction { private readonly AttributeData _attribute; diff --git a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Pragma.cs b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Pragma.cs index 3d0a96d1fa036..11b66d167e557 100644 --- a/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Pragma.cs +++ b/src/Features/Core/Portable/CodeFixes/Suppression/AbstractSuppressionCodeFixProvider.RemoveSuppressionCodeAction_Pragma.cs @@ -16,6 +16,9 @@ internal abstract partial class AbstractSuppressionCodeFixProvider : ISuppressio { internal abstract partial class RemoveSuppressionCodeAction { + /// + /// Code action to edit/remove/add the pragma directives for removing diagnostic suppression. + /// private class PragmaRemoveAction : RemoveSuppressionCodeAction, IPragmaBasedCodeAction { private readonly SuppressionTargetInfo _suppressionTargetInfo; From c6012415b1c284748484f73f0dea71c89a7281d8 Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Fri, 24 Jul 2015 13:50:40 -0700 Subject: [PATCH 49/83] Add analyzer loading support for CoreCLR Adds a new type, CoreClrAnalyzerAssemblyLoader, that is responsible for finding and loading analyzer assemblies on CoreCLR. This is used in the CscCore and VbcCore CoreCLR-targeting projects. --- src/Compilers/CSharp/CscCore/CscCore.csproj | 7 +- src/Compilers/CSharp/CscCore/Program.cs | 3 +- src/Compilers/CSharp/CscCore/project.json | 3 +- .../CSharp/CscCore/project.lock.json | 52 ++++++ src/Compilers/CSharp/csc/csc.csproj | 5 +- .../Core/VBCSCompiler/VBCSCompiler.csproj | 3 + .../Helpers/AbstractAnalyzerAssemblyLoader.cs | 38 +--- .../Helpers/AnalyzerAssemblyLoadUtils.cs | 45 +++++ .../Helpers/CoreClrAnalyzerAssemblyLoader.cs | 163 ++++++++++++++++++ .../Helpers/NoOpAnalyzerAssemblyLoader.cs | 16 -- src/Compilers/VisualBasic/VbcCore/Program.cs | 2 +- .../VisualBasic/VbcCore/VbcCore.csproj | 7 +- .../VisualBasic/VbcCore/project.json | 3 +- .../VisualBasic/VbcCore/project.lock.json | 52 ++++++ src/Compilers/VisualBasic/vbc/vbc.csproj | 3 + .../Desktop/TestUtilities.Desktop.csproj | 5 +- .../Core/Desktop/Workspaces.Desktop.csproj | 5 +- 17 files changed, 349 insertions(+), 63 deletions(-) create mode 100644 src/Compilers/Helpers/AnalyzerAssemblyLoadUtils.cs create mode 100644 src/Compilers/Helpers/CoreClrAnalyzerAssemblyLoader.cs delete mode 100644 src/Compilers/Helpers/NoOpAnalyzerAssemblyLoader.cs diff --git a/src/Compilers/CSharp/CscCore/CscCore.csproj b/src/Compilers/CSharp/CscCore/CscCore.csproj index 89b6aeb3c75ab..a63658607565c 100644 --- a/src/Compilers/CSharp/CscCore/CscCore.csproj +++ b/src/Compilers/CSharp/CscCore/CscCore.csproj @@ -67,8 +67,11 @@ ConsoleUtil.cs - - ConsoleUtil.cs + + CoreClrAnalyzerAssemblyLoader.cs + + + AnalyzerAssemblyLoadUtils.cs diff --git a/src/Compilers/CSharp/CscCore/Program.cs b/src/Compilers/CSharp/CscCore/Program.cs index 0d02af32b7d6b..4729803d613a2 100644 --- a/src/Compilers/CSharp/CscCore/Program.cs +++ b/src/Compilers/CSharp/CscCore/Program.cs @@ -3,6 +3,7 @@ using System; using System.IO; using System.Runtime.InteropServices; +using Microsoft.CodeAnalysis; namespace Microsoft.CodeAnalysis.CSharp.CommandLine { @@ -12,6 +13,6 @@ public static int Main(string[] args) => Csc.Run(args: args, clientDirectory: AppContext.BaseDirectory, sdkDirectory: null, - analyzerLoader: new NoOpAnalyzerAssemblyLoader()); + analyzerLoader: CoreClrAnalyzerAssemblyLoader.CreateAndSetDefault()); } } diff --git a/src/Compilers/CSharp/CscCore/project.json b/src/Compilers/CSharp/CscCore/project.json index f49d49cad2744..3bbc7c9887493 100644 --- a/src/Compilers/CSharp/CscCore/project.json +++ b/src/Compilers/CSharp/CscCore/project.json @@ -23,8 +23,9 @@ "System.Runtime.Extensions": "4.0.11-beta-23321", "System.Runtime.Handles": "4.0.1-beta-23321", "System.Runtime.InteropServices": "4.0.21-beta-23321", - "System.Security.Cryptography.Hashing.Algorithms": "4.0.0-beta-23311", + "System.Runtime.Loader": "4.0.0-beta-23321", "System.Runtime.Serialization.Json": "4.0.1-beta-23321", + "System.Security.Cryptography.Hashing.Algorithms": "4.0.0-beta-23311", "System.Text.Encoding": "4.0.11-beta-23321", "System.Text.Encoding.Extensions": "4.0.11-beta-23321", "System.Threading": "4.0.11-beta-23321", diff --git a/src/Compilers/CSharp/CscCore/project.lock.json b/src/Compilers/CSharp/CscCore/project.lock.json index feaae53a73437..bf187a281700b 100644 --- a/src/Compilers/CSharp/CscCore/project.lock.json +++ b/src/Compilers/CSharp/CscCore/project.lock.json @@ -478,6 +478,19 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, + "System.Runtime.Loader/4.0.0-beta-23321": { + "dependencies": { + "System.IO": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Loader.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Loader.dll": {} + } + }, "System.Runtime.Serialization.Json/4.0.1-beta-23321": { "dependencies": { "System.Private.DataContractSerialization": "[4.0.1-beta-23321, )" @@ -1391,6 +1404,19 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, + "System.Runtime.Loader/4.0.0-beta-23321": { + "dependencies": { + "System.IO": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Loader.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Loader.dll": {} + } + }, "System.Runtime.Serialization.Json/4.0.1-beta-23321": { "dependencies": { "System.Private.DataContractSerialization": "[4.0.1-beta-23321, )" @@ -2466,6 +2492,19 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, + "System.Runtime.Loader/4.0.0-beta-23321": { + "dependencies": { + "System.IO": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Loader.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Loader.dll": {} + } + }, "System.Runtime.Serialization.Json/4.0.1-beta-23321": { "dependencies": { "System.Private.DataContractSerialization": "[4.0.1-beta-23321, )" @@ -4581,6 +4620,18 @@ "System.Runtime.InteropServices.nuspec" ] }, + "System.Runtime.Loader/4.0.0-beta-23321": { + "sha512": "xyfQB/CKuzy/kaiMWtNgX16mMTsgt2ktdmG7COIXBFAkHUARSeBAjMOWkGdNWPzOWINYumqamA8JxGsQlPhuPQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Runtime.Loader.dll", + "package/services/metadata/core-properties/55d60ad8f5d24e06bf703dd426e1ec45.psmdcp", + "ref/dotnet/System.Runtime.Loader.dll", + "System.Runtime.Loader.nuspec" + ] + }, "System.Runtime.Serialization.Json/4.0.1-beta-23321": { "sha512": "TWQRwFnriFMykVgsCyowKFI5eLWoceMtoIrrx9Wd2ZL+XAnsdiYe8OUVeL9Q0kLVs3Ew12sPiXtY2wvVDAYR3w==", "type": "Package", @@ -5138,6 +5189,7 @@ "System.Runtime.Extensions >= 4.0.11-beta-23321", "System.Runtime.Handles >= 4.0.1-beta-23321", "System.Runtime.InteropServices >= 4.0.21-beta-23321", + "System.Runtime.Loader >= 4.0.0-beta-23321", "System.Runtime.Serialization.Json >= 4.0.1-beta-23321", "System.Security.Cryptography.Hashing.Algorithms >= 4.0.0-beta-23311", "System.Text.Encoding >= 4.0.11-beta-23321", diff --git a/src/Compilers/CSharp/csc/csc.csproj b/src/Compilers/CSharp/csc/csc.csproj index 24157b1d3e4e0..5a9d652e2e6da 100644 --- a/src/Compilers/CSharp/csc/csc.csproj +++ b/src/Compilers/CSharp/csc/csc.csproj @@ -53,6 +53,9 @@ AbstractAnalyzerAssemblyLoader.cs + + AnalyzerAssemblyLoadUtils.cs + ConsoleUtil.cs @@ -77,4 +80,4 @@ - \ No newline at end of file + diff --git a/src/Compilers/Core/VBCSCompiler/VBCSCompiler.csproj b/src/Compilers/Core/VBCSCompiler/VBCSCompiler.csproj index 920a3facb3732..80076cb30c166 100644 --- a/src/Compilers/Core/VBCSCompiler/VBCSCompiler.csproj +++ b/src/Compilers/Core/VBCSCompiler/VBCSCompiler.csproj @@ -51,6 +51,9 @@ AbstractAnalyzerAssemblyLoader.cs + + AnalyzerAssemblyLoadUtils.cs + ShadowCopyAnalyzerAssemblyLoader.cs diff --git a/src/Compilers/Helpers/AbstractAnalyzerAssemblyLoader.cs b/src/Compilers/Helpers/AbstractAnalyzerAssemblyLoader.cs index 9f51c1d7a0544..460cace3a1572 100644 --- a/src/Compilers/Helpers/AbstractAnalyzerAssemblyLoader.cs +++ b/src/Compilers/Helpers/AbstractAnalyzerAssemblyLoader.cs @@ -11,6 +11,8 @@ using System.Reflection.PortableExecutable; using Roslyn.Utilities; +using static Microsoft.CodeAnalysis.AnalyzerAssemblyLoadUtils; + namespace Microsoft.CodeAnalysis { internal abstract class AbstractAnalyzerAssemblyLoader : IAnalyzerAssemblyLoader @@ -148,41 +150,5 @@ private bool FileMatchesAssemblyName(string path, string assemblySimpleName) { return Path.GetFileNameWithoutExtension(path).Equals(assemblySimpleName, StringComparison.OrdinalIgnoreCase); } - - private static AssemblyIdentity TryGetAssemblyIdentity(string filePath) - { - try - { - if (!File.Exists(filePath)) - { - return null; - } - - using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Delete)) - using (var peReader = new PEReader(stream)) - { - var metadataReader = peReader.GetMetadataReader(); - - AssemblyDefinition assemblyDefinition = metadataReader.GetAssemblyDefinition(); - - string name = metadataReader.GetString(assemblyDefinition.Name); - Version version = assemblyDefinition.Version; - - StringHandle cultureHandle = assemblyDefinition.Culture; - string cultureName = (!cultureHandle.IsNil) ? metadataReader.GetString(cultureHandle) : null; - AssemblyFlags flags = assemblyDefinition.Flags; - - bool hasPublicKey = (flags & AssemblyFlags.PublicKey) != 0; - BlobHandle publicKeyHandle = assemblyDefinition.PublicKey; - ImmutableArray publicKeyOrToken = !publicKeyHandle.IsNil - ? metadataReader.GetBlobBytes(publicKeyHandle).AsImmutableOrNull() - : default(ImmutableArray); - return new AssemblyIdentity(name, version, cultureName, publicKeyOrToken, hasPublicKey); - } - } - catch { } - - return null; - } } } diff --git a/src/Compilers/Helpers/AnalyzerAssemblyLoadUtils.cs b/src/Compilers/Helpers/AnalyzerAssemblyLoadUtils.cs new file mode 100644 index 0000000000000..738bc62480e5f --- /dev/null +++ b/src/Compilers/Helpers/AnalyzerAssemblyLoadUtils.cs @@ -0,0 +1,45 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Immutable; +using System.IO; +using System.Reflection; +using System.Reflection.Metadata; +using System.Reflection.PortableExecutable; + +namespace Microsoft.CodeAnalysis +{ + internal static class AnalyzerAssemblyLoadUtils + { + public static AssemblyIdentity TryGetAssemblyIdentity(string filePath) + { + try + { + using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Delete)) + using (var peReader = new PEReader(stream)) + { + var metadataReader = peReader.GetMetadataReader(); + + AssemblyDefinition assemblyDefinition = metadataReader.GetAssemblyDefinition(); + + string name = metadataReader.GetString(assemblyDefinition.Name); + Version version = assemblyDefinition.Version; + + StringHandle cultureHandle = assemblyDefinition.Culture; + string cultureName = (!cultureHandle.IsNil) ? metadataReader.GetString(cultureHandle) : null; + AssemblyFlags flags = assemblyDefinition.Flags; + + bool hasPublicKey = (flags & AssemblyFlags.PublicKey) != 0; + BlobHandle publicKeyHandle = assemblyDefinition.PublicKey; + ImmutableArray publicKeyOrToken = !publicKeyHandle.IsNil + ? metadataReader.GetBlobBytes(publicKeyHandle).AsImmutableOrNull() + : default(ImmutableArray); + return new AssemblyIdentity(name, version, cultureName, publicKeyOrToken, hasPublicKey); + } + } + catch { } + + return null; + } + } +} diff --git a/src/Compilers/Helpers/CoreClrAnalyzerAssemblyLoader.cs b/src/Compilers/Helpers/CoreClrAnalyzerAssemblyLoader.cs new file mode 100644 index 0000000000000..e5123fad85def --- /dev/null +++ b/src/Compilers/Helpers/CoreClrAnalyzerAssemblyLoader.cs @@ -0,0 +1,163 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Loader; +using Roslyn.Utilities; + +using static Microsoft.CodeAnalysis.AnalyzerAssemblyLoadUtils; + +namespace Microsoft.CodeAnalysis +{ + /// Core CLR compatible wrapper for loading analyzers. + internal sealed class CoreClrAnalyzerAssemblyLoader : AssemblyLoadContext, IAnalyzerAssemblyLoader + { + private readonly Dictionary _pathsToAssemblies = new Dictionary(StringComparer.OrdinalIgnoreCase); + private readonly Dictionary _namesToAssemblies = new Dictionary(); + private readonly List _dependencyPaths = new List(); + private readonly object _guard = new object(); + + /// + /// Creates a new instance of , + /// sets that instance to be the default , + /// and returns that instance. Throws if the Default is already set or the + /// binding model is already locked. + /// + public static CoreClrAnalyzerAssemblyLoader CreateAndSetDefault() + { + var assemblyLoader = new CoreClrAnalyzerAssemblyLoader(); + InitializeDefaultContext(assemblyLoader); + return assemblyLoader; + } + + public void AddDependencyLocation(string fullPath) + { + if (fullPath == null) + { + throw new ArgumentNullException(nameof(fullPath)); + } + + lock (_guard) + { + _dependencyPaths.Add(fullPath); + } + } + + public Assembly LoadFromPath(string fullPath) + { + if (fullPath == null) + { + throw new ArgumentNullException(nameof(fullPath)); + } + + Debug.Assert(PathUtilities.IsAbsolute(fullPath)); + + lock (_guard) + { + Assembly assembly; + if (_pathsToAssemblies.TryGetValue(fullPath, out assembly)) + { + return assembly; + } + + return LoadAndCache(fullPath); + } + } + + private static readonly string[] s_extensions = new string[] { ".dll", ".exe" }; + + /// + /// Searches and loads from the base directory of the current + /// app context + /// + private Assembly AppContextLoad(AssemblyName assemblyName) + { + var baseDir = AppContext.BaseDirectory; + foreach (var extension in s_extensions) + { + var path = Path.Combine(baseDir, assemblyName.Name + extension); + + if (File.Exists(path)) + { + lock (_guard) + { + return LoadAndCache(path); + } + } + } + return null; + } + + protected override Assembly Load(AssemblyName assemblyName) + { + lock (_guard) + { + // Try and grab assembly using standard load + Assembly assembly = AppContextLoad(assemblyName); + if (assembly != null) + { + return assembly; + } + + string fullName = assemblyName.FullName; + + if (_namesToAssemblies.TryGetValue(fullName, out assembly)) + { + return assembly; + } + + AssemblyIdentity requestedIdentity; + if (!AssemblyIdentity.TryParseDisplayName(fullName, out requestedIdentity)) + { + return null; + } + + foreach (var candidatePath in _dependencyPaths) + { + if (IsAssemblyAlreadyLoaded(candidatePath) || + !FileMatchesAssemblyName(candidatePath, requestedIdentity.Name)) + { + continue; + } + + var candidateIdentity = TryGetAssemblyIdentity(candidatePath); + + if (requestedIdentity.Equals(candidateIdentity)) + { + return LoadAndCache(candidatePath); + } + } + + return null; + } + } + + /// + /// Assumes we have a lock on _guard + /// + private Assembly LoadAndCache(string fullPath) + { + var assembly = LoadFromAssemblyPath(fullPath); + var name = assembly.FullName; + + _pathsToAssemblies[fullPath] = assembly; + _namesToAssemblies[name] = assembly; + + return assembly; + } + + private bool IsAssemblyAlreadyLoaded(string path) + { + return _pathsToAssemblies.ContainsKey(path); + } + + private bool FileMatchesAssemblyName(string path, string assemblySimpleName) + { + return Path.GetFileNameWithoutExtension(path).Equals(assemblySimpleName, StringComparison.OrdinalIgnoreCase); + } + } +} diff --git a/src/Compilers/Helpers/NoOpAnalyzerAssemblyLoader.cs b/src/Compilers/Helpers/NoOpAnalyzerAssemblyLoader.cs deleted file mode 100644 index aeb7d124b70d2..0000000000000 --- a/src/Compilers/Helpers/NoOpAnalyzerAssemblyLoader.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System.Reflection; - -namespace Microsoft.CodeAnalysis -{ - /// - /// Workaround for assembly loading in core clr -- this loader does nothing. - /// - internal sealed class NoOpAnalyzerAssemblyLoader : IAnalyzerAssemblyLoader - { - public Assembly LoadFromPath(string fullPath) => null; - - public void AddDependencyLocation(string fullPath) { } - } -} diff --git a/src/Compilers/VisualBasic/VbcCore/Program.cs b/src/Compilers/VisualBasic/VbcCore/Program.cs index 3717f6b984a14..5a2e399ec2845 100644 --- a/src/Compilers/VisualBasic/VbcCore/Program.cs +++ b/src/Compilers/VisualBasic/VbcCore/Program.cs @@ -12,6 +12,6 @@ public static int Main(string[] args) => Vbc.Run(args: args, clientDirectory: AppContext.BaseDirectory, sdkDirectory: @"C:\Windows\Microsoft.NET\Framework\v4.0.30319", - analyzerLoader: new NoOpAnalyzerAssemblyLoader()); + analyzerLoader: CoreClrAnalyzerAssemblyLoader.CreateAndSetDefault()); } } diff --git a/src/Compilers/VisualBasic/VbcCore/VbcCore.csproj b/src/Compilers/VisualBasic/VbcCore/VbcCore.csproj index c4b816eb62210..875e40db99330 100644 --- a/src/Compilers/VisualBasic/VbcCore/VbcCore.csproj +++ b/src/Compilers/VisualBasic/VbcCore/VbcCore.csproj @@ -67,8 +67,11 @@ ConsoleUtil.cs - - ConsoleUtil.cs + + CoreClrAnalyzerAssemblyLoader.cs + + + AnalyzerAssemblyLoadUtils.cs diff --git a/src/Compilers/VisualBasic/VbcCore/project.json b/src/Compilers/VisualBasic/VbcCore/project.json index 25422da7c6dbd..29630aa6d7c6b 100644 --- a/src/Compilers/VisualBasic/VbcCore/project.json +++ b/src/Compilers/VisualBasic/VbcCore/project.json @@ -23,8 +23,9 @@ "System.Runtime.Extensions": "4.0.11-beta-23321", "System.Runtime.Handles": "4.0.1-beta-23321", "System.Runtime.InteropServices": "4.0.21-beta-23321", - "System.Security.Cryptography.Hashing.Algorithms": "4.0.0-beta-23311", + "System.Runtime.Loader": "4.0.0-beta-23321", "System.Runtime.Serialization.Json": "4.0.1-beta-23321", + "System.Security.Cryptography.Hashing.Algorithms": "4.0.0-beta-23311", "System.Text.Encoding": "4.0.11-beta-23321", "System.Text.Encoding.Extensions": "4.0.11-beta-23321", "System.Threading": "4.0.11-beta-23321", diff --git a/src/Compilers/VisualBasic/VbcCore/project.lock.json b/src/Compilers/VisualBasic/VbcCore/project.lock.json index feaae53a73437..bf187a281700b 100644 --- a/src/Compilers/VisualBasic/VbcCore/project.lock.json +++ b/src/Compilers/VisualBasic/VbcCore/project.lock.json @@ -478,6 +478,19 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, + "System.Runtime.Loader/4.0.0-beta-23321": { + "dependencies": { + "System.IO": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Loader.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Loader.dll": {} + } + }, "System.Runtime.Serialization.Json/4.0.1-beta-23321": { "dependencies": { "System.Private.DataContractSerialization": "[4.0.1-beta-23321, )" @@ -1391,6 +1404,19 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, + "System.Runtime.Loader/4.0.0-beta-23321": { + "dependencies": { + "System.IO": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Loader.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Loader.dll": {} + } + }, "System.Runtime.Serialization.Json/4.0.1-beta-23321": { "dependencies": { "System.Private.DataContractSerialization": "[4.0.1-beta-23321, )" @@ -2466,6 +2492,19 @@ "lib/DNXCore50/System.Runtime.InteropServices.dll": {} } }, + "System.Runtime.Loader/4.0.0-beta-23321": { + "dependencies": { + "System.IO": "[4.0.0, )", + "System.Reflection": "[4.0.0, )", + "System.Runtime": "[4.0.0, )" + }, + "compile": { + "ref/dotnet/System.Runtime.Loader.dll": {} + }, + "runtime": { + "lib/DNXCore50/System.Runtime.Loader.dll": {} + } + }, "System.Runtime.Serialization.Json/4.0.1-beta-23321": { "dependencies": { "System.Private.DataContractSerialization": "[4.0.1-beta-23321, )" @@ -4581,6 +4620,18 @@ "System.Runtime.InteropServices.nuspec" ] }, + "System.Runtime.Loader/4.0.0-beta-23321": { + "sha512": "xyfQB/CKuzy/kaiMWtNgX16mMTsgt2ktdmG7COIXBFAkHUARSeBAjMOWkGdNWPzOWINYumqamA8JxGsQlPhuPQ==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/DNXCore50/System.Runtime.Loader.dll", + "package/services/metadata/core-properties/55d60ad8f5d24e06bf703dd426e1ec45.psmdcp", + "ref/dotnet/System.Runtime.Loader.dll", + "System.Runtime.Loader.nuspec" + ] + }, "System.Runtime.Serialization.Json/4.0.1-beta-23321": { "sha512": "TWQRwFnriFMykVgsCyowKFI5eLWoceMtoIrrx9Wd2ZL+XAnsdiYe8OUVeL9Q0kLVs3Ew12sPiXtY2wvVDAYR3w==", "type": "Package", @@ -5138,6 +5189,7 @@ "System.Runtime.Extensions >= 4.0.11-beta-23321", "System.Runtime.Handles >= 4.0.1-beta-23321", "System.Runtime.InteropServices >= 4.0.21-beta-23321", + "System.Runtime.Loader >= 4.0.0-beta-23321", "System.Runtime.Serialization.Json >= 4.0.1-beta-23321", "System.Security.Cryptography.Hashing.Algorithms >= 4.0.0-beta-23311", "System.Text.Encoding >= 4.0.11-beta-23321", diff --git a/src/Compilers/VisualBasic/vbc/vbc.csproj b/src/Compilers/VisualBasic/vbc/vbc.csproj index 31be88342317a..b9c622423ac52 100644 --- a/src/Compilers/VisualBasic/vbc/vbc.csproj +++ b/src/Compilers/VisualBasic/vbc/vbc.csproj @@ -72,6 +72,9 @@ AbstractAnalyzerAssemblyLoader.cs + + AnalyzerAssemblyLoadUtils.cs + ConsoleUtil.cs diff --git a/src/Test/Utilities/Desktop/TestUtilities.Desktop.csproj b/src/Test/Utilities/Desktop/TestUtilities.Desktop.csproj index 0e3742f85cb83..75073b8ecd107 100644 --- a/src/Test/Utilities/Desktop/TestUtilities.Desktop.csproj +++ b/src/Test/Utilities/Desktop/TestUtilities.Desktop.csproj @@ -89,6 +89,9 @@ AbstractAnalyzerAssemblyLoader.cs + + AnalyzerAssemblyLoadUtils.cs + SimpleAnalyzerAssemblyLoader.cs @@ -163,4 +166,4 @@ - + \ No newline at end of file diff --git a/src/Workspaces/Core/Desktop/Workspaces.Desktop.csproj b/src/Workspaces/Core/Desktop/Workspaces.Desktop.csproj index 2cfcbb5f4f803..1cb331496ae48 100644 --- a/src/Workspaces/Core/Desktop/Workspaces.Desktop.csproj +++ b/src/Workspaces/Core/Desktop/Workspaces.Desktop.csproj @@ -58,6 +58,9 @@ InternalUtilities\AbstractAnalyzerAssemblyLoader.cs + + AnalyzerAssemblyLoadUtils.cs + InternalUtilities\FusionAssemblyIdentity.cs @@ -167,4 +170,4 @@ - \ No newline at end of file + From 51919aab369feec39abfcd43fc656a3c7e6470f6 Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Wed, 23 Sep 2015 16:30:21 -0700 Subject: [PATCH 50/83] Update the *nix NuGet packages --- cibuild.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cibuild.sh b/cibuild.sh index 3e389f3466659..d8f02b6910543 100755 --- a/cibuild.sh +++ b/cibuild.sh @@ -79,7 +79,7 @@ restore_nuget() { acquire_sem_or_wait "restore_nuget" - local package_name="nuget.12.zip" + local package_name="nuget.13.zip" local target="/tmp/$package_name" echo "Installing NuGet Packages $target" if [ -f $target ]; then From e93ca6378a3675f6b94850bc99331884674f5ef4 Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Wed, 23 Sep 2015 17:45:16 -0700 Subject: [PATCH 51/83] Add System.Text.Encoding.CodePages and update nuget zip --- cibuild.sh | 2 +- src/Compilers/CSharp/CscCore/project.json | 1 + .../CSharp/CscCore/project.lock.json | 127 ++++++++++++++++++ .../VisualBasic/VbcCore/project.json | 1 + .../VisualBasic/VbcCore/project.lock.json | 127 ++++++++++++++++++ 5 files changed, 257 insertions(+), 1 deletion(-) diff --git a/cibuild.sh b/cibuild.sh index d8f02b6910543..8a0e9cfb0975a 100755 --- a/cibuild.sh +++ b/cibuild.sh @@ -79,7 +79,7 @@ restore_nuget() { acquire_sem_or_wait "restore_nuget" - local package_name="nuget.13.zip" + local package_name="nuget.14.zip" local target="/tmp/$package_name" echo "Installing NuGet Packages $target" if [ -f $target ]; then diff --git a/src/Compilers/CSharp/CscCore/project.json b/src/Compilers/CSharp/CscCore/project.json index 3bbc7c9887493..bee4c13f988db 100644 --- a/src/Compilers/CSharp/CscCore/project.json +++ b/src/Compilers/CSharp/CscCore/project.json @@ -27,6 +27,7 @@ "System.Runtime.Serialization.Json": "4.0.1-beta-23321", "System.Security.Cryptography.Hashing.Algorithms": "4.0.0-beta-23311", "System.Text.Encoding": "4.0.11-beta-23321", + "System.Text.Encoding.CodePages": "4.0.1-beta-23321", "System.Text.Encoding.Extensions": "4.0.11-beta-23321", "System.Threading": "4.0.11-beta-23321", "System.Threading.Tasks": "4.0.11-beta-23321", diff --git a/src/Compilers/CSharp/CscCore/project.lock.json b/src/Compilers/CSharp/CscCore/project.lock.json index bf187a281700b..905e9db40b28d 100644 --- a/src/Compilers/CSharp/CscCore/project.lock.json +++ b/src/Compilers/CSharp/CscCore/project.lock.json @@ -582,6 +582,15 @@ "lib/DNXCore50/System.Text.Encoding.dll": {} } }, + "System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )", + "System.Text.Encoding": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Text.Encoding.CodePages.dll": {} + } + }, "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", @@ -940,6 +949,27 @@ "lib/dotnet/System.Private.Uri.dll": {} } }, + "runtime.unix.System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "lib/dotnet/System.Text.Encoding.CodePages.dll": {} + } + }, "runtime.unix.System.Threading/4.0.11-beta-23321": { "compile": { "ref/dotnet/_._": {} @@ -1508,6 +1538,15 @@ "lib/DNXCore50/System.Text.Encoding.dll": {} } }, + "System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )", + "System.Text.Encoding": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Text.Encoding.CodePages.dll": {} + } + }, "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", @@ -2028,6 +2067,27 @@ "lib/DNXCore50/System.Runtime.Extensions.dll": {} } }, + "runtime.win7.System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/win7/lib/dotnet/System.Text.Encoding.CodePages.dll": {} + } + }, "runtime.win7.System.Threading/4.0.11-beta-23321": { "compile": { "ref/dotnet/_._": {} @@ -2596,6 +2656,15 @@ "lib/DNXCore50/System.Text.Encoding.dll": {} } }, + "System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )", + "System.Text.Encoding": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Text.Encoding.CodePages.dll": {} + } + }, "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", @@ -3014,6 +3083,18 @@ "runtime.unix.System.Private.Uri.nuspec" ] }, + "runtime.unix.System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "sha512": "ZZS7hqjzl5l0xtJzr/WmK+4Q2Vrr3RcI0KjCNARH2GT2Zcj0Hsnm1Fd+5M9eOg36YbSjy3ZNVn7JbH/Q7ioPEA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Text.Encoding.CodePages.dll", + "package/services/metadata/core-properties/3da52d6f11ac4de8b21b1c4988e87d14.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.Text.Encoding.CodePages.nuspec" + ] + }, "runtime.unix.System.Threading/4.0.11-beta-23321": { "sha512": "QlIzt08mk+SpmK8PuZJA+H0UfgAurvw5vRcAQImrVxKezS+ILuQ3YTkwQ/Q79koGHfgeFjWMdjYCSGY2KrfVDQ==", "type": "Package", @@ -3424,6 +3505,31 @@ "runtimes/win8-aot/lib/netcore50/zh-hant/System.Runtime.Extensions.xml" ] }, + "runtime.win7.System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "sha512": "0XPZ3FG5C/jV/uzM7YY9ZcdbBMyU3Bh1VmT3v0/EaTQllb9r7+oTy2egWyCdgiFDDKpdfiERVw9EJGQQA3nTDA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/win8/_._", + "lib/wp8/_._", + "lib/wpa81/_._", + "package/services/metadata/core-properties/b4379f524aba4b37927aad12501a01d3.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Text.Encoding.CodePages.nuspec", + "runtimes/win7/lib/dotnet/de/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/es/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/fr/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/it/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/ja/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/ko/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/ru/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/System.Text.Encoding.CodePages.dll", + "runtimes/win7/lib/dotnet/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.Text.Encoding.CodePages.xml" + ] + }, "runtime.win7.System.Threading/4.0.11-beta-23321": { "sha512": "9S9vqzTsHTp59g7TSJEBUbG7fgZoSM9i1bbP7QWzksILC+ga7Uw8cgg6G/TSgYoCDc8m0gylokUJRFevDyQJbg==", "type": "Package", @@ -4809,6 +4915,26 @@ "System.Text.Encoding.nuspec" ] }, + "System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "sha512": "2wTRNrgvdymVYnGfQJFf28UX8N+JipXBZjdLMoecCw5eIVel7ffKYlzQKFbHFmZ8RIxLsjhsr1oEn542acsd/Q==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/ea1d25d85d6a4287a5f88d11ba69be14.psmdcp", + "ref/dotnet/System.Text.Encoding.CodePages.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtime.json", + "System.Text.Encoding.CodePages.nuspec" + ] + }, "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "sha512": "DfR8dxgjAyrPeFGLG+O9mLvC5eP76hMMLrOsBMqVBnfwxSa/TYjlNfjluR+bHI/qQZ/W0JELViC93lNX9LGsSQ==", "type": "Package", @@ -5193,6 +5319,7 @@ "System.Runtime.Serialization.Json >= 4.0.1-beta-23321", "System.Security.Cryptography.Hashing.Algorithms >= 4.0.0-beta-23311", "System.Text.Encoding >= 4.0.11-beta-23321", + "System.Text.Encoding.CodePages >= 4.0.1-beta-23321", "System.Text.Encoding.Extensions >= 4.0.11-beta-23321", "System.Threading >= 4.0.11-beta-23321", "System.Threading.Tasks >= 4.0.11-beta-23321", diff --git a/src/Compilers/VisualBasic/VbcCore/project.json b/src/Compilers/VisualBasic/VbcCore/project.json index 29630aa6d7c6b..2258b9acac633 100644 --- a/src/Compilers/VisualBasic/VbcCore/project.json +++ b/src/Compilers/VisualBasic/VbcCore/project.json @@ -27,6 +27,7 @@ "System.Runtime.Serialization.Json": "4.0.1-beta-23321", "System.Security.Cryptography.Hashing.Algorithms": "4.0.0-beta-23311", "System.Text.Encoding": "4.0.11-beta-23321", + "System.Text.Encoding.CodePages": "4.0.1-beta-23321", "System.Text.Encoding.Extensions": "4.0.11-beta-23321", "System.Threading": "4.0.11-beta-23321", "System.Threading.Tasks": "4.0.11-beta-23321", diff --git a/src/Compilers/VisualBasic/VbcCore/project.lock.json b/src/Compilers/VisualBasic/VbcCore/project.lock.json index bf187a281700b..905e9db40b28d 100644 --- a/src/Compilers/VisualBasic/VbcCore/project.lock.json +++ b/src/Compilers/VisualBasic/VbcCore/project.lock.json @@ -582,6 +582,15 @@ "lib/DNXCore50/System.Text.Encoding.dll": {} } }, + "System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )", + "System.Text.Encoding": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Text.Encoding.CodePages.dll": {} + } + }, "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", @@ -940,6 +949,27 @@ "lib/dotnet/System.Private.Uri.dll": {} } }, + "runtime.unix.System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "lib/dotnet/System.Text.Encoding.CodePages.dll": {} + } + }, "runtime.unix.System.Threading/4.0.11-beta-23321": { "compile": { "ref/dotnet/_._": {} @@ -1508,6 +1538,15 @@ "lib/DNXCore50/System.Text.Encoding.dll": {} } }, + "System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )", + "System.Text.Encoding": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Text.Encoding.CodePages.dll": {} + } + }, "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", @@ -2028,6 +2067,27 @@ "lib/DNXCore50/System.Runtime.Extensions.dll": {} } }, + "runtime.win7.System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "dependencies": { + "System.Collections": "[4.0.10, )", + "System.Globalization": "[4.0.10, )", + "System.IO": "[4.0.10, )", + "System.Reflection": "[4.0.10, )", + "System.Resources.ResourceManager": "[4.0.0, )", + "System.Runtime": "[4.0.20, )", + "System.Runtime.Extensions": "[4.0.10, )", + "System.Runtime.Handles": "[4.0.0, )", + "System.Runtime.InteropServices": "[4.0.20, )", + "System.Text.Encoding": "[4.0.10, )", + "System.Threading": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/_._": {} + }, + "runtime": { + "runtimes/win7/lib/dotnet/System.Text.Encoding.CodePages.dll": {} + } + }, "runtime.win7.System.Threading/4.0.11-beta-23321": { "compile": { "ref/dotnet/_._": {} @@ -2596,6 +2656,15 @@ "lib/DNXCore50/System.Text.Encoding.dll": {} } }, + "System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "dependencies": { + "System.Runtime": "[4.0.0, )", + "System.Text.Encoding": "[4.0.10, )" + }, + "compile": { + "ref/dotnet/System.Text.Encoding.CodePages.dll": {} + } + }, "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "dependencies": { "System.Runtime": "[4.0.0, )", @@ -3014,6 +3083,18 @@ "runtime.unix.System.Private.Uri.nuspec" ] }, + "runtime.unix.System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "sha512": "ZZS7hqjzl5l0xtJzr/WmK+4Q2Vrr3RcI0KjCNARH2GT2Zcj0Hsnm1Fd+5M9eOg36YbSjy3ZNVn7JbH/Q7ioPEA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/dotnet/System.Text.Encoding.CodePages.dll", + "package/services/metadata/core-properties/3da52d6f11ac4de8b21b1c4988e87d14.psmdcp", + "ref/dotnet/_._", + "runtime.unix.System.Text.Encoding.CodePages.nuspec" + ] + }, "runtime.unix.System.Threading/4.0.11-beta-23321": { "sha512": "QlIzt08mk+SpmK8PuZJA+H0UfgAurvw5vRcAQImrVxKezS+ILuQ3YTkwQ/Q79koGHfgeFjWMdjYCSGY2KrfVDQ==", "type": "Package", @@ -3424,6 +3505,31 @@ "runtimes/win8-aot/lib/netcore50/zh-hant/System.Runtime.Extensions.xml" ] }, + "runtime.win7.System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "sha512": "0XPZ3FG5C/jV/uzM7YY9ZcdbBMyU3Bh1VmT3v0/EaTQllb9r7+oTy2egWyCdgiFDDKpdfiERVw9EJGQQA3nTDA==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/win8/_._", + "lib/wp8/_._", + "lib/wpa81/_._", + "package/services/metadata/core-properties/b4379f524aba4b37927aad12501a01d3.psmdcp", + "ref/dotnet/_._", + "runtime.win7.System.Text.Encoding.CodePages.nuspec", + "runtimes/win7/lib/dotnet/de/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/es/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/fr/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/it/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/ja/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/ko/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/ru/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/System.Text.Encoding.CodePages.dll", + "runtimes/win7/lib/dotnet/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/zh-hans/System.Text.Encoding.CodePages.xml", + "runtimes/win7/lib/dotnet/zh-hant/System.Text.Encoding.CodePages.xml" + ] + }, "runtime.win7.System.Threading/4.0.11-beta-23321": { "sha512": "9S9vqzTsHTp59g7TSJEBUbG7fgZoSM9i1bbP7QWzksILC+ga7Uw8cgg6G/TSgYoCDc8m0gylokUJRFevDyQJbg==", "type": "Package", @@ -4809,6 +4915,26 @@ "System.Text.Encoding.nuspec" ] }, + "System.Text.Encoding.CodePages/4.0.1-beta-23321": { + "sha512": "2wTRNrgvdymVYnGfQJFf28UX8N+JipXBZjdLMoecCw5eIVel7ffKYlzQKFbHFmZ8RIxLsjhsr1oEn542acsd/Q==", + "type": "Package", + "files": [ + "[Content_Types].xml", + "_rels/.rels", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "package/services/metadata/core-properties/ea1d25d85d6a4287a5f88d11ba69be14.psmdcp", + "ref/dotnet/System.Text.Encoding.CodePages.dll", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "runtime.json", + "System.Text.Encoding.CodePages.nuspec" + ] + }, "System.Text.Encoding.Extensions/4.0.11-beta-23321": { "sha512": "DfR8dxgjAyrPeFGLG+O9mLvC5eP76hMMLrOsBMqVBnfwxSa/TYjlNfjluR+bHI/qQZ/W0JELViC93lNX9LGsSQ==", "type": "Package", @@ -5193,6 +5319,7 @@ "System.Runtime.Serialization.Json >= 4.0.1-beta-23321", "System.Security.Cryptography.Hashing.Algorithms >= 4.0.0-beta-23311", "System.Text.Encoding >= 4.0.11-beta-23321", + "System.Text.Encoding.CodePages >= 4.0.1-beta-23321", "System.Text.Encoding.Extensions >= 4.0.11-beta-23321", "System.Threading >= 4.0.11-beta-23321", "System.Threading.Tasks >= 4.0.11-beta-23321", From fc8f9ad533c0528dfefea8ec10c87a90aed5a51e Mon Sep 17 00:00:00 2001 From: Jonathon Marolf Date: Wed, 23 Sep 2015 17:16:24 -0700 Subject: [PATCH 52/83] Rename Test() to TestAssignmentExpression1() Having something named Test() will cause none of the tests in that type to be run. Causing tests assemblies to silently run without failures. Also fixed boolean operator issue that would have been found by tests. --- .../CSharpTest/Diagnostics/Async/AddAwaitTests.cs | 2 +- .../Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs index 59d64ba59dffb..d4c780720c1f7 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs @@ -140,7 +140,7 @@ public void TestAssignmentExpressionWithConversionInAsyncFunction() } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] - public void Test() + public void TestAssignmentExpression1() { Test( @"using System ; using System . Threading . Tasks ; class TestClass { private async Task MyTestMethod1Async ( ) { Action lambda = async ( ) => { int myInt = [|MyIntMethodAsync ( )|] ; } ; } private Task < int > MyIntMethodAsync ( ) { return Task . FromResult ( result : 1 ) ; } } ", diff --git a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs index 723a85356ccc3..007909e08d15c 100644 --- a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs +++ b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs @@ -139,7 +139,7 @@ private static bool IsInAsyncFunction(ExpressionSyntax expression) case SyntaxKind.ParenthesizedLambdaExpression: case SyntaxKind.SimpleLambdaExpression: case SyntaxKind.AnonymousMethodExpression: - return (node as AnonymousFunctionExpressionSyntax)?.AsyncKeyword.IsMissing == true; + return (node as AnonymousFunctionExpressionSyntax)?.AsyncKeyword.IsMissing == false; case SyntaxKind.MethodDeclaration: return (node as MethodDeclarationSyntax)?.Modifiers.Any(SyntaxKind.AsyncKeyword) == true; default: From a7215951e230ea221374c9d29743a3f79a9a0bef Mon Sep 17 00:00:00 2001 From: Tomas Matousek Date: Wed, 23 Sep 2015 23:16:09 -0700 Subject: [PATCH 53/83] Revisit APIs for accessing script variables --- src/Scripting/CSharp/CSharpScriptCompiler.cs | 3 + .../CSharpTest/InteractiveSessionTests.cs | 4 +- src/Scripting/CSharpTest/ScriptTests.cs | 82 ++++++++++-- src/Scripting/Core/PublicAPI.Unshipped.txt | 10 +- src/Scripting/Core/ScriptCompiler.cs | 2 + src/Scripting/Core/ScriptExecutionState.cs | 9 +- src/Scripting/Core/ScriptState.cs | 76 ++++++++++- src/Scripting/Core/ScriptVariable.cs | 54 ++++---- src/Scripting/Core/ScriptVariables.cs | 121 ------------------ src/Scripting/Core/Scripting.csproj | 13 +- .../Core/ScriptingResources.Designer.cs | 18 +++ src/Scripting/Core/ScriptingResources.resx | 6 + .../VisualBasic/VisualBasicScriptCompiler.vb | 6 + 13 files changed, 217 insertions(+), 187 deletions(-) delete mode 100644 src/Scripting/Core/ScriptVariables.cs diff --git a/src/Scripting/CSharp/CSharpScriptCompiler.cs b/src/Scripting/CSharp/CSharpScriptCompiler.cs index 8dec2b8d81106..c5bcc2e1b12aa 100644 --- a/src/Scripting/CSharp/CSharpScriptCompiler.cs +++ b/src/Scripting/CSharp/CSharpScriptCompiler.cs @@ -1,5 +1,6 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.Threading; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Text; @@ -19,6 +20,8 @@ private CSharpScriptCompiler() public override DiagnosticFormatter DiagnosticFormatter => CSharpDiagnosticFormatter.Instance; + public override StringComparer IdentifierComparer => StringComparer.Ordinal; + public override bool IsCompleteSubmission(SyntaxTree tree) => SyntaxFactory.IsCompleteSubmission(tree); public override SyntaxTree ParseSubmission(SourceText text, CancellationToken cancellationToken) => diff --git a/src/Scripting/CSharpTest/InteractiveSessionTests.cs b/src/Scripting/CSharpTest/InteractiveSessionTests.cs index a7ba1ede56f80..461a961eef767 100644 --- a/src/Scripting/CSharpTest/InteractiveSessionTests.cs +++ b/src/Scripting/CSharpTest/InteractiveSessionTests.cs @@ -26,8 +26,8 @@ public class HostModel public class InteractiveSessionTests : TestBase { private static readonly Assembly s_lazySystemRuntimeAssembly; - private static readonly Assembly SystemRuntimeAssembly = s_lazySystemRuntimeAssembly ?? (s_lazySystemRuntimeAssembly = Assembly.Load(new AssemblyName("System.Runtime, Version=4.0.20.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"))); - private static readonly Assembly HostAssembly = typeof(InteractiveSessionTests).GetTypeInfo().Assembly; + internal static readonly Assembly SystemRuntimeAssembly = s_lazySystemRuntimeAssembly ?? (s_lazySystemRuntimeAssembly = Assembly.Load(new AssemblyName("System.Runtime, Version=4.0.20.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"))); + internal static readonly Assembly HostAssembly = typeof(InteractiveSessionTests).GetTypeInfo().Assembly; // TODO: shouldn't be needed private static readonly ScriptOptions OptionsWithFacades = ScriptOptions.Default.AddReferences(SystemRuntimeAssembly); diff --git a/src/Scripting/CSharpTest/ScriptTests.cs b/src/Scripting/CSharpTest/ScriptTests.cs index 7714a6bdb8b4e..7349a37f46978 100644 --- a/src/Scripting/CSharpTest/ScriptTests.cs +++ b/src/Scripting/CSharpTest/ScriptTests.cs @@ -9,10 +9,16 @@ #pragma warning disable RS0003 // Do not directly await a Task -namespace Microsoft.CodeAnalysis.Scripting.CSharp.Test +namespace Microsoft.CodeAnalysis.Scripting.CSharp.UnitTests { public class ScriptTests : TestBase { + public class Globals + { + public int X; + public int Y; + } + [Fact] public void TestCreateScript() { @@ -128,12 +134,6 @@ public void Do() , ScriptOptions.Default.WithReferences(MscorlibRef, SystemRef, SystemCoreRef, CSharpRef)); } - public class Globals - { - public int X; - public int Y; - } - [Fact] public async Task TestRunScriptWithGlobals() { @@ -234,14 +234,68 @@ public void TestCreateMethodDelegate() #endif [Fact] - public async Task TestGetScriptVariableAfterRunningScript() + public async Task ScriptVariables_Chain() + { + var globals = new Globals { X = 10, Y = 20 }; + + var script = + CSharpScript.Create( + "var a = '1';", + options: ScriptOptions.Default.WithReferences(InteractiveSessionTests.SystemRuntimeAssembly), + globalsType: globals.GetType()). + ContinueWith("var b = 2u;"). + ContinueWith("var a = 3m;"). + ContinueWith("var x = a + b;"). + ContinueWith("var X = Y;"); + + var state = await script.RunAsync(globals); + + AssertEx.Equal(new[] { "a", "b", "a", "x", "X" }, state.Variables.Select(v => v.Name)); + AssertEx.Equal(new object[] { '1', 2u, 3m, 5m, 20 }, state.Variables.Select(v => v.Value)); + AssertEx.Equal(new Type[] { typeof(char), typeof(uint), typeof(decimal), typeof(decimal), typeof(int) }, state.Variables.Select(v => v.Type)); + + Assert.Equal(3m, state.GetVariable("a").Value); + Assert.Equal(2u, state.GetVariable("b").Value); + Assert.Equal(5m, state.GetVariable("x").Value); + Assert.Equal(20, state.GetVariable("X").Value); + + Assert.Equal(null, state.GetVariable("A")); + Assert.Same(state.GetVariable("X"), state.GetVariable("X")); + } + + [Fact] + public async Task ScriptVariable_SetValue() + { + var script = CSharpScript.Create("var x = 1;"); + + var s1 = await script.RunAsync(); + s1.GetVariable("x").Value = 2; + Assert.Equal(2, s1.GetVariable("x").Value); + + // rerunning the script from the beginning rebuilds the state: + var s2 = await s1.Script.RunAsync(); + Assert.Equal(1, s2.GetVariable("x").Value); + + // continuing preserves the state: + var s3 = await s1.ContinueWithAsync("x"); + Assert.Equal(2, s3.GetVariable("x").Value); + Assert.Equal(2, s3.ReturnValue); + } + + [Fact] + public async Task ScriptVariable_SetValue_Errors() { - var state = await CSharpScript.RunAsync("int x = 100;"); - var globals = state.Variables.Names.ToList(); - Assert.Equal(1, globals.Count); - Assert.Equal(true, globals.Contains("x")); - Assert.Equal(true, state.Variables.ContainsVariable("x")); - Assert.Equal(100, (int)state.Variables["x"].Value); + var state = await CSharpScript.RunAsync(@" +var x = 1; +readonly var y = 2; +const int z = 3; +"); + + Assert.Throws(() => state.GetVariable("x").Value = "str"); + Assert.Throws(() => state.GetVariable("y").Value = "str"); + Assert.Throws(() => state.GetVariable("z").Value = "str"); + Assert.Throws(() => state.GetVariable("y").Value = 0); + Assert.Throws(() => state.GetVariable("z").Value = 0); } [Fact] diff --git a/src/Scripting/Core/PublicAPI.Unshipped.txt b/src/Scripting/Core/PublicAPI.Unshipped.txt index d397f4e0964f7..28ecadc4af2db 100644 --- a/src/Scripting/Core/PublicAPI.Unshipped.txt +++ b/src/Scripting/Core/PublicAPI.Unshipped.txt @@ -113,21 +113,17 @@ Microsoft.CodeAnalysis.Scripting.ScriptRunner Microsoft.CodeAnalysis.Scripting.ScriptState Microsoft.CodeAnalysis.Scripting.ScriptState.ContinueWithAsync(string code, Microsoft.CodeAnalysis.Scripting.ScriptOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> Microsoft.CodeAnalysis.Scripting.ScriptState.ContinueWithAsync(string code, Microsoft.CodeAnalysis.Scripting.ScriptOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +Microsoft.CodeAnalysis.Scripting.ScriptState.GetVariable(string name) -> Microsoft.CodeAnalysis.Scripting.ScriptVariable Microsoft.CodeAnalysis.Scripting.ScriptState.ReturnValue.get -> object Microsoft.CodeAnalysis.Scripting.ScriptState.Script.get -> Microsoft.CodeAnalysis.Scripting.Script -Microsoft.CodeAnalysis.Scripting.ScriptState.Variables.get -> Microsoft.CodeAnalysis.Scripting.ScriptVariables +Microsoft.CodeAnalysis.Scripting.ScriptState.Variables.get -> System.Collections.Immutable.ImmutableArray Microsoft.CodeAnalysis.Scripting.ScriptState Microsoft.CodeAnalysis.Scripting.ScriptState.ReturnValue.get -> T Microsoft.CodeAnalysis.Scripting.ScriptVariable Microsoft.CodeAnalysis.Scripting.ScriptVariable.Name.get -> string Microsoft.CodeAnalysis.Scripting.ScriptVariable.Type.get -> System.Type Microsoft.CodeAnalysis.Scripting.ScriptVariable.Value.get -> object -Microsoft.CodeAnalysis.Scripting.ScriptVariables -Microsoft.CodeAnalysis.Scripting.ScriptVariables.ContainsVariable(string name) -> bool -Microsoft.CodeAnalysis.Scripting.ScriptVariables.Count.get -> int -Microsoft.CodeAnalysis.Scripting.ScriptVariables.GetEnumerator() -> System.Collections.Generic.IEnumerator -Microsoft.CodeAnalysis.Scripting.ScriptVariables.Names.get -> System.Collections.Generic.IEnumerable -Microsoft.CodeAnalysis.Scripting.ScriptVariables.this[string name].get -> Microsoft.CodeAnalysis.Scripting.ScriptVariable +Microsoft.CodeAnalysis.Scripting.ScriptVariable.Value.set -> void abstract Microsoft.CodeAnalysis.Scripting.ObjectFormatter.FormatArrayTypeName(System.Type arrayType, System.Array arrayOpt, Microsoft.CodeAnalysis.Scripting.ObjectFormattingOptions options) -> string abstract Microsoft.CodeAnalysis.Scripting.ObjectFormatter.FormatGeneratedTypeName(System.Type type) -> string abstract Microsoft.CodeAnalysis.Scripting.ObjectFormatter.FormatLiteral(System.DateTime value) -> string diff --git a/src/Scripting/Core/ScriptCompiler.cs b/src/Scripting/Core/ScriptCompiler.cs index 78db86a4f1e9c..2f0963825ab20 100644 --- a/src/Scripting/Core/ScriptCompiler.cs +++ b/src/Scripting/Core/ScriptCompiler.cs @@ -1,5 +1,6 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.Text; using System.Threading; using Microsoft.CodeAnalysis.Text; @@ -10,6 +11,7 @@ internal abstract class ScriptCompiler { public abstract Compilation CreateSubmission(Script script); public abstract DiagnosticFormatter DiagnosticFormatter { get; } + public abstract StringComparer IdentifierComparer { get; } public abstract SyntaxTree ParseSubmission(SourceText text, CancellationToken cancellationToken); public abstract bool IsCompleteSubmission(SyntaxTree tree); diff --git a/src/Scripting/Core/ScriptExecutionState.cs b/src/Scripting/Core/ScriptExecutionState.cs index 86a69818efa0d..f6377119e0d0b 100644 --- a/src/Scripting/Core/ScriptExecutionState.cs +++ b/src/Scripting/Core/ScriptExecutionState.cs @@ -51,8 +51,13 @@ public ScriptExecutionState FreezeAndClone() } } - public int Count => _count; - public object this[int index] => _submissionStates[index]; + public int SubmissionStateCount => _count; + + public object GetSubmissionState(int index) + { + Debug.Assert(index >= 0 && index < _count); + return _submissionStates[index]; + } internal async Task RunSubmissionsAsync( ImmutableArray> precedingExecutors, diff --git a/src/Scripting/Core/ScriptState.cs b/src/Scripting/Core/ScriptState.cs index 8e5e9e63d0344..e24d80d61c49d 100644 --- a/src/Scripting/Core/ScriptState.cs +++ b/src/Scripting/Core/ScriptState.cs @@ -1,8 +1,12 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; +using System.Collections.Immutable; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; +using System.Reflection; +using System.Collections.Generic; namespace Microsoft.CodeAnalysis.Scripting { @@ -18,6 +22,9 @@ public abstract class ScriptState internal ScriptExecutionState ExecutionState { get; } + private ImmutableArray _lazyVariables; + private IReadOnlyDictionary _lazyVariableMap; + internal ScriptState(ScriptExecutionState executionState, Script script) { Debug.Assert(executionState != null); @@ -33,24 +40,83 @@ internal ScriptState(ScriptExecutionState executionState, Script script) public object ReturnValue => GetReturnValue(); internal abstract object GetReturnValue(); - private ScriptVariables _lazyVariables; - /// - /// The global variables accessible to or declared by the script. + /// Returns variables defined by the scripts in the declaration order. /// - public ScriptVariables Variables + public ImmutableArray Variables { get { if (_lazyVariables == null) { - Interlocked.CompareExchange(ref _lazyVariables, new ScriptVariables(ExecutionState), null); + ImmutableInterlocked.InterlockedInitialize(ref _lazyVariables, CreateVariables()); } return _lazyVariables; } } + /// + /// Returns a script variable of the specified name. + /// + /// + /// If multiple script variables are defined in the script (in distinct submissions) returns the last one. + /// Namve lookup is case sensitive in C# scripts and case insensitive in VB scripts. + /// + /// or null, if no variable of the specified is defined in the script. + /// is null. + public ScriptVariable GetVariable(string name) + { + if (name == null) + { + throw new ArgumentNullException(nameof(name)); + } + + int index; + return GetVariableMap().TryGetValue(name, out index) ? Variables[index] : null; + } + + private ImmutableArray CreateVariables() + { + var result = ImmutableArray.CreateBuilder(); + + var executionState = ExecutionState; + + // Don't include the globals object (slot #0) + for (int i = 1; i < executionState.SubmissionStateCount; i++) + { + var state = executionState.GetSubmissionState(i); + Debug.Assert(state != null); + + foreach (var field in state.GetType().GetTypeInfo().DeclaredFields) + { + // TODO: synthesized fields of submissions shouldn't be public + if (field.IsPublic && field.Name.Length > 0 && char.IsLetterOrDigit(field.Name[0])) + { + result.Add(new ScriptVariable(state, field)); + } + } + } + + return result.ToImmutable(); + } + + private IReadOnlyDictionary GetVariableMap() + { + if (_lazyVariableMap == null) + { + var map = new Dictionary(Script.Compiler.IdentifierComparer); + for (int i = 0; i < Variables.Length; i++) + { + map[Variables[i].Name] = i; + } + + _lazyVariableMap = map; + } + + return _lazyVariableMap; + } + public Task> ContinueWithAsync(string code, ScriptOptions options = null, CancellationToken cancellationToken = default(CancellationToken)) { return ContinueWithAsync(code, options, cancellationToken); diff --git a/src/Scripting/Core/ScriptVariable.cs b/src/Scripting/Core/ScriptVariable.cs index ce5c1a5c9fab3..5f17f644a1b13 100644 --- a/src/Scripting/Core/ScriptVariable.cs +++ b/src/Scripting/Core/ScriptVariable.cs @@ -10,62 +10,58 @@ namespace Microsoft.CodeAnalysis.Scripting /// A variable declared by the script. /// [DebuggerDisplay("{GetDebuggerDisplay(), nq}")] - public class ScriptVariable + public sealed class ScriptVariable { private readonly object _instance; - private readonly MemberInfo _member; + private readonly FieldInfo _field; - internal ScriptVariable(object instance, MemberInfo member) + internal ScriptVariable(object instance, FieldInfo field) { + Debug.Assert(instance != null); + Debug.Assert(field != null); + _instance = instance; - _member = member; + _field = field; } /// /// The name of the variable. /// - public string Name - { - get { return _member.Name; } - } + public string Name => _field.Name; /// /// The type of the variable. /// - public Type Type - { - get - { - var field = _member as FieldInfo; - if (field != null) - { - return field.FieldType; - } - - return ((PropertyInfo)_member).PropertyType; - } - } + public Type Type => _field.FieldType; /// /// The value of the variable after running the script. /// + /// Variable is read-only or a constant. + /// The type of the specified isn't assignable to the type of the variable. public object Value { get { - var field = _member as FieldInfo; - if (field != null) + return _field.GetValue(_instance); + } + + set + { + if (_field.IsInitOnly) { - return field.GetValue(_instance); + throw new InvalidOperationException(ScriptingResources.CannotSetReadOnlyVariable); } - return ((PropertyInfo)_member).GetValue(_instance); + if (_field.IsLiteral) + { + throw new InvalidOperationException(ScriptingResources.CannotSetConstantVariable); + } + + _field.SetValue(_instance, value); } } - private string GetDebuggerDisplay() - { - return string.Format("{0}: {1}", this.Name, this.Value?.ToString() ?? ""); - } + private string GetDebuggerDisplay() => $"{Name}: {Value ?? ""}"; } } \ No newline at end of file diff --git a/src/Scripting/Core/ScriptVariables.cs b/src/Scripting/Core/ScriptVariables.cs deleted file mode 100644 index 9ca732ce9615f..0000000000000 --- a/src/Scripting/Core/ScriptVariables.cs +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; - -namespace Microsoft.CodeAnalysis.Scripting -{ - /// - /// A collection that holds the final state of all global variables used by the script. - /// - public class ScriptVariables : IEnumerable, IEnumerable - { - private readonly Dictionary _map; - - internal ScriptVariables(ScriptExecutionState executionState) - { - _map = CreateVariableMap(executionState); - } - - public int Count - { - get { return _map.Count; } - } - - /// - /// Returns the global variable with the specified name. - /// - public ScriptVariable this[string name] - { - get - { - ScriptVariable global; - if (_map.TryGetValue(name, out global)) - { - return global; - } - else - { - return null; - } - } - } - - /// - /// Determines if a global variable with the specified name exists. - /// - public bool ContainsVariable(string name) - { - return _map.ContainsKey(name); - } - - /// - /// A list the global variable names. - /// - public IEnumerable Names - { - get { return _map.Keys; } - } - - /// - /// Gets an enumerator over all the variables. - /// - public IEnumerator GetEnumerator() - { - return _map.Values.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return this.GetEnumerator(); - } - - private static Dictionary CreateVariableMap(ScriptExecutionState executionState) - { - var map = new Dictionary(); - - for (int i = 0; i < executionState.Count; i++) - { - var state = executionState[i]; - if (state != null) - { - AddVariables(map, state); - } - } - - return map; - } - - private static void AddVariables(Dictionary map, object instance) - { - var typeInfo = instance.GetType().GetTypeInfo(); - - foreach (var field in typeInfo.DeclaredFields) - { - if (field.IsPublic) - { - AddVariable(map, instance, field); - } - } - - foreach (var property in typeInfo.DeclaredProperties) - { - if (property.GetMethod.IsPublic) - { - AddVariable(map, instance, property); - } - } - } - - private static void AddVariable(Dictionary map, object instance, MemberInfo member) - { - if (member.Name.Length > 0 && char.IsLetterOrDigit(member.Name[0]) && !map.ContainsKey(member.Name)) - { - map.Add(member.Name, new ScriptVariable(instance, member)); - } - } - } -} \ No newline at end of file diff --git a/src/Scripting/Core/Scripting.csproj b/src/Scripting/Core/Scripting.csproj index 7b4becd0cd4b4..5256575fbec8c 100644 --- a/src/Scripting/Core/Scripting.csproj +++ b/src/Scripting/Core/Scripting.csproj @@ -70,6 +70,11 @@ + + True + True + ScriptingResources.resx + @@ -80,12 +85,6 @@ - - True - True - ScriptingResources.resx - - @@ -108,8 +107,8 @@ ResXFileCodeGenerator - ScriptingResources.Designer.cs Designer + ScriptingResources.Designer.cs diff --git a/src/Scripting/Core/ScriptingResources.Designer.cs b/src/Scripting/Core/ScriptingResources.Designer.cs index 21c6cc13f153b..f6f1a86203155 100644 --- a/src/Scripting/Core/ScriptingResources.Designer.cs +++ b/src/Scripting/Core/ScriptingResources.Designer.cs @@ -79,6 +79,24 @@ internal static string AtFileLine { } } + /// + /// Looks up a localized string similar to Cannot set a constant variable. + /// + internal static string CannotSetConstantVariable { + get { + return ResourceManager.GetString("CannotSetConstantVariable", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot set a read-only variable. + /// + internal static string CannotSetReadOnlyVariable { + get { + return ResourceManager.GetString("CannotSetReadOnlyVariable", resourceCulture); + } + } + /// /// Looks up a localized string similar to Can't assign '{0}' to '{1}'.. /// diff --git a/src/Scripting/Core/ScriptingResources.resx b/src/Scripting/Core/ScriptingResources.resx index b4f868ff9d542..2d35f36ffba88 100644 --- a/src/Scripting/Core/ScriptingResources.resx +++ b/src/Scripting/Core/ScriptingResources.resx @@ -140,4 +140,10 @@ at {0} : {1} + + Cannot set a read-only variable + + + Cannot set a constant variable + \ No newline at end of file diff --git a/src/Scripting/VisualBasic/VisualBasicScriptCompiler.vb b/src/Scripting/VisualBasic/VisualBasicScriptCompiler.vb index bd69820cf6bfa..3f5f29b245395 100644 --- a/src/Scripting/VisualBasic/VisualBasicScriptCompiler.vb +++ b/src/Scripting/VisualBasic/VisualBasicScriptCompiler.vb @@ -25,6 +25,12 @@ Namespace Microsoft.CodeAnalysis.Scripting.VisualBasic End Get End Property + Public Overrides ReadOnly Property IdentifierComparer As StringComparer + Get + Return CaseInsensitiveComparison.Comparer + End Get + End Property + Public Overrides Function IsCompleteSubmission(tree As SyntaxTree) As Boolean ' TODO: https://github.com/dotnet/roslyn/issues/5235 Return True From 6f8d0b437ebf423f162bc86f84356afb615f6228 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Thu, 24 Sep 2015 18:12:10 +0800 Subject: [PATCH 54/83] Rename the Test() method that prevented all tests from actually running. --- .../CSharpTest/Diagnostics/Async/AddAwaitTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs index 70a4cc1f534c2..08dad3082c651 100644 --- a/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs +++ b/src/EditorFeatures/CSharpTest/Diagnostics/Async/AddAwaitTests.cs @@ -508,7 +508,7 @@ public void TestAssignmentExpressionWithConversionInAsyncFunction() } [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddAwait)] - public void Test() + public void TestAssignmentExpression1() { Test( @"using System ; using System . Threading . Tasks ; class TestClass { private async Task MyTestMethod1Async ( ) { Action lambda = async ( ) => { int myInt = [|MyIntMethodAsync ( )|] ; } ; } private Task < int > MyIntMethodAsync ( ) { return Task . FromResult ( result : 1 ) ; } } ", From fe9e375e3094098165aa14cdfd0299f580f9ff1f Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Thu, 24 Sep 2015 18:13:29 +0800 Subject: [PATCH 55/83] Provide better error message from test results. --- src/Test/Utilities/Shared/Syntax/TokenUtilities.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Test/Utilities/Shared/Syntax/TokenUtilities.cs b/src/Test/Utilities/Shared/Syntax/TokenUtilities.cs index 9f4baa5bb98b2..cc68b36cb374e 100644 --- a/src/Test/Utilities/Shared/Syntax/TokenUtilities.cs +++ b/src/Test/Utilities/Shared/Syntax/TokenUtilities.cs @@ -25,7 +25,14 @@ public static void AssertTokensEqual( for (var i = 0; i < Math.Min(expectedTokens.Count, actualTokens.Count); i++) { - Assert.Equal(expectedTokens[i].ToString(), actualTokens[i].ToString()); + var expectedToken = expectedTokens[i].ToString(); + var actualToken = actualTokens[i].ToString(); + if (!String.Equals(expectedToken, actualToken)) + { + var prev = (i - 1 > -1) ? actualTokens[i - 1].ToString() : "^"; + var next = (i + 1 < actualTokens.Count) ? actualTokens[i + 1].ToString() : "$"; + AssertEx.Fail($"Unexpected token at index {i} near \"{prev} {actualToken} {next}\". Expected '{expectedToken}', Actual '{actualToken}'"); + } } if (expectedTokens.Count != actualTokens.Count) From 7e717b0c8568d970f59c35784d4033a0973829b7 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Thu, 24 Sep 2015 18:14:23 +0800 Subject: [PATCH 56/83] Fix all failed tests. --- .../Async/CSharpAddAwaitCodeFixProvider.cs | 37 ++++++++++++++++--- ...ParenthesizedExpressionSyntaxExtensions.cs | 12 ++++++ 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs index 75688095d9c37..83d8728edfe63 100644 --- a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs +++ b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Formatting; using Microsoft.CodeAnalysis.LanguageServices; -using Microsoft.CodeAnalysis.Simplification; using Roslyn.Utilities; using Resources = Microsoft.CodeAnalysis.CSharp.CSharpFeaturesResources; @@ -135,7 +134,7 @@ private static bool IsInAsyncFunction(ExpressionSyntax expression) case SyntaxKind.ParenthesizedLambdaExpression: case SyntaxKind.SimpleLambdaExpression: case SyntaxKind.AnonymousMethodExpression: - return (node as AnonymousFunctionExpressionSyntax)?.AsyncKeyword.IsMissing == true; + return (node as AnonymousFunctionExpressionSyntax)?.AsyncKeyword.IsMissing == false; case SyntaxKind.MethodDeclaration: return (node as MethodDeclarationSyntax)?.Modifiers.Any(SyntaxKind.AsyncKeyword) == true; default: @@ -156,12 +155,38 @@ private static SyntaxNode ConvertToAwaitExpression(ExpressionSyntax expression) { return SyntaxFactory.AwaitExpression(SyntaxFactory.ParenthesizedExpression(expWithTrailing)) .WithLeadingTrivia(expression.GetLeadingTrivia()) - .WithAdditionalAnnotations(Formatter.Annotation, Simplifier.Annotation); + .WithAdditionalAnnotations(Formatter.Annotation); } } - return SyntaxFactory.AwaitExpression(expression.WithoutTrivia().Parenthesize()) - .WithTriviaFrom(expression) - .WithAdditionalAnnotations(Formatter.Annotation, Simplifier.Annotation); + + var awaitParenExpression = SimplyConvertToAwaitExpression(expression.Parenthesize()); + if (RequiresParenthesis(expression, awaitParenExpression)) + { + return awaitParenExpression; + } + else + { + return SimplyConvertToAwaitExpression(expression); + } + } + + private static bool RequiresParenthesis(ExpressionSyntax originalExpression, AwaitExpressionSyntax wrappedExpression) + { + var root = originalExpression.Ancestors().Last(); + var newRoot = root.ReplaceNode(originalExpression, wrappedExpression); + var newNode = (newRoot.FindNode(originalExpression.Span) as AwaitExpressionSyntax)?.Expression as ParenthesizedExpressionSyntax; + if (newNode != null) + { + return !newNode.CanRemoveParentheses(); + } + return false; + } + + private static AwaitExpressionSyntax SimplyConvertToAwaitExpression(ExpressionSyntax inner) + { + return SyntaxFactory.AwaitExpression(inner.WithoutTrivia()) + .WithTriviaFrom(inner) + .WithAdditionalAnnotations(Formatter.Annotation); } } } diff --git a/src/Workspaces/CSharp/Portable/Extensions/ParenthesizedExpressionSyntaxExtensions.cs b/src/Workspaces/CSharp/Portable/Extensions/ParenthesizedExpressionSyntaxExtensions.cs index dbc3c806e486c..d46e644b18427 100644 --- a/src/Workspaces/CSharp/Portable/Extensions/ParenthesizedExpressionSyntaxExtensions.cs +++ b/src/Workspaces/CSharp/Portable/Extensions/ParenthesizedExpressionSyntaxExtensions.cs @@ -28,6 +28,18 @@ public static bool CanRemoveParentheses(this ParenthesizedExpressionSyntax node) return true; } + // await ( M() ) -> await M() + // await ( abc ) -> await abc + // await ( x.P ) -> await x.P + if (node.IsParentKind(SyntaxKind.AwaitExpression) + && (expression.IsKind(SyntaxKind.InvocationExpression) + || expression.IsKind(SyntaxKind.IdentifierName) + || expression.IsKind(SyntaxKind.SimpleMemberAccessExpression) + )) + { + return true; + } + // Don't change (x?.Count).GetValueOrDefault() to x?.Count.GetValueOrDefault() if (expression.IsKind(SyntaxKind.ConditionalAccessExpression) && parentExpression is MemberAccessExpressionSyntax) { From 271096b85da5130b7bfddcbfe983f59e2938a796 Mon Sep 17 00:00:00 2001 From: Eric Feiveson Date: Thu, 24 Sep 2015 09:07:31 -0700 Subject: [PATCH 57/83] Fix Roslyn EE to handle function pointers Fix NullReferenceException's in the result provider when consuming function pointers. The VS 2015 Update 1 version of Microsoft.VisualStudio.Debugger.Metadata.dll adds support for functions pointers on the metadata api layer. We represent it in the LMR type system through new api's to detect if a type is a function pointer and, if so, get the return type and argument types. Currently, the result provider crashes because it doesn't know how to handle a pointer type with a null element type. This change adds a couple of checks to disable expansion on function pointers, which avoids the problem. With this change, the EE will simply display the memory address of the function pointer in the value column, with the function pointer type in the type column. To avoid taking a dependency on the Update 1 version of Microsoft.VisualStudio.Debugger.MetadataReader.dll before it ships, we temporarily shim Type.IsFunctionPointer() via an extension method. The extension method exploits the fact that the function pointer case is the only time we can have a pointer type with a null element type. Once Update 1 ships and the project references are updated, we can remove the shim layer can just call Type.IsFunctionPointer() directly. --- .../Expansion/MemberExpansion.cs | 4 ++-- .../Helpers/DebuggerPlaceholders.cs | 19 +++++++++++++++++++ .../Source/ResultProvider/ResultProvider.cs | 6 ++++++ .../ResultProvider/ResultProvider.projitems | 1 + 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/ExpressionEvaluator/Core/Source/ResultProvider/Helpers/DebuggerPlaceholders.cs diff --git a/src/ExpressionEvaluator/Core/Source/ResultProvider/Expansion/MemberExpansion.cs b/src/ExpressionEvaluator/Core/Source/ResultProvider/Expansion/MemberExpansion.cs index c8d4e02194ea7..dc73ace4b8811 100644 --- a/src/ExpressionEvaluator/Core/Source/ResultProvider/Expansion/MemberExpansion.cs +++ b/src/ExpressionEvaluator/Core/Source/ResultProvider/Expansion/MemberExpansion.cs @@ -38,9 +38,9 @@ internal static Expansion CreateExpansion( } var runtimeType = type.GetLmrType(); - // Primitives, enums and null values with a declared type that is an interface have no visible members. + // Primitives, enums, function pointers, and null values with a declared type that is an interface have no visible members. Debug.Assert(!runtimeType.IsInterface || value.IsNull); - if (formatter.IsPredefinedType(runtimeType) || runtimeType.IsEnum || runtimeType.IsInterface) + if (formatter.IsPredefinedType(runtimeType) || runtimeType.IsEnum || runtimeType.IsInterface || runtimeType.IsFunctionPointer()) { return null; } diff --git a/src/ExpressionEvaluator/Core/Source/ResultProvider/Helpers/DebuggerPlaceholders.cs b/src/ExpressionEvaluator/Core/Source/ResultProvider/Helpers/DebuggerPlaceholders.cs new file mode 100644 index 0000000000000..64659a8345fa5 --- /dev/null +++ b/src/ExpressionEvaluator/Core/Source/ResultProvider/Helpers/DebuggerPlaceholders.cs @@ -0,0 +1,19 @@ +namespace Microsoft.VisualStudio.Debugger.Metadata +{ + // Starting in Visual Studio 2015, Update 1, a new api exists to detect if a type is a function pointer. + // This placeholder method is a temporary shim to allow Roslyn to avoid taking a dependency on Update 1 debugger + // binaries until Update 1 ships. See https://github.com/dotnet/roslyn/issues/5428. + internal static class DebuggerMetadataExtensions + { + public static bool IsFunctionPointer(this Type type) + { + // Note: The Visual Studio 2015 RTM version of Microsoft.VisualStudio.Debugger.Metadata.dll does not support function pointers at all, + // so when running against the RTM version of that dll, this method will always return false. Against the update 1 version, + // we can exploit the fact that the only time a pointer will ever have a null element type will be function pointers. + // + // Using this shim, rather than simply calling Type.IsFunctionPointer() allows the Update 1 expression evaluator to continue + // to work against the RTM debugger. + return type.IsPointer && type.GetElementType() == null; + } + } +} \ No newline at end of file diff --git a/src/ExpressionEvaluator/Core/Source/ResultProvider/ResultProvider.cs b/src/ExpressionEvaluator/Core/Source/ResultProvider/ResultProvider.cs index f0f77622d20f3..256463bc556d5 100644 --- a/src/ExpressionEvaluator/Core/Source/ResultProvider/ResultProvider.cs +++ b/src/ExpressionEvaluator/Core/Source/ResultProvider/ResultProvider.cs @@ -831,6 +831,12 @@ internal Expansion GetTypeExpansion( return null; } + if(declaredType.IsFunctionPointer()) + { + // Function pointers have no expansion + return null; + } + if (declaredType.IsPointer) { // If this ever happens, the element type info is just .SkipOne(). diff --git a/src/ExpressionEvaluator/Core/Source/ResultProvider/ResultProvider.projitems b/src/ExpressionEvaluator/Core/Source/ResultProvider/ResultProvider.projitems index 1401ec072a123..8926f02194ed4 100644 --- a/src/ExpressionEvaluator/Core/Source/ResultProvider/ResultProvider.projitems +++ b/src/ExpressionEvaluator/Core/Source/ResultProvider/ResultProvider.projitems @@ -13,6 +13,7 @@ + From 931e8fdf8a71c2db8211b4fc0e0fdac2dd00b550 Mon Sep 17 00:00:00 2001 From: Tomas Matousek Date: Thu, 24 Sep 2015 09:28:19 -0700 Subject: [PATCH 58/83] A bit of ReferenceManager refactoring --- .../CSharp/Portable/Binder/ImportChain.cs | 6 +- .../CSharp/Portable/Binder/Imports.cs | 10 +- .../Portable/Compilation/CSharpCompilation.cs | 92 ++++---- .../CSharp/Portable/Symbols/AssemblySymbol.cs | 55 +---- .../Symbols/NonMissingModuleSymbol.cs | 7 +- .../Portable/Symbols/ReferenceManager.cs | 206 ++++++++---------- .../Retargeting/RetargetingModuleSymbol.cs | 6 +- .../CodeAnalysisTest/CodeAnalysisTest.csproj | 1 + .../Collections/ArrayBuilderTests.cs | 45 ++++ .../Core/Portable/Compilation/Compilation.cs | 4 +- .../Portable/Emit/CommonPEModuleBuilder.cs | 31 +-- .../AssemblyReferenceCandidate.cs | 7 - .../ReferenceManager/BoundInputAssembly.cs | 1 - .../CommonReferenceManager.Binding.cs | 15 +- .../CommonReferenceManager.Resolution.cs | 21 +- .../CommonReferenceManager.State.cs | 127 ++++++----- .../ReferenceManager/ModuleReferences.cs | 10 +- .../Core/SharedCollections/ArrayBuilder.cs | 38 ++++ .../Compilation/VisualBasicCompilation.vb | 11 +- .../Symbols/NonMissingModuleSymbol.vb | 2 +- .../Portable/Symbols/ReferenceManager.vb | 135 ++++++------ .../Retargeting/RetargetingModuleSymbol.vb | 2 +- 22 files changed, 419 insertions(+), 413 deletions(-) create mode 100644 src/Compilers/Core/CodeAnalysisTest/Collections/ArrayBuilderTests.cs diff --git a/src/Compilers/CSharp/Portable/Binder/ImportChain.cs b/src/Compilers/CSharp/Portable/Binder/ImportChain.cs index ab3c873006a38..cd1c879b2f3a3 100644 --- a/src/Compilers/CSharp/Portable/Binder/ImportChain.cs +++ b/src/Compilers/CSharp/Portable/Binder/ImportChain.cs @@ -122,11 +122,11 @@ private Cci.IAssemblyReference TryGetAssemblyScope(NamespaceSymbol @namespace, E { var referenceManager = ((CSharpCompilation)moduleBuilder.CommonCompilation).GetBoundReferenceManager(); - foreach (var referencedAssembly in referenceManager.ReferencedAssembliesMap.Values) + for (int i = 0; i < referenceManager.ReferencedAssemblies.Length; i++) { - if ((object)referencedAssembly.Symbol == containingAssembly) + if ((object)referenceManager.ReferencedAssemblies[i] == containingAssembly) { - if (!referencedAssembly.DeclarationsAccessibleWithoutAlias()) + if (!referenceManager.DeclarationsAccessibleWithoutAlias(i)) { return moduleBuilder.Translate(containingAssembly, diagnostics); } diff --git a/src/Compilers/CSharp/Portable/Binder/Imports.cs b/src/Compilers/CSharp/Portable/Binder/Imports.cs index 5ceca9f119d94..551446fd0c223 100644 --- a/src/Compilers/CSharp/Portable/Binder/Imports.cs +++ b/src/Compilers/CSharp/Portable/Binder/Imports.cs @@ -570,15 +570,7 @@ internal void LookupExtensionMethodsInUsings( if (seenNamespaceWithExtensionMethods && seenStaticClassWithExtensionMethods) { - var methodsNoDuplicates = ArrayBuilder.GetInstance(); - methodsNoDuplicates.AddRange(methods.Distinct()); - if (methodsNoDuplicates.Count < methods.Count) - { - methods.Clear(); - methods.AddRange(methodsNoDuplicates); - } - - methodsNoDuplicates.Free(); + methods.RemoveDuplicates(); } } diff --git a/src/Compilers/CSharp/Portable/Compilation/CSharpCompilation.cs b/src/Compilers/CSharp/Portable/Compilation/CSharpCompilation.cs index e7f3356941250..d296bb9cf573b 100644 --- a/src/Compilers/CSharp/Portable/Compilation/CSharpCompilation.cs +++ b/src/Compilers/CSharp/Portable/Compilation/CSharpCompilation.cs @@ -978,33 +978,47 @@ public MetadataReference GetDirectiveReference(ReferenceDirectiveTriviaSyntax di return new CSharpCompilationReference(this, aliases, embedInteropTypes); } - // Get all modules in this compilation, including the source module, added modules, and all - // modules of referenced assemblies that do not come from an assembly with an extern alias. - // Metadata imported from aliased assemblies is not visible at the source level except through - // the use of an extern alias directive. So exclude them from this list which is used to construct - // the global namespace. - private IEnumerable GetAllUnaliasedModules() + /// + /// Get all modules in this compilation, including the source module, added modules, and all + /// modules of referenced assemblies that do not come from an assembly with an extern alias. + /// Metadata imported from aliased assemblies is not visible at the source level except through + /// the use of an extern alias directive. So exclude them from this list which is used to construct + /// the global namespace. + /// + private void GetAllUnaliasedModules(ArrayBuilder modules) { - // Get all assemblies in this compilation, including the source assembly and all referenced assemblies. - ArrayBuilder modules = new ArrayBuilder(); - // NOTE: This includes referenced modules - they count as modules of the compilation assembly. - modules.AddRange(this.Assembly.Modules); + modules.AddRange(Assembly.Modules); + + var referenceManager = GetBoundReferenceManager(); - foreach (var pair in GetBoundReferenceManager().ReferencedAssembliesMap) + for (int i = 0; i < referenceManager.ReferencedAssemblies.Length; i++) { - MetadataReference reference = pair.Key; - ReferenceManager.ReferencedAssembly referencedAssembly = pair.Value; - if (reference.Properties.Kind == MetadataImageKind.Assembly) // Already handled modules above. + if (referenceManager.DeclarationsAccessibleWithoutAlias(i)) { - if (referencedAssembly.DeclarationsAccessibleWithoutAlias()) - { - modules.AddRange(referencedAssembly.Symbol.Modules); - } + modules.AddRange(referenceManager.ReferencedAssemblies[i].Modules); } } + } - return modules; + /// + /// Return a list of assembly symbols than can be accessed without using an alias. + /// For example: + /// 1) /r:A.dll /r:B.dll -> A, B + /// 2) /r:Foo=A.dll /r:B.dll -> B + /// 3) /r:Foo=A.dll /r:A.dll -> A + /// + internal void GetUnaliasedReferencedAssemblies(ArrayBuilder assemblies) + { + var referenceManager = GetBoundReferenceManager(); + + for (int i = 0; i < referenceManager.ReferencedAssemblies.Length; i++) + { + if (referenceManager.DeclarationsAccessibleWithoutAlias(i)) + { + assemblies.Add(referenceManager.ReferencedAssemblies[i]); + } + } } /// @@ -1012,7 +1026,7 @@ private IEnumerable GetAllUnaliasedModules() /// public new MetadataReference GetMetadataReference(IAssemblySymbol assemblySymbol) { - return this.GetBoundReferenceManager().ReferencedAssembliesMap.Where(kvp => object.ReferenceEquals(kvp.Value.Symbol, assemblySymbol)).Select(kvp => kvp.Key).FirstOrDefault(); + return base.GetMetadataReference(assemblySymbol); } #endregion @@ -1066,15 +1080,19 @@ internal SourceAssemblySymbol SourceAssembly if ((object)_lazyGlobalNamespace == null) { // Get the root namespace from each module, and merge them all together - HashSet allGlobalNamespaces = new HashSet(); - foreach (ModuleSymbol module in GetAllUnaliasedModules()) - { - allGlobalNamespaces.Add(module.GlobalNamespace); - } + // Get all modules in this compilation, ones referenced directly by the compilation + // as well as those referenced by all referenced assemblies. - var result = MergedNamespaceSymbol.Create(new NamespaceExtent(this), + var modules = ArrayBuilder.GetInstance(); + GetAllUnaliasedModules(modules); + + var result = MergedNamespaceSymbol.Create( + new NamespaceExtent(this), null, - allGlobalNamespaces.AsImmutable()); + modules.SelectDistinct(m => m.GlobalNamespace)); + + modules.Free(); + Interlocked.CompareExchange(ref _lazyGlobalNamespace, result, null); } @@ -1126,12 +1144,13 @@ internal bool GetExternAliasTarget(string aliasName, out NamespaceSymbol @namesp } ArrayBuilder builder = null; - foreach (var referencedAssembly in GetBoundReferenceManager().ReferencedAssembliesMap.Values) + var referenceManager = GetBoundReferenceManager(); + for (int i = 0; i < referenceManager.ReferencedAssemblies.Length; i++) { - if (referencedAssembly.Aliases.Contains(aliasName)) + if (referenceManager.AliasesOfReferencedAssemblies[i].Contains(aliasName)) { builder = builder ?? ArrayBuilder.GetInstance(); - builder.Add(referencedAssembly.Symbol.GlobalNamespace); + builder.Add(referenceManager.ReferencedAssemblies[i].GlobalNamespace); } } @@ -2791,19 +2810,6 @@ protected override INamedTypeSymbol CommonObjectType get { return this.ObjectType; } } - protected override MetadataReference CommonGetMetadataReference(IAssemblySymbol assemblySymbol) - { - var symbol = assemblySymbol as AssemblySymbol; - if ((object)symbol != null) - { - return this.GetMetadataReference(symbol); - } - else - { - return null; - } - } - protected override IMethodSymbol CommonGetEntryPoint(CancellationToken cancellationToken) { return this.GetEntryPoint(cancellationToken); diff --git a/src/Compilers/CSharp/Portable/Symbols/AssemblySymbol.cs b/src/Compilers/CSharp/Portable/Symbols/AssemblySymbol.cs index a717b889325d5..2aec019adcfa4 100644 --- a/src/Compilers/CSharp/Portable/Symbols/AssemblySymbol.cs +++ b/src/Compilers/CSharp/Portable/Symbols/AssemblySymbol.cs @@ -732,12 +732,15 @@ internal NamedTypeSymbol GetTopLevelTypeByMetadataName( Debug.Assert(this is SourceAssemblySymbol, "Never include references for a non-source assembly, because they don't know about aliases."); + var assemblies = ArrayBuilder.GetInstance(); + DeclaringCompilation.GetUnaliasedReferencedAssemblies(assemblies); + // Lookup in references - foreach (var reference in GetUnaliasedReferencedAssemblies()) + foreach (var assembly in assemblies) { - Debug.Assert(!(this is SourceAssemblySymbol && reference.IsMissing)); // Non-source assemblies can have missing references + Debug.Assert(!(this is SourceAssemblySymbol && assembly.IsMissing)); // Non-source assemblies can have missing references - NamedTypeSymbol candidate = GetTopLevelTypeByMetadataName(reference, ref metadataName, assemblyOpt); + NamedTypeSymbol candidate = GetTopLevelTypeByMetadataName(assembly, ref metadataName, assemblyOpt); if (isWellKnownType && !IsValidWellKnownType(candidate)) { @@ -756,19 +759,21 @@ internal NamedTypeSymbol GetTopLevelTypeByMetadataName( // duplicate if (warnings == null) { - return null; + result = null; } else { // The predefined type '{0}' is defined in multiple assemblies in the global alias; using definition from '{1}' warnings.Add(ErrorCode.WRN_MultiplePredefTypes, NoLocation.Singleton, result, result.ContainingAssembly); - return result; } + + break; } result = candidate; } + assemblies.Free(); return result; } @@ -785,46 +790,6 @@ private bool IsValidWellKnownType(NamedTypeSymbol result) return result.DeclaredAccessibility == Accessibility.Public || IsSymbolAccessible(result, this); } - /// - /// Return a list of assembly symbols than can be accessed without using an alias. - /// For example: - /// 1) /r:A.dll /r:B.dll -> A, B - /// 2) /r:Foo=A.dll /r:B.dll -> B - /// 3) /r:Foo=A.dll /r:A.dll -> A - /// - /// Note that it only makes sense to call this method on a SourceAssemblySymbol since - /// alias information is per-compilation. - /// - private ImmutableArray GetUnaliasedReferencedAssemblies() - { - CSharpCompilation compilation = this.DeclaringCompilation; - Debug.Assert(compilation != null, "There's an answer, but we don't expect this to happen"); - // if (compilation == null) return this.Modules[0].GetReferencedAssemblySymbols(); - - ArrayBuilder references = null; - foreach (var pair in compilation.GetBoundReferenceManager().ReferencedAssembliesMap) - { - MetadataReference reference = pair.Key; - CSharpCompilation.ReferenceManager.ReferencedAssembly referencedAssembly = pair.Value; - if (reference.Properties.Kind == MetadataImageKind.Assembly) - { - if (referencedAssembly.DeclarationsAccessibleWithoutAlias()) - { - if (references == null) - { - references = ArrayBuilder.GetInstance(); - } - - references.Add(referencedAssembly.Symbol); - } - } - } - - return references == null - ? ImmutableArray.Empty - : references.ToImmutableAndFree(); - } - private static NamedTypeSymbol GetTopLevelTypeByMetadataName(AssemblySymbol assembly, ref MetadataTypeName metadataName, AssemblyIdentity assemblyOpt) { var result = assembly.LookupTopLevelMetadataType(ref metadataName, digThroughForwardedTypes: false); diff --git a/src/Compilers/CSharp/Portable/Symbols/NonMissingModuleSymbol.cs b/src/Compilers/CSharp/Portable/Symbols/NonMissingModuleSymbol.cs index 366ef892a0c3d..3785ffe245729 100644 --- a/src/Compilers/CSharp/Portable/Symbols/NonMissingModuleSymbol.cs +++ b/src/Compilers/CSharp/Portable/Symbols/NonMissingModuleSymbol.cs @@ -39,14 +39,11 @@ internal sealed override bool IsMissing /// Returns an array of assembly identities for assemblies referenced by this module. /// Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols /// should correspond to each other. - /// - /// The array and its content is provided by ReferenceManager and must not be modified. /// - /// internal sealed override ImmutableArray GetReferencedAssemblies() { AssertReferencesInitialized(); - return _moduleReferences.Names; + return _moduleReferences.Identities; } /// @@ -55,8 +52,6 @@ internal sealed override ImmutableArray GetReferencedAssemblie /// from GetReferencedAssemblySymbols should correspond to each other. If reference is /// not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the /// corresponding item. - /// - /// The array and its content is provided by ReferenceManager and must not be modified. /// internal sealed override ImmutableArray GetReferencedAssemblySymbols() { diff --git a/src/Compilers/CSharp/Portable/Symbols/ReferenceManager.cs b/src/Compilers/CSharp/Portable/Symbols/ReferenceManager.cs index 6997b22133cae..6a458936d8da4 100644 --- a/src/Compilers/CSharp/Portable/Symbols/ReferenceManager.cs +++ b/src/Compilers/CSharp/Portable/Symbols/ReferenceManager.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; -using System.Linq; + using Microsoft.CodeAnalysis.CSharp.Emit; using Microsoft.CodeAnalysis.CSharp.Symbols; using Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE; @@ -12,6 +12,7 @@ namespace Microsoft.CodeAnalysis.CSharp { + using Symbols.Retargeting; using MetadataOrDiagnostic = System.Object; public partial class CSharpCompilation @@ -305,10 +306,6 @@ private void InitializeAssemblyReuseData(AssemblySymbol assemblySymbol, Immutabl // Returns false if another compilation sharing this manager finished binding earlier and we should reuse its results. private bool CreateAndSetSourceAssemblyFullBind(CSharpCompilation compilation) { - SourceAssemblySymbol assemblySymbol; - - Dictionary referencedAssembliesMap; - Dictionary referencedModulesMap; IDictionary boundReferenceDirectiveMap; ImmutableArray boundReferenceDirectives; bool hasCircularReference; @@ -375,7 +372,7 @@ private bool CreateAndSetSourceAssemblyFullBind(CSharpCompilation compilation) Debug.Assert(allAssemblies[i].IsLinked == bindingResult[i].AssemblySymbol.IsLinked); } - assemblySymbol = new SourceAssemblySymbol(compilation, SimpleAssemblyName, compilation.MakeSourceModuleName(), netModules: modules); + var assemblySymbol = new SourceAssemblySymbol(compilation, SimpleAssemblyName, compilation.MakeSourceModuleName(), netModules: modules); AssemblySymbol corLibrary; @@ -414,12 +411,10 @@ private bool CreateAndSetSourceAssemblyFullBind(CSharpCompilation compilation) InitializeNewSymbols(newSymbols, assemblySymbol, allAssemblies, bindingResult, missingAssemblies); } - // Setup references for the compilation (out parameters) - referencedAssembliesMap = new Dictionary(referenceMap.Length); - referencedModulesMap = new Dictionary(modules.Length); - - var sourceModule = assemblySymbol.SourceModule; - var referencedAssemblySymbols = sourceModule.GetReferencedAssemblySymbols(); + // Calculate reference maps and aliases: + var referencedAssembliesMap = new Dictionary(referenceMap.Length); + var referencedModulesMap = new Dictionary(modules.Length); + var aliasesOfReferencedAssembliesBuilder = ArrayBuilder>.GetInstance(referencedAssemblies.Length); for (int i = 0; i < referenceMap.Length; i++) { @@ -436,11 +431,17 @@ private bool CreateAndSetSourceAssemblyFullBind(CSharpCompilation compilation) } else { - int assemblyIndex = referenceMap[i].Index; - referencedAssembliesMap.Add(references[i], new ReferencedAssembly(referencedAssemblySymbols[assemblyIndex], referenceMap[i].Aliases)); + // index into assembly data array + int assemblyIndex = referenceMap[i].Index; + Debug.Assert(aliasesOfReferencedAssembliesBuilder.Count == assemblyIndex); + + referencedAssembliesMap.Add(references[i], assemblyIndex); + aliasesOfReferencedAssembliesBuilder.Add(referenceMap[i].Aliases); } } + var aliasesOfReferencedAssemblies = aliasesOfReferencedAssembliesBuilder.ToImmutableAndFree(); + if ((object)compilation._lazyAssemblySymbol == null) { lock (SymbolCacheAndReferenceManagerStateGuard) @@ -455,7 +456,7 @@ private bool CreateAndSetSourceAssemblyFullBind(CSharpCompilation compilation) } UpdateSymbolCacheNoLock(newSymbols, allAssemblies, bindingResult); - + InitializeNoLock( referencedAssembliesMap, referencedModulesMap, @@ -466,8 +467,9 @@ private bool CreateAndSetSourceAssemblyFullBind(CSharpCompilation compilation) ReferenceEquals(corLibrary, assemblySymbol) ? null : corLibrary, modules, moduleReferences, - referencedAssemblySymbols, - sourceModule.GetUnifiedAssemblies()); + assemblySymbol.SourceModule.GetReferencedAssemblySymbols(), + aliasesOfReferencedAssemblies, + assemblySymbol.SourceModule.GetUnifiedAssemblies()); // Make sure that the given compilation holds on this instance of reference manager. Debug.Assert(ReferenceEquals(compilation._referenceManager, this) || HasCircularReference); @@ -512,7 +514,7 @@ private static void InitializeNewSymbols( // Setup CorLibrary and NoPia stuff for newly created assemblies - List linkedReferencedAssemblies = new List(); + var linkedReferencedAssembliesBuilder = ArrayBuilder.GetInstance(); var noPiaResolutionAssemblies = sourceAssembly.Modules[0].GetReferencedAssemblySymbols(); foreach (int i in newSymbols) @@ -523,11 +525,11 @@ private static void InitializeNewSymbols( } // Setup linked referenced assemblies. - linkedReferencedAssemblies.Clear(); + linkedReferencedAssembliesBuilder.Clear(); if (assemblies[i].IsLinked) { - linkedReferencedAssemblies.Add(bindingResult[i].AssemblySymbol); + linkedReferencedAssembliesBuilder.Add(bindingResult[i].AssemblySymbol); } foreach (var referenceBinding in bindingResult[i].ReferenceBinding) @@ -535,20 +537,22 @@ private static void InitializeNewSymbols( if (referenceBinding.IsBound && assemblies[referenceBinding.DefinitionIndex].IsLinked) { - linkedReferencedAssemblies.Add( + linkedReferencedAssembliesBuilder.Add( bindingResult[referenceBinding.DefinitionIndex].AssemblySymbol); } } - if (linkedReferencedAssemblies.Count > 0) + if (linkedReferencedAssembliesBuilder.Count > 0) { - bindingResult[i].AssemblySymbol.SetLinkedReferencedAssemblies( - ImmutableArray.CreateRange(linkedReferencedAssemblies.Distinct())); + linkedReferencedAssembliesBuilder.RemoveDuplicates(); + bindingResult[i].AssemblySymbol.SetLinkedReferencedAssemblies(linkedReferencedAssembliesBuilder.ToImmutable()); } bindingResult[i].AssemblySymbol.SetCorLibrary(corLibrary); } + linkedReferencedAssembliesBuilder.Free(); + if (missingAssemblies != null) { foreach (var missingAssembly in missingAssemblies.Values) @@ -583,7 +587,7 @@ private static void SetupReferencesForRetargetingAssembly( ref Dictionary missingAssemblies, SourceAssemblySymbol sourceAssemblyDebugOnly) { - var retargetingAssemblySymbol = (Symbols.Retargeting.RetargetingAssemblySymbol)bindingResult[bindingIndex].AssemblySymbol; + var retargetingAssemblySymbol = (RetargetingAssemblySymbol)bindingResult[bindingIndex].AssemblySymbol; ImmutableArray modules = retargetingAssemblySymbol.Modules; int moduleCount = modules.Length; int refsUsed = 0; @@ -797,13 +801,21 @@ private static MissingAssemblySymbol GetOrAddMissingAssemblySymbol( private abstract class AssemblyDataForMetadataOrCompilation : AssemblyData { private List _assemblies; - protected AssemblyIdentity assemblyIdentity; - protected ImmutableArray referencedAssemblies; - protected readonly bool EmbedInteropTypes; - - protected AssemblyDataForMetadataOrCompilation(bool embedInteropTypes) + private readonly AssemblyIdentity _identity; + private readonly ImmutableArray _referencedAssemblies; + private readonly bool _embedInteropTypes; + + protected AssemblyDataForMetadataOrCompilation( + AssemblyIdentity identity, + ImmutableArray referencedAssemblies, + bool embedInteropTypes) { - this.EmbedInteropTypes = embedInteropTypes; + Debug.Assert(identity != null); + Debug.Assert(!referencedAssemblies.IsDefault); + + _embedInteropTypes = embedInteropTypes; + _identity = identity; + _referencedAssemblies = referencedAssemblies; } internal abstract AssemblySymbol CreateAssemblySymbol(); @@ -812,7 +824,7 @@ public override AssemblyIdentity Identity { get { - return assemblyIdentity; + return _identity; } } @@ -840,30 +852,35 @@ public override ImmutableArray AssemblyReferences { get { - return referencedAssemblies; + return _referencedAssemblies; } } public override AssemblyReferenceBinding[] BindAssemblyReferences( ImmutableArray assemblies, AssemblyIdentityComparer assemblyIdentityComparer) { - return ReferenceManager.ResolveReferencedAssemblies(referencedAssemblies, assemblies, assemblyIdentityComparer, okToResolveAgainstCompilationBeingCreated: true); + return ResolveReferencedAssemblies(_referencedAssemblies, assemblies, assemblyIdentityComparer, okToResolveAgainstCompilationBeingCreated: true); } public sealed override bool IsLinked { get { - return EmbedInteropTypes; + return _embedInteropTypes; } } } private sealed class AssemblyDataForFile : AssemblyDataForMetadataOrCompilation { - private readonly PEAssembly _assembly; - private readonly WeakList _cachedSymbols; - private readonly DocumentationProvider _documentationProvider; + public readonly PEAssembly Assembly; + + /// + /// Guarded by . + /// + public readonly WeakList CachedSymbols; + + public readonly DocumentationProvider DocumentationProvider; /// /// Import options of the compilation being built. @@ -876,32 +893,8 @@ private sealed class AssemblyDataForFile : AssemblyDataForMetadataOrCompilation // assembly will give friend access to the compilation. private readonly string _sourceAssemblySimpleName; - public PEAssembly Assembly - { - get - { - return _assembly; - } - } - - /// - /// Guarded by . - /// - public WeakList CachedSymbols - { - get - { - return _cachedSymbols; - } - } - - public DocumentationProvider DocumentationProvider - { - get - { - return _documentationProvider; - } - } + private bool _internalsVisibleComputed; + private bool _internalsPotentiallyVisibleToCompilation; public AssemblyDataForFile( PEAssembly assembly, @@ -910,28 +903,21 @@ public AssemblyDataForFile( DocumentationProvider documentationProvider, string sourceAssemblySimpleName, MetadataImportOptions compilationImportOptions) - : base(embedInteropTypes) + : base(assembly.Identity, assembly.AssemblyReferences, embedInteropTypes) { - Debug.Assert(assembly != null); Debug.Assert(documentationProvider != null); Debug.Assert(cachedSymbols != null); - _cachedSymbols = cachedSymbols; - _assembly = assembly; - _documentationProvider = documentationProvider; + CachedSymbols = cachedSymbols; + Assembly = assembly; + DocumentationProvider = documentationProvider; _compilationImportOptions = compilationImportOptions; _sourceAssemblySimpleName = sourceAssemblySimpleName; - - assemblyIdentity = assembly.Identity; - referencedAssemblies = assembly.AssemblyReferences; } - private bool _internalsVisibleComputed; - private bool _internalsPotentiallyVisibleToCompilation; - internal override AssemblySymbol CreateAssemblySymbol() { - return new PEAssemblySymbol(_assembly, _documentationProvider, this.IsLinked, this.EffectiveImportOptions); + return new PEAssemblySymbol(Assembly, DocumentationProvider, this.IsLinked, this.EffectiveImportOptions); } internal bool InternalsMayBeVisibleToCompilation @@ -940,7 +926,7 @@ internal bool InternalsMayBeVisibleToCompilation { if (!_internalsVisibleComputed) { - _internalsPotentiallyVisibleToCompilation = InternalsMayBeVisibleToAssemblyBeingCompiled(_sourceAssemblySimpleName, _assembly); + _internalsPotentiallyVisibleToCompilation = InternalsMayBeVisibleToAssemblyBeingCompiled(_sourceAssemblySimpleName, Assembly); _internalsVisibleComputed = true; } @@ -967,7 +953,7 @@ protected override void AddAvailableSymbols(List assemblies) // accessing cached symbols requires a lock lock (SymbolCacheAndReferenceManagerStateGuard) { - foreach (var assembly in _cachedSymbols) + foreach (var assembly in CachedSymbols) { var peAssembly = assembly as PEAssemblySymbol; if (IsMatchingAssembly(peAssembly)) @@ -990,7 +976,7 @@ private bool IsMatchingAssembly(PEAssemblySymbol peAssembly) return false; } - if (!ReferenceEquals(peAssembly.Assembly, _assembly)) + if (!ReferenceEquals(peAssembly.Assembly, Assembly)) { return false; } @@ -1016,7 +1002,7 @@ public override bool ContainsNoPiaLocalTypes { get { - return _assembly.ContainsNoPiaLocalTypes(); + return Assembly.ContainsNoPiaLocalTypes(); } } @@ -1024,7 +1010,7 @@ public override bool DeclaresTheObjectClass { get { - return _assembly.DeclaresTheObjectClass; + return Assembly.DeclaresTheObjectClass; } } @@ -1033,74 +1019,62 @@ public override bool DeclaresTheObjectClass private sealed class AssemblyDataForCompilation : AssemblyDataForMetadataOrCompilation { - private readonly CSharpCompilation _compilation; - public CSharpCompilation Compilation - { - get - { - return _compilation; - } - } + public readonly CSharpCompilation Compilation; public AssemblyDataForCompilation(CSharpCompilation compilation, bool embedInteropTypes) - : base(embedInteropTypes) + : base(compilation.Assembly.Identity, GetReferencedAssemblies(compilation), embedInteropTypes) { - Debug.Assert(compilation != null); - _compilation = compilation; - - // Force creation of the SourceAssemblySymbol - AssemblySymbol assembly = compilation.Assembly; - assemblyIdentity = assembly.Identity; + Compilation = compilation; + } + private static ImmutableArray GetReferencedAssemblies(CSharpCompilation compilation) + { // Collect information about references - var refs = ArrayBuilder.GetInstance(); + var result = ArrayBuilder.GetInstance(); - var modules = assembly.Modules; - int mCount = modules.Length; - int i; + var modules = compilation.Assembly.Modules; // Filter out linked assemblies referenced by the source module. var sourceReferencedAssemblies = modules[0].GetReferencedAssemblies(); var sourceReferencedAssemblySymbols = modules[0].GetReferencedAssemblySymbols(); - int rCount = sourceReferencedAssemblies.Length; - Debug.Assert(rCount == sourceReferencedAssemblySymbols.Length); + Debug.Assert(sourceReferencedAssemblies.Length == sourceReferencedAssemblySymbols.Length); - for (i = 0; i < rCount; i++) + for (int i = 0; i < sourceReferencedAssemblies.Length; i++) { if (!sourceReferencedAssemblySymbols[i].IsLinked) { - refs.Add(sourceReferencedAssemblies[i]); + result.Add(sourceReferencedAssemblies[i]); } } - for (i = 1; i < mCount; i++) + for (int i = 1; i < modules.Length; i++) { - refs.AddRange(modules[i].GetReferencedAssemblies()); + result.AddRange(modules[i].GetReferencedAssemblies()); } - referencedAssemblies = refs.ToImmutableAndFree(); + return result.ToImmutableAndFree(); } internal override AssemblySymbol CreateAssemblySymbol() { - return new Symbols.Retargeting.RetargetingAssemblySymbol(_compilation.SourceAssembly, this.IsLinked); + return new RetargetingAssemblySymbol(Compilation.SourceAssembly, this.IsLinked); } protected override void AddAvailableSymbols(List assemblies) { - assemblies.Add(_compilation.Assembly); + assemblies.Add(Compilation.Assembly); // accessing cached symbols requires a lock lock (SymbolCacheAndReferenceManagerStateGuard) { - _compilation.AddRetargetingAssemblySymbolsNoLock(assemblies); + Compilation.AddRetargetingAssemblySymbolsNoLock(assemblies); } } public override bool IsMatchingAssembly(AssemblySymbol candidateAssembly) { - var retargeting = candidateAssembly as Symbols.Retargeting.RetargetingAssemblySymbol; + var retargeting = candidateAssembly as RetargetingAssemblySymbol; AssemblySymbol asm; if ((object)retargeting != null) @@ -1112,16 +1086,16 @@ public override bool IsMatchingAssembly(AssemblySymbol candidateAssembly) asm = candidateAssembly as SourceAssemblySymbol; } - Debug.Assert(!(asm is Symbols.Retargeting.RetargetingAssemblySymbol)); + Debug.Assert(!(asm is RetargetingAssemblySymbol)); - return ReferenceEquals(asm, _compilation.Assembly); + return ReferenceEquals(asm, Compilation.Assembly); } public override bool ContainsNoPiaLocalTypes { get { - return _compilation.MightContainNoPiaLocalTypes(); + return Compilation.MightContainNoPiaLocalTypes(); } } @@ -1129,11 +1103,11 @@ public override bool DeclaresTheObjectClass { get { - return _compilation.DeclaresTheObjectClass; + return Compilation.DeclaresTheObjectClass; } } - public override Compilation SourceCompilation => _compilation; + public override Compilation SourceCompilation => Compilation; } /// diff --git a/src/Compilers/CSharp/Portable/Symbols/Retargeting/RetargetingModuleSymbol.cs b/src/Compilers/CSharp/Portable/Symbols/Retargeting/RetargetingModuleSymbol.cs index 203a04f614fd4..08ea85edd047d 100644 --- a/src/Compilers/CSharp/Portable/Symbols/Retargeting/RetargetingModuleSymbol.cs +++ b/src/Compilers/CSharp/Portable/Symbols/Retargeting/RetargetingModuleSymbol.cs @@ -185,7 +185,7 @@ internal override void SetReferences(ModuleReferences moduleRefe ImmutableArray underlyingBoundReferences = _underlyingModule.GetReferencedAssemblySymbols(); ImmutableArray referencedAssemblySymbols = moduleReferences.Symbols; - Debug.Assert(referencedAssemblySymbols.Length == moduleReferences.Names.Length); + Debug.Assert(referencedAssemblySymbols.Length == moduleReferences.Identities.Length); Debug.Assert(referencedAssemblySymbols.Length <= underlyingBoundReferences.Length); // Linked references are filtered out. int i, j; @@ -203,8 +203,8 @@ internal override void SetReferences(ModuleReferences moduleRefe new AssemblyIdentity(name: originatingSourceAssemblyDebugOnly.Name) : referencedAssemblySymbols[i].Identity; - Debug.Assert(identityComparer.Compare(moduleReferences.Names[i], definitionIdentity) != AssemblyIdentityComparer.ComparisonResult.NotEquivalent); - Debug.Assert(identityComparer.Compare(moduleReferences.Names[i], underlyingBoundReferences[j].Identity) != AssemblyIdentityComparer.ComparisonResult.NotEquivalent); + Debug.Assert(identityComparer.Compare(moduleReferences.Identities[i], definitionIdentity) != AssemblyIdentityComparer.ComparisonResult.NotEquivalent); + Debug.Assert(identityComparer.Compare(moduleReferences.Identities[i], underlyingBoundReferences[j].Identity) != AssemblyIdentityComparer.ComparisonResult.NotEquivalent); #endif if (!ReferenceEquals(referencedAssemblySymbols[i], underlyingBoundReferences[j])) diff --git a/src/Compilers/Core/CodeAnalysisTest/CodeAnalysisTest.csproj b/src/Compilers/Core/CodeAnalysisTest/CodeAnalysisTest.csproj index 1766fd16db13e..c09a12294c6d0 100644 --- a/src/Compilers/Core/CodeAnalysisTest/CodeAnalysisTest.csproj +++ b/src/Compilers/Core/CodeAnalysisTest/CodeAnalysisTest.csproj @@ -24,6 +24,7 @@ + diff --git a/src/Compilers/Core/CodeAnalysisTest/Collections/ArrayBuilderTests.cs b/src/Compilers/Core/CodeAnalysisTest/Collections/ArrayBuilderTests.cs new file mode 100644 index 0000000000000..d6e7780547949 --- /dev/null +++ b/src/Compilers/Core/CodeAnalysisTest/Collections/ArrayBuilderTests.cs @@ -0,0 +1,45 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Roslyn.Test.Utilities; +using Xunit; + +namespace Microsoft.CodeAnalysis.UnitTests.Collections +{ + internal class ArrayBuilderTests + { + [Fact] + public void RemoveDuplicates1() + { + var builder = new ArrayBuilder { 1, 2, 3, 2, 4, 5, 1 }; + builder.RemoveDuplicates(); + AssertEx.Equal(new[] { 1, 2, 3, 4, 5 }, builder); + + builder = new ArrayBuilder { 1 }; + builder.RemoveDuplicates(); + AssertEx.Equal(new[] { 1 }, builder); + + builder = new ArrayBuilder(); + builder.RemoveDuplicates(); + AssertEx.Equal(new int[0], builder); + } + + [Fact] + public void SelectDistinct1() + { + var builder = new ArrayBuilder { 1, 2, 3, 2, 4, 5, 1 }; + AssertEx.Equal(new[] { 1, 2, 3, 4, 5 }, builder.SelectDistinct(n => n)); + + builder = new ArrayBuilder { 1 }; + AssertEx.Equal(new[] { 1 }, builder.SelectDistinct(n => n)); + + builder = new ArrayBuilder(); + AssertEx.Equal(new int[0], builder.SelectDistinct(n => n)); + + builder = new ArrayBuilder { 1, 2, 3, 2, 4, 5, 1 }; + AssertEx.Equal(new[] { 10 }, builder.SelectDistinct(n => 10)); + + builder = new ArrayBuilder { 1, 2, 3, 2, 4, 5, 1 }; + AssertEx.Equal(new byte[] { 1, 2, 3, 4, 5 }, builder.SelectDistinct(n => (byte)n)); + } + } +} diff --git a/src/Compilers/Core/Portable/Compilation/Compilation.cs b/src/Compilers/Core/Portable/Compilation/Compilation.cs index 7afbf850e57a8..963280b1cd6da 100644 --- a/src/Compilers/Core/Portable/Compilation/Compilation.cs +++ b/src/Compilers/Core/Portable/Compilation/Compilation.cs @@ -737,11 +737,9 @@ public ISymbol GetAssemblyOrModuleSymbol(MetadataReference reference) /// The target symbol. public MetadataReference GetMetadataReference(IAssemblySymbol assemblySymbol) { - return CommonGetMetadataReference(assemblySymbol); + return GetBoundReferenceManager().GetMetadataReference(assemblySymbol); } - protected abstract MetadataReference CommonGetMetadataReference(IAssemblySymbol assemblySymbol); - /// /// Assembly identities of all assemblies directly referenced by this compilation. /// diff --git a/src/Compilers/Core/Portable/Emit/CommonPEModuleBuilder.cs b/src/Compilers/Core/Portable/Emit/CommonPEModuleBuilder.cs index 853c0e9969415..c9713d4327712 100644 --- a/src/Compilers/Core/Portable/Emit/CommonPEModuleBuilder.cs +++ b/src/Compilers/Core/Portable/Emit/CommonPEModuleBuilder.cs @@ -6,9 +6,7 @@ using System.Collections.Immutable; using System.Diagnostics; using System.Linq; -using System.Reflection.PortableExecutable; using System.Threading; -using Microsoft.Cci; using Microsoft.CodeAnalysis.CodeGen; using Microsoft.CodeAnalysis.Emit.NoPia; using Roslyn.Utilities; @@ -237,7 +235,7 @@ internal sealed override Cci.ITypeReference Translate(ITypeSymbol symbol, Syntax return Translate((TTypeSymbol)symbol, (TSyntaxNode)syntaxNodeOpt, diagnostics); } - internal sealed override IMethodReference Translate(IMethodSymbol symbol, DiagnosticBag diagnostics, bool needDeclaration) + internal sealed override Cci.IMethodReference Translate(IMethodSymbol symbol, DiagnosticBag diagnostics, bool needDeclaration) { return Translate((TMethodSymbol)symbol, diagnostics, needDeclaration); } @@ -294,28 +292,21 @@ private static void VisitTopLevelType(Cci.NoPiaReferenceIndexer noPiaIndexer, Cc private ImmutableArray CalculateAssemblyReferenceAliases(EmitContext context) { - var result = ArrayBuilder.GetInstance(_compilation.ExternalReferences.Length); + var result = ArrayBuilder.GetInstance(); - var referenceManager = _compilation.GetBoundReferenceManager(); - - // Enumerate external references (#r's don't define aliases) to preserve the order. - foreach (MetadataReference reference in _compilation.ExternalReferences) + foreach (var assemblyAndAliases in _compilation.GetBoundReferenceManager().GetReferencedAssemblyAliases()) { - // duplicate references might have been skipped by the assembly binder: + var assembly = assemblyAndAliases.Item1; + var aliases = assemblyAndAliases.Item2; - IAssemblySymbol symbol; - ImmutableArray aliases; - if (referenceManager.TryGetReferencedAssemblySymbol(reference, out symbol, out aliases)) + for (int i = 0; i < aliases.Length; i++) { - for (int i = 0; i < aliases.Length; i++) - { - string alias = aliases[i]; + string alias = aliases[i]; - // filter out duplicates and global aliases: - if (alias != MetadataReferenceProperties.GlobalAlias && aliases.IndexOf(alias, 0, i) < 0) - { - result.Add(new Cci.AssemblyReferenceAlias(alias, Translate(symbol, context.Diagnostics))); - } + // filter out duplicates and global aliases: + if (alias != MetadataReferenceProperties.GlobalAlias && aliases.IndexOf(alias, 0, i) < 0) + { + result.Add(new Cci.AssemblyReferenceAlias(alias, Translate(assembly, context.Diagnostics))); } } } diff --git a/src/Compilers/Core/Portable/ReferenceManager/AssemblyReferenceCandidate.cs b/src/Compilers/Core/Portable/ReferenceManager/AssemblyReferenceCandidate.cs index 04156e0aa53b5..e2334e2059001 100644 --- a/src/Compilers/Core/Portable/ReferenceManager/AssemblyReferenceCandidate.cs +++ b/src/Compilers/Core/Portable/ReferenceManager/AssemblyReferenceCandidate.cs @@ -1,12 +1,5 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using Microsoft.CodeAnalysis.Text; -using Roslyn.Utilities; - namespace Microsoft.CodeAnalysis { internal partial class CommonReferenceManager diff --git a/src/Compilers/Core/Portable/ReferenceManager/BoundInputAssembly.cs b/src/Compilers/Core/Portable/ReferenceManager/BoundInputAssembly.cs index 705d0dea5d1ca..d8da61923acfc 100644 --- a/src/Compilers/Core/Portable/ReferenceManager/BoundInputAssembly.cs +++ b/src/Compilers/Core/Portable/ReferenceManager/BoundInputAssembly.cs @@ -1,7 +1,6 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Diagnostics; -using Microsoft.CodeAnalysis.Text; namespace Microsoft.CodeAnalysis { diff --git a/src/Compilers/Core/Portable/ReferenceManager/CommonReferenceManager.Binding.cs b/src/Compilers/Core/Portable/ReferenceManager/CommonReferenceManager.Binding.cs index 0f17045fe13ab..0cf9b841540ee 100644 --- a/src/Compilers/Core/Portable/ReferenceManager/CommonReferenceManager.Binding.cs +++ b/src/Compilers/Core/Portable/ReferenceManager/CommonReferenceManager.Binding.cs @@ -4,8 +4,6 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; -using System.Linq; -using Microsoft.CodeAnalysis.Text; using Roslyn.Utilities; namespace Microsoft.CodeAnalysis @@ -25,9 +23,8 @@ internal partial class CommonReferenceManager /// /// /// - /// The set of AssemblyData objects describing assemblies, for which this method should - /// resolve references and find suitable AssemblySymbols. This array is not modified by the - /// method. + /// The set of objects describing assemblies, for which this method should + /// resolve references and find suitable AssemblySymbols. /// /// /// True if the assembly being compiled is indirectly referenced through some of its own references. @@ -36,18 +33,18 @@ internal partial class CommonReferenceManager /// The definition index of the COR library. /// /// - /// An array of Binding structures describing the result. It has the same amount of items as - /// the input assemblies array, Binding structure for each input AssemblyData object resides + /// An array of structures describing the result. It has the same amount of items as + /// the input assemblies array, for each input AssemblyData object resides /// at the same position. /// - /// Each Binding structure contains the following data: + /// Each contains the following data: /// /// - Suitable AssemblySymbol instance for the corresponding assembly, /// null reference if none is available/found. Always null for the first element, which corresponds to the assembly being built. /// /// - Result of resolving assembly references of the corresponding assembly /// against provided set of assembly definitions. Essentially, this is an array returned by - /// AssemblyData.BindAssemblyReferences method. + /// method. /// internal BoundInputAssembly[] Bind( ImmutableArray assemblies, diff --git a/src/Compilers/Core/Portable/ReferenceManager/CommonReferenceManager.Resolution.cs b/src/Compilers/Core/Portable/ReferenceManager/CommonReferenceManager.Resolution.cs index 1ffd4efbcd5a3..876710617a9b0 100644 --- a/src/Compilers/Core/Portable/ReferenceManager/CommonReferenceManager.Resolution.cs +++ b/src/Compilers/Core/Portable/ReferenceManager/CommonReferenceManager.Resolution.cs @@ -5,12 +5,12 @@ using System.Collections.Immutable; using System.Diagnostics; using System.IO; +using System.Reflection; using System.Runtime.CompilerServices; using Roslyn.Utilities; namespace Microsoft.CodeAnalysis { - using System.Reflection; using MetadataOrDiagnostic = System.Object; /// @@ -54,8 +54,6 @@ protected struct ResolvedReference private readonly int _index; private readonly ImmutableArray _aliases; - public static readonly ResolvedReference Skipped = default(ResolvedReference); - public ResolvedReference(int index, MetadataImageKind kind, ImmutableArray aliases) { Debug.Assert(index >= 0); @@ -74,6 +72,9 @@ public ImmutableArray Aliases } } + /// + /// default() is considered skipped. + /// public bool IsSkipped { get @@ -91,6 +92,9 @@ public MetadataImageKind Kind } } + /// + /// Index into an array of assemblies or an array of modules, depending on . + /// public int Index { get @@ -324,6 +328,13 @@ protected ImmutableArray ResolveMetadataReferences( boundReferenceDirectives = ImmutableArray.Empty; } + // We enumerated references in reverse order in the above code + // and thus assemblies and modules in the builders are reversed. + // Fix up all the indices and reverse the builder content now to get + // the ordering matching the references. + // + // Also fills in aliases. + for (int i = 0; i < referenceMap.Length; i++) { if (!referenceMap[i].IsSkipped) @@ -331,6 +342,7 @@ protected ImmutableArray ResolveMetadataReferences( int count = referenceMap[i].Kind == MetadataImageKind.Assembly ? ((object)assembliesBuilder == null ? 0 : assembliesBuilder.Count) : ((object)modulesBuilder == null ? 0 : modulesBuilder.Count); + int reversedIndex = count - 1 - referenceMap[i].Index; referenceMap[i] = new ResolvedReference(reversedIndex, referenceMap[i].Kind, GetAliases(references[i], aliasMap)); } @@ -345,7 +357,7 @@ protected ImmutableArray ResolveMetadataReferences( assembliesBuilder.ReverseContents(); assemblies = assembliesBuilder.ToImmutableAndFree(); } - + if (modulesBuilder == null) { modules = ImmutableArray.Empty; @@ -542,6 +554,7 @@ private static void AddAssembly(AssemblyData data, int referenceIndex, ResolvedR assemblies = ArrayBuilder.GetInstance(); } + // aliases will be filled in later: referenceMap[referenceIndex] = new ResolvedReference(assemblies.Count, MetadataImageKind.Assembly, default(ImmutableArray)); assemblies.Add(data); } diff --git a/src/Compilers/Core/Portable/ReferenceManager/CommonReferenceManager.State.cs b/src/Compilers/Core/Portable/ReferenceManager/CommonReferenceManager.State.cs index c87021252eeee..b37aec5ebe2b2 100644 --- a/src/Compilers/Core/Portable/ReferenceManager/CommonReferenceManager.State.cs +++ b/src/Compilers/Core/Portable/ReferenceManager/CommonReferenceManager.State.cs @@ -4,12 +4,8 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; -using System.IO; using System.Linq; -using System.Runtime.CompilerServices; -using System.Text; using System.Threading; -using Microsoft.CodeAnalysis.Text; using Roslyn.Utilities; namespace Microsoft.CodeAnalysis @@ -36,33 +32,17 @@ internal abstract class CommonReferenceManager /// Enumerates all referenced assemblies. /// internal abstract IEnumerable> GetReferencedAssemblies(); + + /// + /// Enumerates all referenced assemblies and their aliases. + /// + internal abstract IEnumerable>> GetReferencedAssemblyAliases(); - internal abstract bool TryGetReferencedAssemblySymbol(MetadataReference reference, out IAssemblySymbol symbol, out ImmutableArray aliases); + internal abstract MetadataReference GetMetadataReference(IAssemblySymbol assemblySymbol); } internal partial class CommonReferenceManager : CommonReferenceManager { - internal struct ReferencedAssembly - { - public readonly TAssemblySymbol Symbol; - - // All aliases given to this symbol via metadata references, may contain duplicates - public readonly ImmutableArray Aliases; - - public ReferencedAssembly(TAssemblySymbol symbol, ImmutableArray aliases) - { - Debug.Assert(symbol != null && !aliases.IsDefault); - - this.Symbol = symbol; - this.Aliases = aliases; - } - - public bool DeclarationsAccessibleWithoutAlias() - { - return Aliases.Length == 0 || Aliases.IndexOf(MetadataReferenceProperties.GlobalAlias) >= 0; - } - } - /// /// If the compilation being built represents an assembly its assembly name. /// If the compilation being built represents a module, the name of the @@ -98,10 +78,10 @@ public bool DeclarationsAccessibleWithoutAlias() private ThreeState _lazyHasCircularReference; /// - /// A map from a metadata reference to an AssemblySymbol used for it. Do not access - /// directly, use property instead. + /// A map from a metadata reference to an index to array. Do not access + /// directly, use property instead. /// - private Dictionary _lazyReferencedAssembliesMap; + private Dictionary _lazyReferencedAssembliesMap; /// /// A map from a net-module metadata reference to the index of the corresponding module @@ -109,7 +89,7 @@ public bool DeclarationsAccessibleWithoutAlias() /// /// /// Subtract one from the index (for the manifest module) to find the corresponding elements - /// of lazyReferencedModules and lazyReferencedModulesReferences. + /// of and . /// private Dictionary _lazyReferencedModuleIndexMap; @@ -126,7 +106,7 @@ public bool DeclarationsAccessibleWithoutAlias() /// The references are in the order they appear in syntax trees. This order is currently preserved /// as syntax trees are added or removed, but we might decide to share reference manager between compilations /// with different order of #r's. It doesn't seem this would be an issue since all #r's within the compilation - /// has the same "priority" with respect to each other. + /// have the same "priority" with respect to each other. /// private ImmutableArray _lazyDirectiveReferences; @@ -154,7 +134,7 @@ public bool DeclarationsAccessibleWithoutAlias() /// Standalone modules referenced by the compilation (doesn't include the manifest module of the compilation). /// /// - /// lazyReferencedModules[i] corresponds to lazyReferencedModulesReferences[i]. + /// [i] corresponds to [i]. /// private ImmutableArray _lazyReferencedModules; @@ -162,7 +142,7 @@ public bool DeclarationsAccessibleWithoutAlias() /// References of standalone modules referenced by the compilation (doesn't include the manifest module of the compilation). /// /// - /// lazyReferencedModules[i] corresponds to lazyReferencedModulesReferences[i]. + /// [i] corresponds to [i]. /// private ImmutableArray> _lazyReferencedModulesReferences; @@ -171,6 +151,14 @@ public bool DeclarationsAccessibleWithoutAlias() /// private ImmutableArray _lazyReferencedAssemblies; + /// + /// Assemblies referenced directly by the source module of the compilation. + /// + /// + /// Aliases [i] are of an assembly [i]. + /// + private ImmutableArray> _lazyAliasesOfReferencedAssemblies; + /// /// Unified assemblies referenced directly by the source module of the compilation. /// @@ -204,7 +192,7 @@ internal bool HasCircularReference } } - internal Dictionary ReferencedAssembliesMap + internal Dictionary ReferencedAssembliesMap { get { @@ -278,6 +266,15 @@ internal ImmutableArray ReferencedAssemblies } } + internal ImmutableArray> AliasesOfReferencedAssemblies + { + get + { + AssertBound(); + return _lazyAliasesOfReferencedAssemblies; + } + } + internal ImmutableArray> UnifiedAssemblies { get @@ -304,6 +301,7 @@ internal void AssertUnbound() Debug.Assert(_lazyReferencedModules.IsDefault); Debug.Assert(_lazyReferencedModulesReferences.IsDefault); Debug.Assert(_lazyReferencedAssemblies.IsDefault); + Debug.Assert(_lazyAliasesOfReferencedAssemblies.IsDefault); Debug.Assert(_lazyUnifiedAssemblies.IsDefault); Debug.Assert(_lazyCorLibraryOpt == null); } @@ -320,10 +318,13 @@ internal void AssertBound() Debug.Assert(!_lazyReferencedModules.IsDefault); Debug.Assert(!_lazyReferencedModulesReferences.IsDefault); Debug.Assert(!_lazyReferencedAssemblies.IsDefault); + Debug.Assert(!_lazyAliasesOfReferencedAssemblies.IsDefault); Debug.Assert(!_lazyUnifiedAssemblies.IsDefault); // lazyCorLibrary is null if the compilation is corlib Debug.Assert(_lazyReferencedAssemblies.Length == 0 || _lazyCorLibraryOpt != null); + + Debug.Assert(_lazyReferencedAssemblies.Length == _lazyAliasesOfReferencedAssemblies.Length); } [Conditional("DEBUG")] @@ -344,7 +345,7 @@ internal bool IsBound /// Call only while holding . /// internal void InitializeNoLock( - Dictionary referencedAssembliesMap, + Dictionary referencedAssembliesMap, Dictionary referencedModulesMap, IDictionary boundReferenceDirectiveMap, ImmutableArray boundReferenceDirectives, @@ -354,6 +355,7 @@ internal void InitializeNoLock( ImmutableArray referencedModules, ImmutableArray> referencedModulesReferences, ImmutableArray referencedAssemblies, + ImmutableArray> aliasesOfReferencedAssemblies, ImmutableArray> unifiedAssemblies) { AssertUnbound(); @@ -371,6 +373,7 @@ internal void InitializeNoLock( _lazyReferencedModules = referencedModules; _lazyReferencedModulesReferences = referencedModulesReferences; _lazyReferencedAssemblies = referencedAssemblies; + _lazyAliasesOfReferencedAssemblies = aliasesOfReferencedAssemblies; _lazyUnifiedAssemblies = unifiedAssemblies; _lazyHasCircularReference = containsCircularReferences.ToThreeState(); @@ -381,45 +384,55 @@ internal void InitializeNoLock( #region Compilation APIs Implementation // for testing purposes - internal IEnumerable ExternAliases + internal IEnumerable ExternAliases => AliasesOfReferencedAssemblies.SelectMany(aliases => aliases); + + internal sealed override IEnumerable> GetReferencedAssemblies() { - get - { - return ReferencedAssembliesMap.Values.SelectMany(entry => entry.Aliases); - } + return ReferencedAssembliesMap.Select(ra => KeyValuePair.Create(ra.Key, (IAssemblySymbol)ReferencedAssemblies[ra.Value])); } - internal sealed override IEnumerable> GetReferencedAssemblies() + internal TAssemblySymbol GetReferencedAssemblySymbol(MetadataReference reference) { - return ReferencedAssembliesMap.Select(ra => KeyValuePair.Create(ra.Key, (IAssemblySymbol)ra.Value.Symbol)); + int index; + return ReferencedAssembliesMap.TryGetValue(reference, out index) ? ReferencedAssemblies[index] : null; } - internal sealed override bool TryGetReferencedAssemblySymbol(MetadataReference reference, out IAssemblySymbol symbol, out ImmutableArray aliases) + internal int GetReferencedModuleIndex(MetadataReference reference) { - ReferencedAssembly result; - if (ReferencedAssembliesMap.TryGetValue(reference, out result)) + int index; + return ReferencedModuleIndexMap.TryGetValue(reference, out index) ? index : -1; + } + + /// + /// Gets the that corresponds to the assembly symbol. + /// + internal override MetadataReference GetMetadataReference(IAssemblySymbol assemblySymbol) + { + foreach (var entry in ReferencedAssembliesMap) { - symbol = result.Symbol; - aliases = result.Aliases; - return true; + if ((object)ReferencedAssemblies[entry.Value] == assemblySymbol) + { + return entry.Key; + } } - symbol = null; - aliases = default(ImmutableArray); - return false; + return null; } - internal TAssemblySymbol GetReferencedAssemblySymbol(MetadataReference reference) + internal override IEnumerable>> GetReferencedAssemblyAliases() { - ReferencedAssembly result; - return ReferencedAssembliesMap.TryGetValue(reference, out result) ? result.Symbol : null; + for (int i = 0; i < ReferencedAssemblies.Length; i++) + { + yield return ValueTuple.Create((IAssemblySymbol)ReferencedAssemblies[i], AliasesOfReferencedAssemblies[i]); + } } - internal int GetReferencedModuleIndex(MetadataReference reference) + public bool DeclarationsAccessibleWithoutAlias(int referencedAssemblyIndex) { - int index; - return ReferencedModuleIndexMap.TryGetValue(reference, out index) ? index : -1; + var aliases = AliasesOfReferencedAssemblies[referencedAssemblyIndex]; + return aliases.Length == 0 || aliases.IndexOf(MetadataReferenceProperties.GlobalAlias, StringComparer.Ordinal) >= 0; } + #endregion } } diff --git a/src/Compilers/Core/Portable/ReferenceManager/ModuleReferences.cs b/src/Compilers/Core/Portable/ReferenceManager/ModuleReferences.cs index 5d37452d0442a..83006f5dc813d 100644 --- a/src/Compilers/Core/Portable/ReferenceManager/ModuleReferences.cs +++ b/src/Compilers/Core/Portable/ReferenceManager/ModuleReferences.cs @@ -18,7 +18,7 @@ internal sealed class ModuleReferences /// /// Names[i] is the identity of assembly Symbols[i]. /// - public readonly ImmutableArray Names; + public readonly ImmutableArray Identities; /// /// Assembly symbols that the identities are resolved against. @@ -36,16 +36,16 @@ internal sealed class ModuleReferences public readonly ImmutableArray> UnifiedAssemblies; public ModuleReferences( - ImmutableArray names, + ImmutableArray identities, ImmutableArray symbols, ImmutableArray> unifiedAssemblies) { - Debug.Assert(!names.IsDefault); + Debug.Assert(!identities.IsDefault); Debug.Assert(!symbols.IsDefault); - Debug.Assert(names.Length == symbols.Length); + Debug.Assert(identities.Length == symbols.Length); Debug.Assert(!unifiedAssemblies.IsDefault); - this.Names = names; + this.Identities = identities; this.Symbols = symbols; this.UnifiedAssemblies = unifiedAssemblies; } diff --git a/src/Compilers/Core/SharedCollections/ArrayBuilder.cs b/src/Compilers/Core/SharedCollections/ArrayBuilder.cs index 12790f34b6540..6f33f8ce113b6 100644 --- a/src/Compilers/Core/SharedCollections/ArrayBuilder.cs +++ b/src/Compilers/Core/SharedCollections/ArrayBuilder.cs @@ -5,6 +5,7 @@ using System.Collections.Immutable; using System.Diagnostics; using Roslyn.Utilities; +using Microsoft.CodeAnalysis.Collections; namespace Microsoft.CodeAnalysis { @@ -416,5 +417,42 @@ public void AddMany(T item, int count) Add(item); } } + + public void RemoveDuplicates() + { + var set = PooledHashSet.GetInstance(); + + int j = 0; + for (int i = 0; i < Count; i++) + { + this[j] = this[i]; + + if (set.Add(this[i])) + { + j++; + } + } + + Clip(j); + set.Free(); + } + + public ImmutableArray SelectDistinct(Func selector) + { + var result = ArrayBuilder.GetInstance(Count); + var set = PooledHashSet.GetInstance(); + + foreach (var item in this) + { + var selected = selector(item); + if (set.Add(selected)) + { + result.Add(selected); + } + } + + set.Free(); + return result.ToImmutableAndFree(); + } } } diff --git a/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb b/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb index 6c726942993fd..1780dcff4250e 100644 --- a/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb +++ b/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb @@ -1227,7 +1227,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic ''' Gets the that corresponds to the assembly symbol. ''' Friend Shadows Function GetMetadataReference(assemblySymbol As AssemblySymbol) As MetadataReference - Return Me.GetBoundReferenceManager().ReferencedAssembliesMap.Where(Function(kvp) kvp.Value.Symbol Is assemblySymbol).Select(Function(kvp) kvp.Key).FirstOrDefault() + Return Me.GetBoundReferenceManager().GetMetadataReference(assemblySymbol) End Function Public Overrides ReadOnly Property ReferencedAssemblyNames As IEnumerable(Of AssemblyIdentity) @@ -2640,15 +2640,6 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Get End Property - Protected Overrides Function CommonGetMetadataReference(_assemblySymbol As IAssemblySymbol) As MetadataReference - Dim symbol = TryCast(_assemblySymbol, AssemblySymbol) - If symbol IsNot Nothing Then - Return Me.GetMetadataReference(symbol) - Else - Return Nothing - End If - End Function - Protected Overrides Function CommonGetEntryPoint(cancellationToken As CancellationToken) As IMethodSymbol Return Me.GetEntryPoint(cancellationToken) End Function diff --git a/src/Compilers/VisualBasic/Portable/Symbols/NonMissingModuleSymbol.vb b/src/Compilers/VisualBasic/Portable/Symbols/NonMissingModuleSymbol.vb index a561fc2504482..a9e764def6b5b 100644 --- a/src/Compilers/VisualBasic/Portable/Symbols/NonMissingModuleSymbol.vb +++ b/src/Compilers/VisualBasic/Portable/Symbols/NonMissingModuleSymbol.vb @@ -44,7 +44,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols ''' Friend NotOverridable Overrides Function GetReferencedAssemblies() As ImmutableArray(Of AssemblyIdentity) AssertReferencesInitialized() - Return _moduleReferences.Names + Return _moduleReferences.Identities End Function ''' diff --git a/src/Compilers/VisualBasic/Portable/Symbols/ReferenceManager.vb b/src/Compilers/VisualBasic/Portable/Symbols/ReferenceManager.vb index f6d84dd3afb52..43c4310a28c8a 100644 --- a/src/Compilers/VisualBasic/Portable/Symbols/ReferenceManager.vb +++ b/src/Compilers/VisualBasic/Portable/Symbols/ReferenceManager.vb @@ -141,7 +141,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic ' Given compilation is the first compilation that shares this manager and its symbols are requested. ' Perform full reference resolution and binding. - If Not IsBound AndAlso CreateSourceAssemblyFullBind(compilation) Then + If Not IsBound AndAlso CreateAndSetSourceAssemblyFullBind(compilation) Then ' we have successfully bound the references for the compilation @@ -158,7 +158,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic ' NOTE: The CreateSourceAssemblyFullBind is going to replace compilation's reference manager with newManager. Dim newManager = New ReferenceManager(Me.SimpleAssemblyName, Me.IdentityComparer, Me.ObservedMetadata) - Dim successful = newManager.CreateSourceAssemblyFullBind(compilation) + Dim successful = newManager.CreateAndSetSourceAssemblyFullBind(compilation) ' The new manager isn't shared with any other compilation so there is no other ' thread but the current one could have initialized it. @@ -253,11 +253,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Sub ' Returns false if another compilation sharing this manager finished binding earlier and we should reuse its results. - Friend Function CreateSourceAssemblyFullBind(compilation As VisualBasicCompilation) As Boolean + Friend Function CreateAndSetSourceAssemblyFullBind(compilation As VisualBasicCompilation) As Boolean - Dim assemblySymbol As SourceAssemblySymbol - Dim referencedAssembliesMap As Dictionary(Of MetadataReference, ReferencedAssembly) - Dim referencedModulesMap As Dictionary(Of MetadataReference, Integer) Dim boundReferenceDirectiveMap As IDictionary(Of String, MetadataReference) = Nothing Dim boundReferenceDirectives As ImmutableArray(Of MetadataReference) = Nothing Dim hasCircularReference As Boolean @@ -316,10 +313,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Else Dim fileData = DirectCast(allAssemblies(i), AssemblyDataForFile) - bindingResult(i).AssemblySymbol = New Symbols.Metadata.PE.PEAssemblySymbol(fileData.Assembly, - fileData.DocumentationProvider, - fileData.IsLinked, - fileData.EffectiveImportOptions) + bindingResult(i).AssemblySymbol = New PEAssemblySymbol(fileData.Assembly, + fileData.DocumentationProvider, + fileData.IsLinked, + fileData.EffectiveImportOptions) End If newSymbols.Add(i) @@ -328,7 +325,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Debug.Assert(allAssemblies(i).IsLinked = bindingResult(i).AssemblySymbol.IsLinked) Next - assemblySymbol = New SourceAssemblySymbol(compilation, SimpleAssemblyName, compilation.MakeSourceModuleName(), modules) + Dim assemblySymbol = New SourceAssemblySymbol(compilation, SimpleAssemblyName, compilation.MakeSourceModuleName(), modules) Dim corLibrary As AssemblySymbol @@ -360,31 +357,32 @@ Namespace Microsoft.CodeAnalysis.VisualBasic InitializeNewSymbols(newSymbols, assemblySymbol, allAssemblies, bindingResult, missingAssemblies) End If - ' Setup references for the compilation - referencedAssembliesMap = New Dictionary(Of MetadataReference, ReferencedAssembly)(referenceMap.Length) - referencedModulesMap = New Dictionary(Of MetadataReference, Integer)(modules.Length) - - Dim sourceModule = assemblySymbol.SourceModule - Dim referencedAssemblySymbols = sourceModule.GetReferencedAssemblySymbols() + ' Calculate reference maps And aliases + Dim referencedAssembliesMap = New Dictionary(Of MetadataReference, Integer)(referenceMap.Length) + Dim referencedModulesMap = New Dictionary(Of MetadataReference, Integer)(modules.Length) + Dim aliasesOfReferencedAssembliesBuilder = ArrayBuilder(Of ImmutableArray(Of String)).GetInstance(referencedAssemblies.Length) For i As Integer = 0 To referenceMap.Length - 1 Step 1 - If referenceMap(i).IsSkipped Then Continue For End If - If referenceMap(i).Kind = MetadataImageKind.Module Then ' add 1 for the manifest module Dim moduleIndex = 1 + referenceMap(i).Index referencedModulesMap.Add(references(i), moduleIndex) - referencedAssembliesMap.Add(references(i), New ReferencedAssembly(assemblySymbol, aliases:=ImmutableArray(Of String).Empty)) Else + ' index into assembly data array Dim assemblyIndex = referenceMap(i).Index - referencedAssembliesMap.Add(references(i), New ReferencedAssembly(referencedAssemblySymbols(assemblyIndex), aliases:=ImmutableArray(Of String).Empty)) + Debug.Assert(aliasesOfReferencedAssembliesBuilder.Count = assemblyIndex) + + referencedAssembliesMap.Add(references(i), assemblyIndex) + aliasesOfReferencedAssembliesBuilder.Add(ImmutableArray(Of String).Empty) End If Next + Dim aliasesOfReferencedAssemblies = aliasesOfReferencedAssembliesBuilder.ToImmutableAndFree() + If compilation._lazyAssemblySymbol Is Nothing Then SyncLock SymbolCacheAndReferenceManagerStateGuard If compilation._lazyAssemblySymbol Is Nothing Then @@ -407,8 +405,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic If(corLibrary Is assemblySymbol, Nothing, corLibrary), modules, moduleReferences, - referencedAssemblySymbols, - sourceModule.GetUnifiedAssemblies()) + assemblySymbol.SourceModule.GetReferencedAssemblySymbols(), + aliasesOfReferencedAssemblies, + assemblySymbol.SourceModule.GetUnifiedAssemblies()) ' Make sure that the given compilation holds on this instance of reference manager. Debug.Assert(compilation._referenceManager Is Me OrElse hasCircularReference) @@ -445,7 +444,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End If Next - Dim linkedReferencedAssemblies As New List(Of AssemblySymbol)() + Dim linkedReferencedAssembliesBuilder = ArrayBuilder(Of AssemblySymbol).GetInstance() ' Setup CorLibrary and NoPia stuff for newly created assemblies @@ -456,28 +455,30 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End If ' Setup linked referenced assemblies. - linkedReferencedAssemblies.Clear() + linkedReferencedAssembliesBuilder.Clear() If assemblies(i).IsLinked Then - linkedReferencedAssemblies.Add(bindingResult(i).AssemblySymbol) + linkedReferencedAssembliesBuilder.Add(bindingResult(i).AssemblySymbol) End If For Each referenceBinding In bindingResult(i).ReferenceBinding If referenceBinding.IsBound AndAlso assemblies(referenceBinding.DefinitionIndex).IsLinked Then - linkedReferencedAssemblies.Add( + linkedReferencedAssembliesBuilder.Add( bindingResult(referenceBinding.DefinitionIndex).AssemblySymbol) End If Next - If linkedReferencedAssemblies.Count > 0 Then - bindingResult(i).AssemblySymbol.SetLinkedReferencedAssemblies( - ImmutableArray.CreateRange(Of AssemblySymbol)(linkedReferencedAssemblies.Distinct())) + If linkedReferencedAssembliesBuilder.Count > 0 Then + linkedReferencedAssembliesBuilder.RemoveDuplicates() + bindingResult(i).AssemblySymbol.SetLinkedReferencedAssemblies(linkedReferencedAssembliesBuilder.ToImmutable()) End If bindingResult(i).AssemblySymbol.SetCorLibrary(corLibrary) Next + linkedReferencedAssembliesBuilder.Free() + If missingAssemblies IsNot Nothing Then For Each missingAssembly In missingAssemblies.Values missingAssembly.SetCorLibrary(corLibrary) @@ -687,9 +688,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Inherits AssemblyData Private _assemblies As List(Of AssemblySymbol) - Protected m_Identity As AssemblyIdentity - Protected m_ReferencedAssemblies As ImmutableArray(Of AssemblyIdentity) - Protected ReadOnly m_EmbedInteropTypes As Boolean + Private ReadOnly m_Identity As AssemblyIdentity + Private ReadOnly m_ReferencedAssemblies As ImmutableArray(Of AssemblyIdentity) + Private ReadOnly m_EmbedInteropTypes As Boolean 'This is the name of the compilation that is being built. 'This should be the assembly name w/o the extension. It is @@ -697,8 +698,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic 'assembly will give friend access to the compilation. Protected ReadOnly m_CompilationName As String - Protected Sub New(embedInteropTypes As Boolean, compilationName As String) + Protected Sub New(identity As AssemblyIdentity, + referencedAssemblies As ImmutableArray(Of AssemblyIdentity), + embedInteropTypes As Boolean, + compilationName As String) + + Debug.Assert(identity IsNot Nothing) + Debug.Assert(Not referencedAssemblies.IsDefault) + m_EmbedInteropTypes = embedInteropTypes + m_Identity = identity + m_ReferencedAssemblies = referencedAssemblies m_CompilationName = compilationName End Sub @@ -732,7 +742,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Property Public Overrides Function BindAssemblyReferences(assemblies As ImmutableArray(Of AssemblyData), assemblyIdentityComparer As AssemblyIdentityComparer) As AssemblyReferenceBinding() - Return ReferenceManager.ResolveReferencedAssemblies(m_ReferencedAssemblies, assemblies, assemblyIdentityComparer, okToResolveAgainstCompilationBeingCreated:=True) + Return ResolveReferencedAssemblies(m_ReferencedAssemblies, assemblies, assemblyIdentityComparer, okToResolveAgainstCompilationBeingCreated:=True) End Function Public NotOverridable Overrides ReadOnly Property IsLinked As Boolean @@ -778,15 +788,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic compilationName As String, compilationImportOptions As MetadataImportOptions) - MyBase.New(embedInteropTypes, compilationName) + MyBase.New(assembly.Identity, assembly.AssemblyReferences, embedInteropTypes, compilationName) Debug.Assert(cachedSymbols IsNot Nothing) - Debug.Assert(assembly IsNot Nothing) _cachedSymbols = cachedSymbols _assembly = assembly - m_Identity = assembly.Identity - m_ReferencedAssemblies = assembly.AssemblyReferences _documentationProvider = If(documentationProvider, DocumentationProvider.Default) _compilationImportOptions = compilationImportOptions @@ -822,7 +829,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic ' accessing cached symbols requires a lock SyncLock SymbolCacheAndReferenceManagerStateGuard For Each assemblySymbol In _cachedSymbols - Dim peAssembly = TryCast(assemblySymbol, Symbols.Metadata.PE.PEAssemblySymbol) + Dim peAssembly = TryCast(assemblySymbol, PEAssemblySymbol) If IsMatchingAssembly(peAssembly) Then assemblies.Add(peAssembly) End If @@ -831,10 +838,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Sub Public Overrides Function IsMatchingAssembly(candidateAssembly As AssemblySymbol) As Boolean - Return IsMatchingAssembly(TryCast(candidateAssembly, Symbols.Metadata.PE.PEAssemblySymbol)) + Return IsMatchingAssembly(TryCast(candidateAssembly, PEAssemblySymbol)) End Function - Private Overloads Function IsMatchingAssembly(peAssembly As Symbols.Metadata.PE.PEAssemblySymbol) As Boolean + Private Overloads Function IsMatchingAssembly(peAssembly As PEAssemblySymbol) As Boolean If peAssembly Is Nothing Then Return False End If @@ -880,57 +887,46 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Private NotInheritable Class AssemblyDataForCompilation Inherits AssemblyDataForMetadataOrCompilation - Private ReadOnly _compilation As VisualBasicCompilation - - Public ReadOnly Property Compilation As VisualBasicCompilation - Get - Return _compilation - End Get - End Property + Public ReadOnly Compilation As VisualBasicCompilation Public Sub New(compilation As VisualBasicCompilation, embedInteropTypes As Boolean) - MyBase.New(embedInteropTypes, compilation.AssemblyName) + MyBase.New(compilation.Assembly.Identity, GetReferencedAssemblies(compilation), embedInteropTypes, compilation.AssemblyName) Debug.Assert(compilation IsNot Nothing) - _compilation = compilation - - Dim assembly As AssemblySymbol = compilation.Assembly - - m_Identity = assembly.Identity + Me.Compilation = compilation + End Sub + Private Shared Function GetReferencedAssemblies(compilation As VisualBasicCompilation) As ImmutableArray(Of AssemblyIdentity) ' Collect information about references Dim refs = ArrayBuilder(Of AssemblyIdentity).GetInstance() - Dim modules = assembly.Modules - Dim mCount As Integer = modules.Length - Dim i As Integer + Dim modules = compilation.Assembly.Modules ' Filter out linked assemblies referenced by the source module. Dim sourceReferencedAssemblies = modules(0).GetReferencedAssemblies() Dim sourceReferencedAssemblySymbols = modules(0).GetReferencedAssemblySymbols() - Dim rCount As Integer = sourceReferencedAssemblies.Length - Debug.Assert(rCount = sourceReferencedAssemblySymbols.Length) + Debug.Assert(sourceReferencedAssemblies.Length = sourceReferencedAssemblySymbols.Length) - For i = 0 To rCount - 1 Step 1 + For i = 0 To sourceReferencedAssemblies.Length - 1 If Not sourceReferencedAssemblySymbols(i).IsLinked Then refs.Add(sourceReferencedAssemblies(i)) End If Next - For i = 1 To mCount - 1 Step 1 + For i = 1 To modules.Length - 1 refs.AddRange(modules(i).GetReferencedAssemblies()) Next - m_ReferencedAssemblies = refs.ToImmutableAndFree() - End Sub + Return refs.ToImmutableAndFree() + End Function Protected Overrides Sub AddAvailableSymbols(assemblies As List(Of AssemblySymbol)) - assemblies.Add(_compilation.Assembly) + assemblies.Add(Compilation.Assembly) ' accessing cached symbols requires a lock SyncLock SymbolCacheAndReferenceManagerStateGuard - _compilation.AddRetargetingAssemblySymbolsNoLock(assemblies) + Compilation.AddRetargetingAssemblySymbolsNoLock(assemblies) End SyncLock End Sub @@ -946,8 +942,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Debug.Assert(Not (TypeOf asm Is Retargeting.RetargetingAssemblySymbol)) - Return asm Is _compilation.Assembly - + Return asm Is Compilation.Assembly End Function Public Overrides ReadOnly Property ContainsNoPiaLocalTypes As Boolean @@ -958,13 +953,13 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Public Overrides ReadOnly Property DeclaresTheObjectClass As Boolean Get - Return _compilation.DeclaresTheObjectClass + Return Compilation.DeclaresTheObjectClass End Get End Property Public Overrides ReadOnly Property SourceCompilation As Compilation Get - Return _compilation + Return Compilation End Get End Property End Class diff --git a/src/Compilers/VisualBasic/Portable/Symbols/Retargeting/RetargetingModuleSymbol.vb b/src/Compilers/VisualBasic/Portable/Symbols/Retargeting/RetargetingModuleSymbol.vb index 6b8934299b785..6b71828a1d9ad 100644 --- a/src/Compilers/VisualBasic/Portable/Symbols/Retargeting/RetargetingModuleSymbol.vb +++ b/src/Compilers/VisualBasic/Portable/Symbols/Retargeting/RetargetingModuleSymbol.vb @@ -170,7 +170,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols.Retargeting Dim underlyingBoundReferences As ImmutableArray(Of AssemblySymbol) = _underlyingModule.GetReferencedAssemblySymbols() Dim referencedAssemblySymbols As ImmutableArray(Of AssemblySymbol) = moduleReferences.Symbols - Dim referencedAssemblies As ImmutableArray(Of AssemblyIdentity) = moduleReferences.Names + Dim referencedAssemblies As ImmutableArray(Of AssemblyIdentity) = moduleReferences.Identities Debug.Assert(referencedAssemblySymbols.Length = referencedAssemblies.Length) Debug.Assert(referencedAssemblySymbols.Length <= underlyingBoundReferences.Length) ' Linked references are filtered out. From c5f33cb33f16c069a1ea91aa30885af330c8360f Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Fri, 25 Sep 2015 00:36:04 +0800 Subject: [PATCH 59/83] Correctly fix parenthesis removability checking by fixing operator precedence mapping. https://msdn.microsoft.com/en-us/library/6a71f45d.aspx Pointer related expressions are omitted because they could be parsed as bitwise operation when parenthesis removed. --- .../Extensions/ExpressionSyntaxExtensions.cs | 5 +++-- .../ParenthesizedExpressionSyntaxExtensions.cs | 12 ------------ 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/src/Workspaces/CSharp/Portable/Extensions/ExpressionSyntaxExtensions.cs b/src/Workspaces/CSharp/Portable/Extensions/ExpressionSyntaxExtensions.cs index c0683fbefbea2..e04088d29686e 100644 --- a/src/Workspaces/CSharp/Portable/Extensions/ExpressionSyntaxExtensions.cs +++ b/src/Workspaces/CSharp/Portable/Extensions/ExpressionSyntaxExtensions.cs @@ -2333,7 +2333,7 @@ public static OperatorPrecedence GetOperatorPrecedence(this ExpressionSyntax exp case SyntaxKind.UncheckedExpression: case SyntaxKind.AnonymousMethodExpression: // From C# spec, 7.3.1: - // Primary: x.y f(x) a[x] x++ x-- new typeof default checked unchecked delegate + // Primary: x.y x?.y x?[y] f(x) a[x] x++ x-- new typeof default checked unchecked delegate return OperatorPrecedence.Primary; @@ -2344,8 +2344,9 @@ public static OperatorPrecedence GetOperatorPrecedence(this ExpressionSyntax exp case SyntaxKind.PreIncrementExpression: case SyntaxKind.PreDecrementExpression: case SyntaxKind.CastExpression: + case SyntaxKind.AwaitExpression: // From C# spec, 7.3.1: - // Unary: + - ! ~ ++x --x (T)x + // Unary: + - ! ~ ++x --x (T)x await Task return OperatorPrecedence.Unary; diff --git a/src/Workspaces/CSharp/Portable/Extensions/ParenthesizedExpressionSyntaxExtensions.cs b/src/Workspaces/CSharp/Portable/Extensions/ParenthesizedExpressionSyntaxExtensions.cs index d46e644b18427..dbc3c806e486c 100644 --- a/src/Workspaces/CSharp/Portable/Extensions/ParenthesizedExpressionSyntaxExtensions.cs +++ b/src/Workspaces/CSharp/Portable/Extensions/ParenthesizedExpressionSyntaxExtensions.cs @@ -28,18 +28,6 @@ public static bool CanRemoveParentheses(this ParenthesizedExpressionSyntax node) return true; } - // await ( M() ) -> await M() - // await ( abc ) -> await abc - // await ( x.P ) -> await x.P - if (node.IsParentKind(SyntaxKind.AwaitExpression) - && (expression.IsKind(SyntaxKind.InvocationExpression) - || expression.IsKind(SyntaxKind.IdentifierName) - || expression.IsKind(SyntaxKind.SimpleMemberAccessExpression) - )) - { - return true; - } - // Don't change (x?.Count).GetValueOrDefault() to x?.Count.GetValueOrDefault() if (expression.IsKind(SyntaxKind.ConditionalAccessExpression) && parentExpression is MemberAccessExpressionSyntax) { From 419681b03a6dd2eb0268228e6fc75c127bd2b9ea Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Fri, 25 Sep 2015 01:22:02 +0800 Subject: [PATCH 60/83] With CanRemoveParentheses returns the correct result, Simplifier.Annotation works for CSharp --- .../Async/CSharpAddAwaitCodeFixProvider.cs | 32 +++---------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs index 83d8728edfe63..ec99daac4cbd1 100644 --- a/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs +++ b/src/Features/CSharp/Portable/CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs @@ -12,6 +12,7 @@ using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Formatting; using Microsoft.CodeAnalysis.LanguageServices; +using Microsoft.CodeAnalysis.Simplification; using Roslyn.Utilities; using Resources = Microsoft.CodeAnalysis.CSharp.CSharpFeaturesResources; @@ -159,34 +160,9 @@ private static SyntaxNode ConvertToAwaitExpression(ExpressionSyntax expression) } } - var awaitParenExpression = SimplyConvertToAwaitExpression(expression.Parenthesize()); - if (RequiresParenthesis(expression, awaitParenExpression)) - { - return awaitParenExpression; - } - else - { - return SimplyConvertToAwaitExpression(expression); - } - } - - private static bool RequiresParenthesis(ExpressionSyntax originalExpression, AwaitExpressionSyntax wrappedExpression) - { - var root = originalExpression.Ancestors().Last(); - var newRoot = root.ReplaceNode(originalExpression, wrappedExpression); - var newNode = (newRoot.FindNode(originalExpression.Span) as AwaitExpressionSyntax)?.Expression as ParenthesizedExpressionSyntax; - if (newNode != null) - { - return !newNode.CanRemoveParentheses(); - } - return false; - } - - private static AwaitExpressionSyntax SimplyConvertToAwaitExpression(ExpressionSyntax inner) - { - return SyntaxFactory.AwaitExpression(inner.WithoutTrivia()) - .WithTriviaFrom(inner) - .WithAdditionalAnnotations(Formatter.Annotation); + return SyntaxFactory.AwaitExpression(expression.WithoutTrivia().Parenthesize()) + .WithTriviaFrom(expression) + .WithAdditionalAnnotations(Simplifier.Annotation, Formatter.Annotation); } } } From 469359251ba30a9e90e303244b6f0d572f20724d Mon Sep 17 00:00:00 2001 From: Manish Vasani Date: Thu, 24 Sep 2015 12:42:55 -0700 Subject: [PATCH 61/83] Fixes to VS Suppression services to handle remove suppression(s) for FxCop diagnostics. --- .../IVisualStudioSuppressionFixService.cs | 6 +-- ...ioDiagnosticListSuppressionStateService.cs | 14 ++++++- .../VisualStudioSuppressionFixService.cs | 41 +++++++++++++------ 3 files changed, 43 insertions(+), 18 deletions(-) diff --git a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/IVisualStudioSuppressionFixService.cs b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/IVisualStudioSuppressionFixService.cs index c688900d56b78..9fa43251cc65d 100644 --- a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/IVisualStudioSuppressionFixService.cs +++ b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/IVisualStudioSuppressionFixService.cs @@ -14,7 +14,7 @@ internal interface IVisualStudioSuppressionFixService /// Adds source suppressions for all the diagnostics in the error list, i.e. baseline all active issues. /// /// An optional project hierarchy object in the solution explorer. If non-null, then only the diagnostics from the project will be suppressed. - void AddSuppressions(IVsHierarchy projectHierarchyOpt); + bool AddSuppressions(IVsHierarchy projectHierarchyOpt); /// /// Adds source suppressions for diagnostics. @@ -22,13 +22,13 @@ internal interface IVisualStudioSuppressionFixService /// If true, then only the currently selected entries in the error list will be suppressed. Otherwise, all suppressable entries in the error list will be suppressed. /// If true, then suppressions will be generated inline in the source file. Otherwise, they will be generated in a separate global suppressions file. /// An optional project hierarchy object in the solution explorer. If non-null, then only the diagnostics from the project will be suppressed. - void AddSuppressions(bool selectedErrorListEntriesOnly, bool suppressInSource, IVsHierarchy projectHierarchyOpt); + bool AddSuppressions(bool selectedErrorListEntriesOnly, bool suppressInSource, IVsHierarchy projectHierarchyOpt); /// /// Removes source suppressions for suppressed diagnostics. /// /// If true, then only the currently selected entries in the error list will be unsuppressed. Otherwise, all unsuppressable entries in the error list will be unsuppressed. /// An optional project hierarchy object in the solution explorer. If non-null, then only the diagnostics from the project will be unsuppressed. - void RemoveSuppressions(bool selectedErrorListEntriesOnly, IVsHierarchy projectHierarchyOpt); + bool RemoveSuppressions(bool selectedErrorListEntriesOnly, IVsHierarchy projectHierarchyOpt); } } diff --git a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListSuppressionStateService.cs b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListSuppressionStateService.cs index 7c01fa7c394b6..9b5ad5bdaba7f 100644 --- a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListSuppressionStateService.cs +++ b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListSuppressionStateService.cs @@ -34,6 +34,9 @@ internal class VisualStudioDiagnosticListSuppressionStateService : IVisualStudio private int _selectedCompilerDiagnosticItems; private int _selectedNonSuppressionStateItems; + private const string SynthesizedFxCopDiagnostic = "SynthesizedFxCopDiagnostic"; + private readonly string[] SynthesizedFxCopDiagnosticCustomTags = new string[] { SynthesizedFxCopDiagnostic }; + [ImportingConstructor] public VisualStudioDiagnosticListSuppressionStateService( SVsServiceProvider serviceProvider, @@ -201,6 +204,12 @@ private static AbstractTableEntriesSnapshot GetEntriesSnapshot(I return snapshot as AbstractTableEntriesSnapshot; } + public bool IsSynthesizedNonRoslynDiagnostic(DiagnosticData diagnostic) + { + var tags = diagnostic.CustomTags; + return tags != null && tags.Contains(SynthesizedFxCopDiagnostic); + } + /// /// Gets objects for error list entries, filtered based on the given parameters. /// @@ -260,7 +269,7 @@ public async Task> GetItemsAsync(bool selectedEnt } Document document = null; - var hasLocation = (entryHandle.TryGetValue(StandardTableColumnDefinitions.DocumentName, out filePath) && !string.IsNullOrEmpty(filePath)) || + var hasLocation = (entryHandle.TryGetValue(StandardTableColumnDefinitions.DocumentName, out filePath) && !string.IsNullOrEmpty(filePath)) && (entryHandle.TryGetValue(StandardTableColumnDefinitions.Line, out line) && line >= 0); if (hasLocation) { @@ -306,7 +315,8 @@ public async Task> GetItemsAsync(bool selectedEnt warningLevel: 1, isSuppressed: isSuppressedEntry, title: message, - location: location); + location: location, + customTags: SynthesizedFxCopDiagnosticCustomTags); diagnosticData = document != null ? DiagnosticData.Create(document, diagnostic) : diff --git a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioSuppressionFixService.cs b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioSuppressionFixService.cs index 7515d0cdeb7fe..88dd7d9afa6eb 100644 --- a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioSuppressionFixService.cs +++ b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioSuppressionFixService.cs @@ -54,36 +54,43 @@ public VisualStudioSuppressionFixService( _tableControl = errorList?.TableControl; } - public void AddSuppressions(IVsHierarchy projectHierarchyOpt) + public bool AddSuppressions(IVsHierarchy projectHierarchyOpt) { + if (_tableControl == null) + { + return false; + } + Func shouldFixInProject = GetShouldFixInProjectDelegate(_workspace, projectHierarchyOpt); // Apply suppressions fix in global suppressions file for non-compiler diagnostics and // in source only for compiler diagnostics. ApplySuppressionFix(shouldFixInProject, selectedEntriesOnly: false, isAddSuppression: true, isSuppressionInSource: false, onlyCompilerDiagnostics: false, showPreviewChangesDialog: false); ApplySuppressionFix(shouldFixInProject, selectedEntriesOnly: false, isAddSuppression: true, isSuppressionInSource: true, onlyCompilerDiagnostics: true, showPreviewChangesDialog: false); + + return true; } - public void AddSuppressions(bool selectedErrorListEntriesOnly, bool suppressInSource, IVsHierarchy projectHierarchyOpt) + public bool AddSuppressions(bool selectedErrorListEntriesOnly, bool suppressInSource, IVsHierarchy projectHierarchyOpt) { if (_tableControl == null) { - return; + return false; } Func shouldFixInProject = GetShouldFixInProjectDelegate(_workspace, projectHierarchyOpt); - ApplySuppressionFix(shouldFixInProject, selectedErrorListEntriesOnly, isAddSuppression: true, isSuppressionInSource: suppressInSource, onlyCompilerDiagnostics: false, showPreviewChangesDialog: true); + return ApplySuppressionFix(shouldFixInProject, selectedErrorListEntriesOnly, isAddSuppression: true, isSuppressionInSource: suppressInSource, onlyCompilerDiagnostics: false, showPreviewChangesDialog: true); } - public void RemoveSuppressions(bool selectedErrorListEntriesOnly, IVsHierarchy projectHierarchyOpt) + public bool RemoveSuppressions(bool selectedErrorListEntriesOnly, IVsHierarchy projectHierarchyOpt) { if (_tableControl == null) { - return; + return false; } Func shouldFixInProject = GetShouldFixInProjectDelegate(_workspace, projectHierarchyOpt); - ApplySuppressionFix(shouldFixInProject, selectedErrorListEntriesOnly, isAddSuppression: false, isSuppressionInSource: false, onlyCompilerDiagnostics: false, showPreviewChangesDialog: true); + return ApplySuppressionFix(shouldFixInProject, selectedErrorListEntriesOnly, isAddSuppression: false, isSuppressionInSource: false, onlyCompilerDiagnostics: false, showPreviewChangesDialog: true); } private static Func GetShouldFixInProjectDelegate(VisualStudioWorkspaceImpl workspace, IVsHierarchy projectHierarchyOpt) @@ -103,7 +110,7 @@ private static Func GetShouldFixInProjectDelegate(VisualStudioWor } } - private void ApplySuppressionFix(Func shouldFixInProject, bool selectedEntriesOnly, bool isAddSuppression, bool isSuppressionInSource, bool onlyCompilerDiagnostics, bool showPreviewChangesDialog) + private bool ApplySuppressionFix(Func shouldFixInProject, bool selectedEntriesOnly, bool isAddSuppression, bool isSuppressionInSource, bool onlyCompilerDiagnostics, bool showPreviewChangesDialog) { ImmutableDictionary> diagnosticsToFixMap = null; @@ -143,9 +150,15 @@ private void ApplySuppressionFix(Func shouldFixInProject, bool se // Bail out if the user cancelled. if (result == WaitIndicatorResult.Canceled || - diagnosticsToFixMap == null || diagnosticsToFixMap.IsEmpty) + diagnosticsToFixMap == null) { - return; + return false; + } + + if (diagnosticsToFixMap.IsEmpty) + { + // Nothing to fix. + return true; } // Equivalence key determines what fix will be applied. @@ -234,11 +247,13 @@ private void ApplySuppressionFix(Func shouldFixInProject, bool se if (currentSolution == newSolution) { // User cancelled, so we just bail out. - break; + return false; } needsMappingToNewSolution = true; } + + return true; } private async Task>> GetDiagnosticsToFixMapAsync(IEnumerable diagnosticsToFix, Func shouldFixInProject, CancellationToken cancellationToken) @@ -295,11 +310,11 @@ private async Task>> Ge if (!latestDocumentDiagnosticsMap.TryGetValue(document.Id, out latestDocumentDiagnostics)) { // Ignore stale diagnostics in error list. - continue; + latestDocumentDiagnostics = ImmutableHashSet.Empty; } // Filter out stale diagnostics in error list. - var documentDiagnosticsToFix = documentDiagnostics.Value.Where(d => latestDocumentDiagnostics.Contains(d)); + var documentDiagnosticsToFix = documentDiagnostics.Value.Where(d => latestDocumentDiagnostics.Contains(d) || _suppressionStateService.IsSynthesizedNonRoslynDiagnostic(d)); if (documentDiagnosticsToFix.IsEmpty()) { From fb9c1cf970b034251d525ff75617fa85f2c56f50 Mon Sep 17 00:00:00 2001 From: Kevin Halverson Date: Thu, 24 Sep 2015 11:56:30 -0700 Subject: [PATCH 62/83] Add null check for TextViewModel in GetDataTipText... The Web Tools team reported seeing occasional crashes in DataTips. Dump analysis pointed to GetDataTipText being called on a WpfTextView that was already closed. Even if the caller (VS IDE) were to check this, there is a race where some other thread could close the view before GetDataTipText executes. We need to handle this and return gracefully. --- .../Def/Implementation/Venus/VenusCommandFilter.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/VisualStudio/Core/Def/Implementation/Venus/VenusCommandFilter.cs b/src/VisualStudio/Core/Def/Implementation/Venus/VenusCommandFilter.cs index 95dd8bd1d1268..9adfab9540cc6 100644 --- a/src/VisualStudio/Core/Def/Implementation/Venus/VenusCommandFilter.cs +++ b/src/VisualStudio/Core/Def/Implementation/Venus/VenusCommandFilter.cs @@ -53,12 +53,20 @@ public override int GetDataTipText(TextSpan[] pSpan, out string pbstrText) return VSConstants.E_INVALIDARG; } + var textViewModel = WpfTextView.TextViewModel; + if (textViewModel == null) + { + Debug.Assert(WpfTextView.IsClosed); + pbstrText = null; + return VSConstants.E_FAIL; + } + // We need to map the TextSpan from the DataBuffer to our subject buffer. We'll // only consider spans whose length matches our input span (which we expect to // always be zero). This is to address the case where the position is on a seam // and maps to multiple source spans. // If there is not exactly one matching span, just return. - var span = WpfTextView.TextViewModel.DataBuffer.CurrentSnapshot.GetSpan(pSpan[0]); + var span = textViewModel.DataBuffer.CurrentSnapshot.GetSpan(pSpan[0]); var spanLength = span.Length; Debug.Assert(spanLength == 0, $"Expected zero length span (got '{spanLength}'."); var subjectSpan = WpfTextView.BufferGraph.MapDownToBuffer(span, SpanTrackingMode.EdgeInclusive, _subjectBuffer) @@ -83,7 +91,7 @@ public override int GetDataTipText(TextSpan[] pSpan, out string pbstrText) // take the span that intersects with the input span, since that's probably // the one we care about. // If there are no such spans, just return. - var surfaceSpan = WpfTextView.BufferGraph.MapUpToBuffer(subjectSpan, SpanTrackingMode.EdgeInclusive, WpfTextView.TextViewModel.DataBuffer) + var surfaceSpan = WpfTextView.BufferGraph.MapUpToBuffer(subjectSpan, SpanTrackingMode.EdgeInclusive, textViewModel.DataBuffer) .SingleOrDefault(x => x.IntersectsWith(span)); if (surfaceSpan == default(SnapshotSpan)) From c05e53363ceb3cd16b2050772da104e14ed96564 Mon Sep 17 00:00:00 2001 From: Kevin Halverson Date: Thu, 24 Sep 2015 13:14:17 -0700 Subject: [PATCH 63/83] Fix up other caller of IWpfTextView.TextViewModel... --- .../AbstractSnippetExpansionClient.cs | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/VisualStudio/Core/Def/Implementation/Snippets/AbstractSnippetExpansionClient.cs b/src/VisualStudio/Core/Def/Implementation/Snippets/AbstractSnippetExpansionClient.cs index 580b2a1cacb4d..7a3ac55e7d7c0 100644 --- a/src/VisualStudio/Core/Def/Implementation/Snippets/AbstractSnippetExpansionClient.cs +++ b/src/VisualStudio/Core/Def/Implementation/Snippets/AbstractSnippetExpansionClient.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.InteropServices; @@ -365,6 +366,13 @@ public virtual bool TryHandleReturn() public virtual bool TryInsertExpansion(int startPositionInSubjectBuffer, int endPositionInSubjectBuffer) { + var textViewModel = TextView.TextViewModel; + if (textViewModel == null) + { + Debug.Assert(TextView.IsClosed); + return false; + } + int startLine = 0; int startIndex = 0; int endLine = 0; @@ -377,13 +385,13 @@ public virtual bool TryInsertExpansion(int startPositionInSubjectBuffer, int end SnapshotSpan dataBufferSpan; if (!TryGetSpanOnHigherBuffer( SubjectBuffer.CurrentSnapshot.GetSpan(startPositionInSubjectBuffer, endPositionInSubjectBuffer - startPositionInSubjectBuffer), - TextView.TextViewModel.DataBuffer, + textViewModel.DataBuffer, out dataBufferSpan)) { return false; } - var buffer = EditorAdaptersFactoryService.GetBufferAdapter(TextView.TextViewModel.DataBuffer); + var buffer = EditorAdaptersFactoryService.GetBufferAdapter(textViewModel.DataBuffer); var expansion = buffer as IVsExpansion; if (buffer == null || expansion == null) { @@ -446,6 +454,13 @@ public int OnBeforeInsertion(IVsExpansionSession pSession) public int OnItemChosen(string pszTitle, string pszPath) { + var textViewModel = TextView.TextViewModel; + if (textViewModel == null) + { + Debug.Assert(TextView.IsClosed); + return VSConstants.E_FAIL; + } + var hr = VSConstants.S_OK; try @@ -456,7 +471,7 @@ public int OnItemChosen(string pszTitle, string pszPath) textSpan.iEndLine = textSpan.iStartLine; textSpan.iEndIndex = textSpan.iStartIndex; - IVsExpansion expansion = EditorAdaptersFactoryService.GetBufferAdapter(TextView.TextViewModel.DataBuffer) as IVsExpansion; + IVsExpansion expansion = EditorAdaptersFactoryService.GetBufferAdapter(textViewModel.DataBuffer) as IVsExpansion; earlyEndExpansionHappened = false; hr = expansion.InsertNamedExpansion(pszTitle, pszPath, textSpan, this, LanguageServiceGuid, fShowDisambiguationUI: 0, pSession: out ExpansionSession); From 8482355f1dc8166dca1c856f795198ec0c5bbd50 Mon Sep 17 00:00:00 2001 From: Tomas Matousek Date: Thu, 24 Sep 2015 13:58:13 -0700 Subject: [PATCH 64/83] Avoid unneccessary item copies in RemoveDuplicates --- src/Compilers/Core/SharedCollections/ArrayBuilder.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Compilers/Core/SharedCollections/ArrayBuilder.cs b/src/Compilers/Core/SharedCollections/ArrayBuilder.cs index 6f33f8ce113b6..919c2548cd5ae 100644 --- a/src/Compilers/Core/SharedCollections/ArrayBuilder.cs +++ b/src/Compilers/Core/SharedCollections/ArrayBuilder.cs @@ -425,10 +425,9 @@ public void RemoveDuplicates() int j = 0; for (int i = 0; i < Count; i++) { - this[j] = this[i]; - if (set.Add(this[i])) { + this[j] = this[i]; j++; } } From 3ca3f7ed119b13e84499bafd98f8b08717026e3d Mon Sep 17 00:00:00 2001 From: Charles Stoner Date: Thu, 24 Sep 2015 07:55:44 -0700 Subject: [PATCH 65/83] Function pointer tests --- .../CSharpResultProviderTest.csproj | 1 + .../ResultProvider/FunctionPointerTests.cs | 65 +++++++++++++++++++ .../ResultProvider/Formatter.TypeNames.cs | 8 ++- .../Debugger/MemberInfo/TypeImpl.cs | 4 +- 4 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs diff --git a/src/ExpressionEvaluator/CSharp/Test/ResultProvider/CSharpResultProviderTest.csproj b/src/ExpressionEvaluator/CSharp/Test/ResultProvider/CSharpResultProviderTest.csproj index b01b1d95e5b88..9df052226c1ff 100644 --- a/src/ExpressionEvaluator/CSharp/Test/ResultProvider/CSharpResultProviderTest.csproj +++ b/src/ExpressionEvaluator/CSharp/Test/ResultProvider/CSharpResultProviderTest.csproj @@ -91,6 +91,7 @@ + diff --git a/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs b/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs new file mode 100644 index 0000000000000..8afd5f939e6f1 --- /dev/null +++ b/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.CodeAnalysis.ExpressionEvaluator; +using Microsoft.VisualStudio.Debugger.Clr; +using Microsoft.VisualStudio.Debugger.Evaluation; +using System; +using System.Diagnostics; +using Xunit; +using Type = Microsoft.VisualStudio.Debugger.Metadata.Type; + +namespace Microsoft.CodeAnalysis.CSharp.UnitTests +{ + public class FunctionPointerTests : CSharpResultProviderTestBase + { + [Fact] + public void Root() + { + const int ptr = 0x1234; + var value = CreateDkmClrValue(ptr, type: new DkmClrType(FunctionPointerType.Instance)); + var evalResult = FormatResult("pfn", value); + Verify(evalResult, + EvalResult("pfn", PointerToString(new IntPtr(ptr)), "System.Object*", "pfn", DkmEvaluationResultFlags.None, DkmEvaluationResultCategory.Other)); + } + + [Fact] + public void Member() + { + var source = +@"class C +{ + object pfn; +}"; + const int ptr = 0x0; + GetMemberValueDelegate getMemberValue = (v, m) => (m == "pfn") ? CreateDkmClrValue(ptr, type: new DkmClrType(FunctionPointerType.Instance)) : null; + var runtime = new DkmClrRuntimeInstance(ReflectionUtilities.GetMscorlibAndSystemCore(GetAssembly(source)), getMemberValue: getMemberValue); + using (runtime.Load()) + { + var type = runtime.GetType("C"); + var value = CreateDkmClrValue(type.Instantiate(), type: type); + var evalResult = FormatResult("o", value); + Verify(evalResult, + EvalResult("o", "{C}", "C", "o", DkmEvaluationResultFlags.Expandable, DkmEvaluationResultCategory.Other)); + var children = GetChildren(evalResult); + Verify(children, + EvalResult("pfn", PointerToString(new IntPtr(ptr)), "object {System.Object*}", "o.pfn", DkmEvaluationResultFlags.None, DkmEvaluationResultCategory.Other)); + } + } + + // Function pointer type has IsPointer == true and GetElementType() == null. + private sealed class FunctionPointerType : TypeImpl + { + internal static readonly FunctionPointerType Instance = new FunctionPointerType(); + + private FunctionPointerType() : base(typeof(object).MakePointerType()) + { + Debug.Assert(this.IsPointer); + } + + public override Type GetElementType() + { + return null; + } + } + } +} diff --git a/src/ExpressionEvaluator/Core/Source/ResultProvider/Formatter.TypeNames.cs b/src/ExpressionEvaluator/Core/Source/ResultProvider/Formatter.TypeNames.cs index 8231bae212944..05b6b9e3475ea 100644 --- a/src/ExpressionEvaluator/Core/Source/ResultProvider/Formatter.TypeNames.cs +++ b/src/ExpressionEvaluator/Core/Source/ResultProvider/Formatter.TypeNames.cs @@ -61,9 +61,15 @@ protected void AppendQualifiedTypeName( int pointerCount = 0; while (type.IsPointer) { + var elementType = type.GetElementType(); + if (elementType == null) + { + // Null for function pointers. + break; + } index++; pointerCount++; - type = type.GetElementType(); + type = elementType; } int nullableCount = 0; diff --git a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/MemberInfo/TypeImpl.cs b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/MemberInfo/TypeImpl.cs index c8dd7e747f8db..7318ba0feb288 100644 --- a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/MemberInfo/TypeImpl.cs +++ b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/MemberInfo/TypeImpl.cs @@ -11,11 +11,11 @@ namespace Microsoft.CodeAnalysis.ExpressionEvaluator { - internal sealed class TypeImpl : Type + internal class TypeImpl : Type { internal readonly System.Type Type; - private TypeImpl(System.Type type) + internal TypeImpl(System.Type type) { Debug.Assert(type != null); this.Type = type; From f352354c32ede6f0d1af3f7908d5b1ad4ecca43f Mon Sep 17 00:00:00 2001 From: Gen Lu Date: Thu, 24 Sep 2015 15:00:26 -0700 Subject: [PATCH 66/83] Make InteractiveWindow use HACK_ThemeColorFixer Fix issue 4930 https://github.com/dotnet/roslyn/issues/4930 --- .../Interactive/VsInteractiveWindowPackage.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/VisualStudio/InteractiveServices/Interactive/VsInteractiveWindowPackage.cs b/src/VisualStudio/InteractiveServices/Interactive/VsInteractiveWindowPackage.cs index 6913e1466a538..c139d9ed805b4 100644 --- a/src/VisualStudio/InteractiveServices/Interactive/VsInteractiveWindowPackage.cs +++ b/src/VisualStudio/InteractiveServices/Interactive/VsInteractiveWindowPackage.cs @@ -52,6 +52,8 @@ protected override void Initialize() _componentModel = (IComponentModel)GetService(typeof(SComponentModel)); _interactiveWindowProvider = _componentModel.DefaultExportProvider.GetExportedValue(); + KnownUIContexts.ShellInitializedContext.WhenActivated(() => + _componentModel.GetService()); var menuCommandService = (OleMenuCommandService)GetService(typeof(IMenuCommandService)); InitializeMenuCommands(menuCommandService); From 875d13d0059ca9d171b0577a94996594d839d4c5 Mon Sep 17 00:00:00 2001 From: Charles Stoner Date: Thu, 24 Sep 2015 15:39:42 -0700 Subject: [PATCH 67/83] Allow default version --- .../HostTest/NuGetPackageResolverTests.cs | 16 ++++++++++-- .../Core/Resolvers/NuGetPackageResolver.cs | 25 +++++++++++++------ 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/Interactive/HostTest/NuGetPackageResolverTests.cs b/src/Interactive/HostTest/NuGetPackageResolverTests.cs index 2fc46df9c1578..4b43778129bca 100644 --- a/src/Interactive/HostTest/NuGetPackageResolverTests.cs +++ b/src/Interactive/HostTest/NuGetPackageResolverTests.cs @@ -155,8 +155,11 @@ public void ParsePackageNameAndVersion() ParseInvalidPackageReference("nuget:"); ParseInvalidPackageReference("NUGET:"); ParseInvalidPackageReference("nugetA/1"); - ParseInvalidPackageReference("nuget:A"); - ParseInvalidPackageReference("nuget:A.B"); + + ParseValidPackageReference("nuget:A", "A", ""); + ParseValidPackageReference("nuget:A.B", "A.B", ""); + ParseValidPackageReference("nuget: ", " ", ""); + ParseInvalidPackageReference("nuget:A/"); ParseInvalidPackageReference("nuget:A//1.0"); ParseInvalidPackageReference("nuget:/1.0.0"); @@ -199,6 +202,15 @@ public void WriteProjectJson() ""frameworks"": { ""net46"": {} } +}"); + WriteProjectJsonPackageReference("A", "", +@"{ + ""dependencies"": { + ""A"": """" + }, + ""frameworks"": { + ""net46"": {} + } }"); WriteProjectJsonPackageReference("\n\t", "\"'", @"{ diff --git a/src/Scripting/Core/Resolvers/NuGetPackageResolver.cs b/src/Scripting/Core/Resolvers/NuGetPackageResolver.cs index 1f33651255424..2258e29d8288c 100644 --- a/src/Scripting/Core/Resolvers/NuGetPackageResolver.cs +++ b/src/Scripting/Core/Resolvers/NuGetPackageResolver.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Immutable; +using System.Diagnostics; namespace Microsoft.CodeAnalysis.Scripting.Hosting { @@ -10,20 +11,30 @@ internal abstract class NuGetPackageResolver private const string ReferencePrefix = "nuget:"; /// - /// Syntax is "nuget:id/version". + /// Syntax is "nuget:name[/version]". /// internal static bool TryParsePackageReference(string reference, out string name, out string version) { if (reference.StartsWith(ReferencePrefix, StringComparison.Ordinal)) { var parts = reference.Substring(ReferencePrefix.Length).Split('/'); - if ((parts.Length == 2) && - (parts[0].Length > 0) && - (parts[1].Length > 0)) + Debug.Assert(parts.Length > 0); + name = parts[0]; + if (name.Length > 0) { - name = parts[0]; - version = parts[1]; - return true; + switch (parts.Length) + { + case 1: + version = string.Empty; + return true; + case 2: + version = parts[1]; + if (version.Length > 0) + { + return true; + } + break; + } } } name = null; From 508873bd9bf1e31a8cc671d68b1f8172a250f6ee Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Thu, 24 Sep 2015 15:43:47 -0700 Subject: [PATCH 68/83] Remove unnecessary references that we causing warnings on Mono --- CrossPlatform.sln | 9 +++++---- .../CSharp/Test/CommandLine/CSharpCommandLineTest.csproj | 2 -- .../CSharp/Test/Symbol/CSharpCompilerSymbolTest.csproj | 3 +-- .../VisualBasicErrorFactsGenerator.vbproj | 3 +-- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/CrossPlatform.sln b/CrossPlatform.sln index 4ab5ea4abc576..b51afe8ec492e 100644 --- a/CrossPlatform.sln +++ b/CrossPlatform.sln @@ -95,21 +95,21 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugging", "Debugging", "{ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.DiaSymReader.PortablePdb", "src\Debugging\Microsoft.DiaSymReader.PortablePdb\Microsoft.DiaSymReader.PortablePdb.csproj", "{F83343BA-B4EA-451C-B6DB-5D645E6171BC}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "TestUtilities.Shared", "src\Test\Utilities\Portable\TestUtilities.Shared.shproj", "{6FF42825-5464-4151-AC55-ED828168C192}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CscCore", "src\Compilers\CSharp\CscCore\CscCore.csproj", "{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VbcCore", "src\Compilers\VisualBasic\VbcCore\VbcCore.csproj", "{8CE3A581-2969-4864-A803-013E9D977C3A}" EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "TestUtilities.Shared", "src\Test\Utilities\Shared\TestUtilities.Shared.shproj", "{6FF42825-5464-4151-AC55-ED828168C192}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution - src\Test\Utilities\Portable\TestUtilities.projitems*{6ff42825-5464-4151-ac55-ed828168c192}*SharedItemsImports = 13 + src\Test\Utilities\Shared\TestUtilities.projitems*{6ff42825-5464-4151-ac55-ed828168c192}*SharedItemsImports = 13 src\Compilers\Core\SharedCollections\SharedCollections.projitems*{5f8d2414-064a-4b3a-9b42-8e2a04246be5}*SharedItemsImports = 4 src\Test\Utilities\Shared\TestUtilities.projitems*{f7712928-1175-47b3-8819-ee086753dee2}*SharedItemsImports = 4 src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{d0bc9be7-24f6-40ca-8dc6-fcb93bd44b34}*SharedItemsImports = 13 src\Compilers\Core\SharedCollections\SharedCollections.projitems*{afde6bea-5038-4a4a-a88e-dbd2e4088eed}*SharedItemsImports = 4 - src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4 src\Compilers\Core\SharedCollections\SharedCollections.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4 + src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4 src\Compilers\CSharp\CSharpAnalyzerDriver\CSharpAnalyzerDriver.projitems*{b501a547-c911-4a05-ac6e-274a50dff30e}*SharedItemsImports = 4 src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{2523d0e6-df32-4a3e-8ae0-a19bffae2ef6}*SharedItemsImports = 4 src\Compilers\Core\SharedCollections\SharedCollections.projitems*{c1930979-c824-496b-a630-70f5369a636f}*SharedItemsImports = 13 @@ -879,5 +879,6 @@ Global {F83343BA-B4EA-451C-B6DB-5D645E6171BC} = {5EFE4D73-9608-4E19-83A5-963B02413164} {E3CD2895-76A8-4D11-A316-EA67CB5EA42C} = {32A48625-F0AD-419D-828B-A50BDABA38EA} {8CE3A581-2969-4864-A803-013E9D977C3A} = {C65C6143-BED3-46E6-869E-9F0BE6E84C37} + {6FF42825-5464-4151-AC55-ED828168C192} = {A41D1B99-F489-4C43-BBDF-96D61B19A6B9} EndGlobalSection EndGlobal diff --git a/src/Compilers/CSharp/Test/CommandLine/CSharpCommandLineTest.csproj b/src/Compilers/CSharp/Test/CommandLine/CSharpCommandLineTest.csproj index ff1af4b056392..0a14c49908045 100644 --- a/src/Compilers/CSharp/Test/CommandLine/CSharpCommandLineTest.csproj +++ b/src/Compilers/CSharp/Test/CommandLine/CSharpCommandLineTest.csproj @@ -60,7 +60,6 @@ full AnyCPU prompt - MinimumRecommendedRules.ruleset bin\Release\ @@ -69,7 +68,6 @@ pdbonly AnyCPU prompt - MinimumRecommendedRules.ruleset diff --git a/src/Compilers/CSharp/Test/Symbol/CSharpCompilerSymbolTest.csproj b/src/Compilers/CSharp/Test/Symbol/CSharpCompilerSymbolTest.csproj index 87b945c7f179e..5429b31c4f02b 100644 --- a/src/Compilers/CSharp/Test/Symbol/CSharpCompilerSymbolTest.csproj +++ b/src/Compilers/CSharp/Test/Symbol/CSharpCompilerSymbolTest.csproj @@ -184,7 +184,6 @@ - @@ -199,4 +198,4 @@ - + \ No newline at end of file diff --git a/src/Tools/Source/CompilerGeneratorTools/Source/VisualBasicErrorFactsGenerator/VisualBasicErrorFactsGenerator.vbproj b/src/Tools/Source/CompilerGeneratorTools/Source/VisualBasicErrorFactsGenerator/VisualBasicErrorFactsGenerator.vbproj index 6893ce515152c..694832713c4f3 100644 --- a/src/Tools/Source/CompilerGeneratorTools/Source/VisualBasicErrorFactsGenerator/VisualBasicErrorFactsGenerator.vbproj +++ b/src/Tools/Source/CompilerGeneratorTools/Source/VisualBasicErrorFactsGenerator/VisualBasicErrorFactsGenerator.vbproj @@ -33,7 +33,6 @@ - @@ -48,4 +47,4 @@ - + \ No newline at end of file From d018bf20d96b9f34ac2b51beab7ea6dbfb9e80c5 Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Thu, 24 Sep 2015 15:49:46 -0700 Subject: [PATCH 69/83] Disable analyzers in the Linux CI build --- cibuild.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cibuild.sh b/cibuild.sh index 8a0e9cfb0975a..e1f7679dc35de 100755 --- a/cibuild.sh +++ b/cibuild.sh @@ -112,7 +112,7 @@ run_msbuild() for i in `seq 1 $RETRY_COUNT` do - mono $MONO_ARGS ~/.nuget/packages/Microsoft.Build.Mono.Debug/14.1.0-prerelease/lib/MSBuild.exe /v:m /p:SignAssembly=false /p:DebugSymbols=false "$@" + mono $MONO_ARGS ~/.nuget/packages/Microsoft.Build.Mono.Debug/14.1.0-prerelease/lib/MSBuild.exe /v:m /p:SignAssembly=false /p:UseRoslynAnalyzers=false /p:DebugSymbols=false "$@" if [ $? -eq 0 ]; then is_good=true break From a950b47f24dcaaa4802da16c8e584c2c74ab6d39 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Fri, 25 Sep 2015 07:51:02 +0800 Subject: [PATCH 70/83] Fix VB test case and use Simplifier.Annotation --- .../Diagnostics/Async/AddAwaitTests.vb | 4 ++-- .../VisualBasicAddAwaitCodeFixProvider.vb | 23 +++---------------- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb index b6db824b89be8..7a32e56e9f5ae 100644 --- a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb @@ -308,8 +308,8 @@ NewLines("Imports System.Threading.Tasks \n Module M \n Async Function A() As Ta Public Sub TestCastExpression() Test( -NewLines("Imports System.Threading.Tasks \n Module M \n Async Function A() As Task(Of Integer) \n Return [|TryCast(Nothing, Task(Of Integer)|] \n End Function \n End Module"), -NewLines("Imports System.Threading.Tasks \n Module M \n Async Function A() As Task(Of Integer) \n Return Await TryCast(Nothing, Task(Of Integer) \n End Function \n End Module")) +NewLines("Imports System.Threading.Tasks \n Module M \n Async Function A() As Task(Of Integer) \n Return [|TryCast(Nothing, Task(Of Integer))|] \n End Function \n End Module"), +NewLines("Imports System.Threading.Tasks \n Module M \n Async Function A() As Task(Of Integer) \n Return Await TryCast(Nothing, Task(Of Integer)) \n End Function \n End Module")) End Sub Friend Overrides Function CreateDiagnosticProviderAndFixer(workspace As Workspace) As Tuple(Of DiagnosticAnalyzer, CodeFixProvider) diff --git a/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb b/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb index e89961da24f47..8eb6abd10c850 100644 --- a/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb +++ b/src/Features/VisualBasic/Portable/CodeFixes/Async/VisualBasicAddAwaitCodeFixProvider.vb @@ -115,27 +115,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeFixes.Async End Function Private Shared Function ConverToAwaitExpression(expression As ExpressionSyntax, semanticModel As SemanticModel, cancellationToken As CancellationToken) As ExpressionSyntax - Dim root = expression.Ancestors().Last() - If Not RequiresParenthesis(expression, root, semanticModel, cancellationToken) Then - expression = expression.Parenthesize() - End If - Return SyntaxFactory.AwaitExpression(expression.WithoutTrivia()) _ - .WithTriviaFrom(expression) _ - .WithAdditionalAnnotations(Formatter.Annotation, Simplifier.Annotation) + Return SyntaxFactory.AwaitExpression(expression.WithoutTrivia().Parenthesize()) _ + .WithTriviaFrom(expression) _ + .WithAdditionalAnnotations(Simplifier.Annotation, Formatter.Annotation) End Function - Private Shared Function RequiresParenthesis(expression As ExpressionSyntax, root As SyntaxNode, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Boolean - Dim parenthesizedExpression = SyntaxFactory.ParenthesizedExpression(expression) - Dim newRoot = root.ReplaceNode(expression, parenthesizedExpression) - Dim newNode = newRoot.FindNode(expression.Span) - Dim result = newNode _ - .DescendantNodesAndSelf(Function(n) n.Kind <> SyntaxKind.ParenthesizedExpression) _ - .OfType(Of ParenthesizedExpressionSyntax).FirstOrDefault - If result IsNot Nothing Then - Return Not result.CanRemoveParentheses(semanticModel, cancellationToken) - End If - - Return False - End Function End Class End Namespace From b198a33ab1738aa738545e704c662da405c43d0b Mon Sep 17 00:00:00 2001 From: Jared Parsons Date: Thu, 24 Sep 2015 16:51:58 -0700 Subject: [PATCH 71/83] New version of analyzers Update to a new version of the Roslyn Diagnostics analyzer package. --- build/Targets/VSL.Settings.targets | 2 +- build/ToolsetPackages/project.json | 2 +- build/ToolsetPackages/project.lock.json | 12 ++++++------ cibuild.sh | 2 +- docs/infrastructure/mono-toolset.md | 8 +++++--- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/build/Targets/VSL.Settings.targets b/build/Targets/VSL.Settings.targets index e6a1a4aa9020f..41143b3d23577 100644 --- a/build/Targets/VSL.Settings.targets +++ b/build/Targets/VSL.Settings.targets @@ -15,7 +15,7 @@ Microsoft.Net.Compilers $(NuGetPackageRoot)\Microsoft.Net.Compilers\1.1.0-beta1-20150727-01\build\Microsoft.Net.Compilers.props - $(NuGetPackageRoot)\Microsoft.Net.RoslynDiagnostics\1.1.1-beta1-20150814-01\build\Microsoft.Net.RoslynDiagnostics.props + $(NuGetPackageRoot)\Microsoft.Net.RoslynDiagnostics\1.1.1-beta1-20150818-01\build\Microsoft.Net.RoslynDiagnostics.props $(AdditionalFileItemNames);PublicAPI diff --git a/build/ToolsetPackages/project.json b/build/ToolsetPackages/project.json index 604fc211f9b43..150620299a500 100644 --- a/build/ToolsetPackages/project.json +++ b/build/ToolsetPackages/project.json @@ -4,7 +4,7 @@ "Microsoft.CodeAnalysis.Test.Resources.Proprietary": "1.1.0-beta1-20150817-01", "Microsoft.DiaSymReader.Native": "1.1.0-alpha2", "Microsoft.Net.Compilers": "1.1.0-beta1-20150727-01", - "Microsoft.Net.RoslynDiagnostics": "1.1.1-beta1-20150814-01", + "Microsoft.Net.RoslynDiagnostics": "1.1.1-beta1-20150818-01", "FakeSign": "0.9.2", "xunit": "1.9.2", "xunit.runner.console": "2.1.0-beta4-build3109", diff --git a/build/ToolsetPackages/project.lock.json b/build/ToolsetPackages/project.lock.json index 0d1513b9f2fe7..a57bd6f82982f 100644 --- a/build/ToolsetPackages/project.lock.json +++ b/build/ToolsetPackages/project.lock.json @@ -31,7 +31,7 @@ }, "Microsoft.DiaSymReader.Native/1.1.0-alpha2": {}, "Microsoft.Net.Compilers/1.1.0-beta1-20150727-01": {}, - "Microsoft.Net.RoslynDiagnostics/1.1.1-beta1-20150814-01": {}, + "Microsoft.Net.RoslynDiagnostics/1.1.1-beta1-20150818-01": {}, "Microsoft.Tpl.Dataflow/4.5.24": { "compile": { "lib/portable-net45+win8+wpa81/System.Threading.Tasks.Dataflow.dll": {} @@ -85,7 +85,7 @@ } }, "Microsoft.Net.Compilers/1.1.0-beta1-20150727-01": {}, - "Microsoft.Net.RoslynDiagnostics/1.1.1-beta1-20150814-01": {}, + "Microsoft.Net.RoslynDiagnostics/1.1.1-beta1-20150818-01": {}, "Microsoft.Tpl.Dataflow/4.5.24": { "compile": { "lib/portable-net45+win8+wpa81/System.Threading.Tasks.Dataflow.dll": {} @@ -1036,15 +1036,15 @@ "tools/VBCSCompiler.exe.config" ] }, - "Microsoft.Net.RoslynDiagnostics/1.1.1-beta1-20150814-01": { - "sha512": "ZsPiNo4TIlamP3VDJ7f+PzfLM2MwlQPW29Lm4gNn7j3EZvS2wu5RapJe6Edpz2OuFyZSq0U9NvNHmgM9I7W9Og==", + "Microsoft.Net.RoslynDiagnostics/1.1.1-beta1-20150818-01": { + "sha512": "gKMS7pSOjXejP+S3+pAIShKYOyfneRRZGowDiEGZDHPUZqaof7ccmFkXxWMyTy2hV00exSBqNeRZDL4IpJxuCQ==", "type": "Package", "files": [ "[Content_Types].xml", "_rels/.rels", "build/Microsoft.Net.RoslynDiagnostics.props", "Microsoft.Net.RoslynDiagnostics.nuspec", - "package/services/metadata/core-properties/e01abf88844b465fabea2ac7ad8c8ffb.psmdcp", + "package/services/metadata/core-properties/433dcdf8a06f4dcb806e4f7f93ed8bf2.psmdcp", "ThirdPartyNotices.rtf", "tools/Roslyn.Diagnostics.Analyzers.CSharp.dll", "tools/Roslyn.Diagnostics.Analyzers.dll", @@ -1130,7 +1130,7 @@ "Microsoft.CodeAnalysis.Test.Resources.Proprietary >= 1.1.0-beta1-20150817-01", "Microsoft.DiaSymReader.Native >= 1.1.0-alpha2", "Microsoft.Net.Compilers >= 1.1.0-beta1-20150727-01", - "Microsoft.Net.RoslynDiagnostics >= 1.1.1-beta1-20150814-01", + "Microsoft.Net.RoslynDiagnostics >= 1.1.1-beta1-20150818-01", "xunit >= 1.9.2", "xunit.runner.console >= 2.1.0-beta4-build3109", "xunit.runners >= 2.0.0-alpha-build2576" diff --git a/cibuild.sh b/cibuild.sh index e1f7679dc35de..ecb20178dc1fa 100755 --- a/cibuild.sh +++ b/cibuild.sh @@ -79,7 +79,7 @@ restore_nuget() { acquire_sem_or_wait "restore_nuget" - local package_name="nuget.14.zip" + local package_name="nuget.15.zip" local target="/tmp/$package_name" echo "Installing NuGet Packages $target" if [ -f $target ]; then diff --git a/docs/infrastructure/mono-toolset.md b/docs/infrastructure/mono-toolset.md index d33255b77b0cf..676929923ce20 100644 --- a/docs/infrastructure/mono-toolset.md +++ b/docs/infrastructure/mono-toolset.md @@ -34,9 +34,11 @@ The cross platform restore works by downloading the contents of the packages dir This is done by executing the following on a Windows box. - Change to the root of the enlistment. - - Delete the contents of the package directory. - - Run .nuget/NuGetRestore.ps1 - - Zip the packages directory (via explorer) and name it nuget.X.zip (where X is one higher than the previous number) + - delete the contents of the `~\.nuget\packages` + - Run + - `.\nuget.exe restore Roslyn.sln` + - `.\nuget.exe restore build\ToolsetPackages\project.json` + - Zip the `~\.nuget` directory (via explorer) and name it nuget.X.zip (where X is one higher than the previous number) - Use [azcopy](https://azure.microsoft.com/en-us/documentation/articles/storage-use-azcopy) to upload to https://dotnetci.blob.core.windows.net/roslyn - Change cibuild.sh to reference the new package. From 8eeb8b281b2f653696e8021635eaccd8e1322caf Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Fri, 25 Sep 2015 08:38:51 +0800 Subject: [PATCH 72/83] Fix VB tests cases so they actually checks trivia when intended. --- .../VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb index 7a32e56e9f5ae..5d35599f95fe6 100644 --- a/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Diagnostics/Async/AddAwaitTests.vb @@ -166,7 +166,7 @@ Module Program End Module - Test(initial, expected, compareTokens:=True) + Test(initial, expected, compareTokens:=False) End Sub @@ -240,7 +240,7 @@ Module Program End Module - Test(initial, expected, compareTokens:=True) + Test(initial, expected, compareTokens:=False) End Sub From f5b65f9034eb95bbcf8617f02a03f2395df678e4 Mon Sep 17 00:00:00 2001 From: Manish Vasani Date: Fri, 25 Sep 2015 02:41:33 -0700 Subject: [PATCH 73/83] Remove the error list command handler registration for add and remove suppressions commands in ServicesVisualStudio - these commands have been moved down to the core CodeAnalysis layer. --- .../VisualStudioDiagnosticListTableCommandHandler.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListTableCommandHandler.cs b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListTableCommandHandler.cs index 9cc4343707987..fc62bad9f655d 100644 --- a/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListTableCommandHandler.cs +++ b/src/VisualStudio/Core/Def/Implementation/TableDataSource/Suppression/VisualStudioDiagnosticListTableCommandHandler.cs @@ -29,7 +29,12 @@ public void Initialize(IServiceProvider serviceProvider) var menuCommandService = (IMenuCommandService)serviceProvider.GetService(typeof(IMenuCommandService)); if (menuCommandService != null) { - AddSuppressionsCommandHandlers(menuCommandService); + // The Add/Remove suppression(s) have been moved to the VS code analysis layer, so we don't add the commands here. + + // TODO: Figure out how to access menu commands registered by CodeAnalysisPackage and + // add the commands here if we cannot find the new command(s) in the code analysis layer. + + // AddSuppressionsCommandHandlers(menuCommandService); } } From b953da16bee0289655fc2c652467272910386d7d Mon Sep 17 00:00:00 2001 From: Paul Harrington Date: Fri, 25 Sep 2015 09:48:53 -0700 Subject: [PATCH 74/83] Reduce VBCSCompiler polling frequency to 1Hz Fixes #3142 --- src/Compilers/Core/VBCSCompiler/NamedPipeClientConnection.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Compilers/Core/VBCSCompiler/NamedPipeClientConnection.cs b/src/Compilers/Core/VBCSCompiler/NamedPipeClientConnection.cs index 52ab32cad5142..291d65a48e479 100644 --- a/src/Compilers/Core/VBCSCompiler/NamedPipeClientConnection.cs +++ b/src/Compilers/Core/VBCSCompiler/NamedPipeClientConnection.cs @@ -44,8 +44,8 @@ private async Task CreateMonitorDisconnectTaskCore(CancellationToken cance while (!cancellationToken.IsCancellationRequested && _pipeStream.IsConnected) { - // Wait a tenth of a second before trying again - await Task.Delay(100, cancellationToken).ConfigureAwait(false); + // Wait a second before trying again + await Task.Delay(1000, cancellationToken).ConfigureAwait(false); try { From 154ab390558e4412170752eeed4b09dae8e21472 Mon Sep 17 00:00:00 2001 From: Jared Parsons Date: Fri, 25 Sep 2015 10:27:12 -0700 Subject: [PATCH 75/83] Disable tests that are blocking all PRs --- .../CSharp/Test/ResultProvider/FunctionPointerTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs b/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs index 8afd5f939e6f1..c9df0accc3060 100644 --- a/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs +++ b/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs @@ -12,7 +12,7 @@ namespace Microsoft.CodeAnalysis.CSharp.UnitTests { public class FunctionPointerTests : CSharpResultProviderTestBase { - [Fact] + [Fact(Skip = "Tests are failing in Jenkins queues")] public void Root() { const int ptr = 0x1234; @@ -22,7 +22,7 @@ public void Root() EvalResult("pfn", PointerToString(new IntPtr(ptr)), "System.Object*", "pfn", DkmEvaluationResultFlags.None, DkmEvaluationResultCategory.Other)); } - [Fact] + [Fact(Skip = "Tests are failing in Jenkins queues")] public void Member() { var source = From 3ac90b637c63245c23910ba7e7fea52a95c4e5f7 Mon Sep 17 00:00:00 2001 From: Jared Parsons Date: Fri, 25 Sep 2015 09:37:47 -0700 Subject: [PATCH 76/83] Self assignment in expression trees should error All assignments in an expression tree should be an error. Self assignment was being flagged as only a warning which lead to later errors in code generation. Changed the behavior to warn and error for self assignment (matches native compiler behavior). close #3826 --- .../DiagnosticsPass_ExpressionTrees.cs | 3 ++- .../Test/Semantic/Semantics/LambdaTests.cs | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/Compilers/CSharp/Portable/Lowering/DiagnosticsPass_ExpressionTrees.cs b/src/Compilers/CSharp/Portable/Lowering/DiagnosticsPass_ExpressionTrees.cs index 587da1caf8c88..0f17d60b6b7ad 100644 --- a/src/Compilers/CSharp/Portable/Lowering/DiagnosticsPass_ExpressionTrees.cs +++ b/src/Compilers/CSharp/Portable/Lowering/DiagnosticsPass_ExpressionTrees.cs @@ -123,7 +123,8 @@ private static Symbol GetLocalOrParameterSymbol(BoundExpression expr) public override BoundNode VisitAssignmentOperator(BoundAssignmentOperator node) { - if (!CheckForAssignmentToSelf(node) && _inExpressionLambda && node.Left.Kind != BoundKind.ObjectInitializerMember && node.Left.Kind != BoundKind.DynamicObjectInitializerMember) + CheckForAssignmentToSelf(node); + if (_inExpressionLambda && node.Left.Kind != BoundKind.ObjectInitializerMember && node.Left.Kind != BoundKind.DynamicObjectInitializerMember) { Error(ErrorCode.ERR_ExpressionTreeContainsAssignment, node); } diff --git a/src/Compilers/CSharp/Test/Semantic/Semantics/LambdaTests.cs b/src/Compilers/CSharp/Test/Semantic/Semantics/LambdaTests.cs index e68d5e4bbdc12..b05477e963427 100644 --- a/src/Compilers/CSharp/Test/Semantic/Semantics/LambdaTests.cs +++ b/src/Compilers/CSharp/Test/Semantic/Semantics/LambdaTests.cs @@ -1295,5 +1295,30 @@ static void stuff() Assert.Equal("Program a", symbolInfo.Symbol.ToTestDisplayString()); } + + [Fact] + [WorkItem(3826, "https://github.com/dotnet/roslyn/issues/3826")] + public void ExpressionTreeSelfAssignmentShouldError() + { + var source = @" +using System; +using System.Linq.Expressions; + +class Program +{ + static void Main() + { + Expression> x = y => y = y; + } +}"; + var compilation = CreateCompilationWithMscorlibAndSystemCore(source); + compilation.VerifyDiagnostics( + // (9,45): warning CS1717: Assignment made to same variable; did you mean to assign something else? + // Expression> x = y => y = y; + Diagnostic(ErrorCode.WRN_AssignmentToSelf, "y = y").WithLocation(9, 45), + // (9,45): error CS0832: An expression tree may not contain an assignment operator + // Expression> x = y => y = y; + Diagnostic(ErrorCode.ERR_ExpressionTreeContainsAssignment, "y = y").WithLocation(9, 45)); + } } } From 610022af33487e4bfae558804db2d6c4438d267a Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Tue, 22 Sep 2015 14:49:32 -0700 Subject: [PATCH 77/83] Add regression tests for interactive using bugs https://github.com/dotnet/roslyn/issues/4811 https://github.com/dotnet/roslyn/issues/5423 https://github.com/dotnet/roslyn/issues/5450 --- .../Binder/InteractiveUsingsBinder.cs | 2 +- .../CSharpCompilerSemanticTest.csproj | 3 +- .../Semantics/InteractiveUsingTests.cs | 447 ++++++++++++++++++ .../Symbol/Compilation/LoadDirectiveTests.cs | 53 +-- .../Desktop/TestSourceReferenceResolver.cs | 48 ++ .../Desktop/TestUtilities.Desktop.csproj | 1 + 6 files changed, 501 insertions(+), 53 deletions(-) create mode 100644 src/Compilers/CSharp/Test/Semantic/Semantics/InteractiveUsingTests.cs create mode 100644 src/Test/Utilities/Desktop/TestSourceReferenceResolver.cs diff --git a/src/Compilers/CSharp/Portable/Binder/InteractiveUsingsBinder.cs b/src/Compilers/CSharp/Portable/Binder/InteractiveUsingsBinder.cs index 568f037116556..341db17ea0e62 100644 --- a/src/Compilers/CSharp/Portable/Binder/InteractiveUsingsBinder.cs +++ b/src/Compilers/CSharp/Portable/Binder/InteractiveUsingsBinder.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Collections.Generic; diff --git a/src/Compilers/CSharp/Test/Semantic/CSharpCompilerSemanticTest.csproj b/src/Compilers/CSharp/Test/Semantic/CSharpCompilerSemanticTest.csproj index 1c6080228a0a8..739f9df02e6ad 100644 --- a/src/Compilers/CSharp/Test/Semantic/CSharpCompilerSemanticTest.csproj +++ b/src/Compilers/CSharp/Test/Semantic/CSharpCompilerSemanticTest.csproj @@ -112,6 +112,7 @@ + @@ -143,4 +144,4 @@ - + \ No newline at end of file diff --git a/src/Compilers/CSharp/Test/Semantic/Semantics/InteractiveUsingTests.cs b/src/Compilers/CSharp/Test/Semantic/Semantics/InteractiveUsingTests.cs new file mode 100644 index 0000000000000..1bc00b93d145c --- /dev/null +++ b/src/Compilers/CSharp/Test/Semantic/Semantics/InteractiveUsingTests.cs @@ -0,0 +1,447 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using System.Linq; +using Microsoft.CodeAnalysis.CSharp.Symbols; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.CSharp.Test.Utilities; +using Roslyn.Test.Utilities; +using Xunit; +using Microsoft.CodeAnalysis.Test.Utilities; + +namespace Microsoft.CodeAnalysis.CSharp.UnitTests +{ + public class InteractiveUsingTests : CSharpTestBase + { + [Fact] + public void Using() + { + var sub = CreateSubmission("using System;typeof(String)"); + sub.VerifyDiagnostics(); + + Assert.Equal(SpecialType.System_String, GetSpeculativeType(sub, "String").SpecialType); + } + + [Fact] + public void Alias() + { + var sub = CreateSubmission("using I = System.Int32;"); + sub.VerifyDiagnostics(); + + Assert.Equal(SpecialType.System_Int32, GetSpeculativeType(sub, "I").SpecialType); + } + + [Fact] + public void UsingStatic() + { + var sub = CreateSubmission("using static System.Environment;"); + sub.VerifyDiagnostics(); + + Assert.Equal(SymbolKind.Property, GetSpeculativeSymbol(sub, "NewLine").Kind); + } + + [WorkItem(5450, "https://github.com/dotnet/roslyn/issues/5450")] + [Fact(Skip = "https://github.com/dotnet/roslyn/issues/5450")] + public void GlobalUsings() + { + var sub1 = CreateSubmission( + "Combine(Environment.NewLine, Environment.NewLine)", + options: TestOptions.DebugDll.WithUsings("System", "System.IO.Path")); + sub1.VerifyDiagnostics(); + + // No global usings specified - expect to reuse previous. + var sub2 = CreateSubmission( + "Combine(Environment.NewLine, Environment.NewLine)", + previous: sub1); + sub2.VerifyDiagnostics(); + + // Global usings specified - expect to append to previous. + var sub3 = CreateSubmission( + "new StringBuilder().Append(Combine(Environment.NewLine, Environment.NewLine))", + previous: sub2, + options: TestOptions.DebugDll.WithUsings("System.Text")); + sub3.VerifyDiagnostics(); + } + + [WorkItem(4811, "https://github.com/dotnet/roslyn/issues/4811")] + [Fact(Skip = "https://github.com/dotnet/roslyn/issues/4811")] + public void AliasCurrentSubmission() + { + const string source = @" +using T = Type; + +class Type { } +"; + + var sub = CreateSubmission(source); + sub.VerifyDiagnostics(); + + var typeSymbol = sub.ScriptClass.GetMember("Type"); + + var tree = sub.SyntaxTrees.Single(); + var model = sub.GetSemanticModel(tree); + var syntax = tree.GetRoot().DescendantNodes().OfType().Single(); + + var aliasSymbol = model.GetDeclaredSymbol(syntax); + Assert.Equal(SymbolKind.Alias, aliasSymbol.Kind); + Assert.Equal(typeSymbol, ((AliasSymbol)aliasSymbol).Target); + + Assert.Equal(typeSymbol, model.GetSymbolInfo(syntax.Name).Symbol); + + Assert.Equal(typeSymbol, GetSpeculativeType(sub, "Type")); + } + + [WorkItem(4811, "https://github.com/dotnet/roslyn/issues/4811")] + [Fact(Skip = "https://github.com/dotnet/roslyn/issues/4811")] + public void AliasPreviousSubmission() + { + var sub1 = CreateSubmission("class A { }"); + var sub2 = CreateSubmission("class B : A { }", previous: sub1); + var sub3 = CreateSubmission("class C : B { }", previous: sub2); + + CreateSubmission("using A1 = A;", previous: sub3).VerifyDiagnostics(); + CreateSubmission("using B1 = B;", previous: sub3).VerifyDiagnostics(); + + var sub4 = CreateSubmission("using C1 = C;", previous: sub3); + sub4.VerifyDiagnostics(); + + var typeSymbol = sub3.ScriptClass.GetMember("C"); + + var tree = sub4.SyntaxTrees.Single(); + var model = sub4.GetSemanticModel(tree); + var syntax = tree.GetRoot().DescendantNodes().OfType().Single(); + + var aliasSymbol = model.GetDeclaredSymbol(syntax); + Assert.Equal(SymbolKind.Alias, aliasSymbol.Kind); + Assert.Equal(typeSymbol, ((AliasSymbol)aliasSymbol).Target); + + Assert.Equal(typeSymbol, model.GetSymbolInfo(syntax.Name).Symbol); + + Assert.Equal(typeSymbol, GetSpeculativeType(sub4, "C1")); + } + + [Fact] + public void AliasUnqualified() + { + const string source = @" +using I = Int32; +using System; +"; + var expectedDiagnostics = new[] + { + // (2,11): error CS0246: The type or namespace name 'Int32' could not be found (are you missing a using directive or an assembly reference?) + // using I = Int32; + Diagnostic(ErrorCode.ERR_SingleTypeNameNotFound, "Int32").WithArguments("Int32").WithLocation(2, 11) + }; + + CreateCompilationWithMscorlib(source).GetDiagnostics().Where(d => d.Severity > DiagnosticSeverity.Hidden).Verify(expectedDiagnostics); + CreateSubmission(source).GetDiagnostics().Verify(expectedDiagnostics); + } + + [Fact] + public void AliasUnqualified_GlobalUsing() + { + const string source = @" +using I = Int32; +"; + var expectedDiagnostics = new[] + { + // (2,11): error CS0246: The type or namespace name 'Int32' could not be found (are you missing a using directive or an assembly reference?) + // using I = Int32; + Diagnostic(ErrorCode.ERR_SingleTypeNameNotFound, "Int32").WithArguments("Int32").WithLocation(2, 11) + }; + + var options = TestOptions.DebugDll.WithUsings("System"); + + CreateCompilationWithMscorlib(source, options: options).GetDiagnostics().Where(d => d.Severity > DiagnosticSeverity.Hidden).Verify(expectedDiagnostics); + CreateSubmission(source, options: options).GetDiagnostics().Verify(expectedDiagnostics); + } + + [Fact] + public void AliasOtherAlias() + { + const string source = @" +using I = System.Int32; +using J = I; +"; + var expectedDiagnostics = new[] + { + // (3,11): error CS0246: The type or namespace name 'I' could not be found (are you missing a using directive or an assembly reference?) + // using J = I; + Diagnostic(ErrorCode.ERR_SingleTypeNameNotFound, "I").WithArguments("I").WithLocation(3, 11) + }; + + CreateCompilationWithMscorlib(source).GetDiagnostics().Where(d => d.Severity > DiagnosticSeverity.Hidden).Verify(expectedDiagnostics); + CreateSubmission(source).GetDiagnostics().Verify(expectedDiagnostics); + } + + [Fact] + public void AliasHiding() + { + var sub1 = CreateSubmission("using A = System.Int32;"); + Assert.Equal(SpecialType.System_Int32, GetSpeculativeType(sub1, "A").SpecialType); + + var sub2 = CreateSubmission("using A = System.Int16;", previous: sub1); + Assert.Equal(SpecialType.System_Int16, GetSpeculativeType(sub2, "A").SpecialType); + + var sub3 = CreateSubmission("class A { }", previous: sub2); + Assert.Equal(sub3.ScriptClass, GetSpeculativeType(sub3, "A").ContainingType); + + var sub4 = CreateSubmission("using A = System.Int64;", previous: sub3); + Assert.Equal(SpecialType.System_Int64, GetSpeculativeType(sub4, "A").SpecialType); + } + + [WorkItem(4811, "https://github.com/dotnet/roslyn/issues/4811")] + [Fact(Skip = "https://github.com/dotnet/roslyn/issues/4811")] + public void UsingStaticCurrentSubmission() + { + const string source = @" +using static Type; + +class Type +{ + public static readonly int Field = 1; +} +"; + + var sub = CreateSubmission(source); + sub.VerifyDiagnostics(); + + Assert.Equal(sub.ScriptClass.GetMember("Type"), GetSpeculativeSymbol(sub, "Field").ContainingType); + } + + [WorkItem(4811, "https://github.com/dotnet/roslyn/issues/4811")] + [Fact(Skip = "https://github.com/dotnet/roslyn/issues/4811")] + public void UsingStaticPreviousSubmission() + { + var sub1 = CreateSubmission("class A { public static int AA; }"); + var sub2 = CreateSubmission("class B { public static int BB; }", previous: sub1); + var sub3 = CreateSubmission("class C { public static int CC; }", previous: sub2); + + CreateSubmission("using static A;", previous: sub3).VerifyDiagnostics(); + CreateSubmission("using static B;", previous: sub3).VerifyDiagnostics(); + + var sub4 = CreateSubmission("using static C;", previous: sub3); + sub4.VerifyDiagnostics(); + + var typeSymbol = sub3.ScriptClass.GetMember("C"); + + Assert.Equal(typeSymbol, GetSpeculativeSymbol(sub4, "CC").ContainingType); + } + + [Fact] + public void UsingStaticUnqualified() + { + const string source = @" +using static Path; +using System.IO; +"; + var expectedDiagnostics = new[] + { + // (2,14): error CS0246: The type or namespace name 'Path' could not be found (are you missing a using directive or an assembly reference?) + // using static Path; + Diagnostic(ErrorCode.ERR_SingleTypeNameNotFound, "Path").WithArguments("Path").WithLocation(2, 14) + }; + + CreateCompilationWithMscorlib(source).GetDiagnostics().Where(d => d.Severity > DiagnosticSeverity.Hidden).Verify(expectedDiagnostics); + CreateSubmission(source).GetDiagnostics().Verify(expectedDiagnostics); + } + + [Fact] + public void UsingStaticUnqualified_GlobalUsing() + { + const string source = @" +using static Path; +"; + var expectedDiagnostics = new[] + { + // (2,14): error CS0246: The type or namespace name 'Path' could not be found (are you missing a using directive or an assembly reference?) + // using static Path; + Diagnostic(ErrorCode.ERR_SingleTypeNameNotFound, "Path").WithArguments("Path").WithLocation(2, 14) + }; + + var options = TestOptions.DebugDll.WithUsings("System"); + + CreateCompilationWithMscorlib(source, options: options).GetDiagnostics().Where(d => d.Severity > DiagnosticSeverity.Hidden).Verify(expectedDiagnostics); + CreateSubmission(source, options: options).GetDiagnostics().Verify(expectedDiagnostics); + } + + [Fact] + public void DuplicateUsing_SameSubmission() + { + CreateSubmission("using System; using System;").VerifyDiagnostics( + // (1,21): warning CS0105: The using directive for 'System' appeared previously in this namespace + // using System; using System; + Diagnostic(ErrorCode.WRN_DuplicateUsing, "System").WithArguments("System").WithLocation(1, 21)); + } + + [Fact] + public void DuplicateUsing_DifferentSubmissions() + { + CreateSubmission("using System;", previous: CreateSubmission("using System;")).VerifyDiagnostics(); + } + + [Fact] + public void UsingsRebound() + { + const string libSourceTemplate = @" +namespace A +{{ + public class A{0} {{ }} +}} + +namespace B +{{ + public class B{0} {{ }} +}} +"; + + var lib1 = CreateCompilationWithMscorlib(string.Format(libSourceTemplate, 1), assemblyName: "Lib1").EmitToImageReference(); + var lib2 = CreateCompilationWithMscorlib(string.Format(libSourceTemplate, 2), assemblyName: "Lib2").EmitToImageReference(); + + var options = TestOptions.DebugDll.WithUsings("B"); + + var sub1 = CreateSubmission("using A;", new[] { lib1 }, options); + sub1.VerifyDiagnostics(); + + var sub2 = CreateSubmission("typeof(A1) == typeof(A2) && typeof(B1) == typeof(B2)", new[] { lib1, lib2 }, options: options, previous: sub1); + sub2.VerifyDiagnostics(); + } + + [WorkItem(5423, "https://github.com/dotnet/roslyn/issues/5423")] + [Fact(Skip = "https://github.com/dotnet/roslyn/issues/5423")] + void UsingsFromLoadedScript() + { + const string scriptSource = @" +using static System.IO.Path; +using System.IO; +using F = System.IO.File; + +class C { } +"; + + const string submissionSource = @" +#load ""a.csx"" + +System.Type t; + +GetTempPath(); // using static not exposed +t = typeof(File); // using not exposed +t = typeof(F); // using alias not exposed + +t = typeof(C); // declaration exposed +"; + + var resolver = TestSourceReferenceResolver.Create(new Dictionary + { + { "a.csx", scriptSource } + }); + + var compilation = CreateSubmission( + submissionSource, + options: TestOptions.DebugDll.WithSourceReferenceResolver(resolver)); + + compilation.VerifyDiagnostics( + // (6,1): error CS0103: The name 'GetTempPath' does not exist in the current context + // GetTempPath(); // using static not exposed + Diagnostic(ErrorCode.ERR_NameNotInContext, "GetTempPath").WithArguments("GetTempPath").WithLocation(6, 1), + // (7,12): error CS0246: The type or namespace name 'File' could not be found (are you missing a using directive or an assembly reference?) + // t = typeof(File); // using not exposed + Diagnostic(ErrorCode.ERR_SingleTypeNameNotFound, "File").WithArguments("File").WithLocation(7, 12), + // (8,12): error CS0246: The type or namespace name 'F' could not be found (are you missing a using directive or an assembly reference?) + // t = typeof(F); // using alias not exposed + Diagnostic(ErrorCode.ERR_SingleTypeNameNotFound, "F").WithArguments("F").WithLocation(8, 12)); + } + + [WorkItem(5423, "https://github.com/dotnet/roslyn/issues/5423")] + [Fact(Skip = "https://github.com/dotnet/roslyn/issues/5423")] + void UsingsToLoadedScript() + { + const string scriptSource = @" +System.Type t; + +GetTempPath(); // using static not exposed +t = typeof(File); // using not exposed +t = typeof(F); // using alias not exposed + +t = typeof(C); // declaration exposed +"; + + const string submissionSource = @" +#load ""a.csx"" + +using static System.IO.Path; +using System.IO; +using F = System.IO.File; + +class C { } +"; + + var resolver = TestSourceReferenceResolver.Create(new Dictionary + { + { "a.csx", scriptSource } + }); + + var compilation = CreateSubmission( + submissionSource, + options: TestOptions.DebugDll.WithSourceReferenceResolver(resolver)); + + compilation.VerifyDiagnostics( + // a.csx(4,1): error CS0103: The name 'GetTempPath' does not exist in the current context + // GetTempPath(); // using static not exposed + Diagnostic(ErrorCode.ERR_NameNotInContext, "GetTempPath").WithArguments("GetTempPath").WithLocation(4, 1), + // a.csx(5,12): error CS0246: The type or namespace name 'File' could not be found (are you missing a using directive or an assembly reference?) + // t = typeof(File); // using not exposed + Diagnostic(ErrorCode.ERR_SingleTypeNameNotFound, "File").WithArguments("File").WithLocation(5, 12), + // a.csx(6,12): error CS0246: The type or namespace name 'F' could not be found (are you missing a using directive or an assembly reference?) + // t = typeof(F); // using alias not exposed + Diagnostic(ErrorCode.ERR_SingleTypeNameNotFound, "F").WithArguments("F").WithLocation(6, 12)); + } + + [Fact] + void GlobalUsingsToLoadedScript() + { + const string scriptSource = @" +System.Type t; + +GetTempPath(); // global using static exposed +t = typeof(File); // global using exposed +"; + + const string submissionSource = @" +#load ""a.csx"" +"; + + var resolver = TestSourceReferenceResolver.Create(new Dictionary + { + { "a.csx", scriptSource } + }); + + var compilation = CreateSubmission( + submissionSource, + options: TestOptions.DebugDll.WithSourceReferenceResolver(resolver).WithUsings("System.IO", "System.IO.Path")); + + compilation.VerifyDiagnostics(); + } + + private static Symbol GetSpeculativeSymbol(CSharpCompilation comp, string name) + { + var tree = comp.SyntaxTrees.Single(); + var model = comp.GetSemanticModel(tree); + return (Symbol)model.GetSpeculativeSymbolInfo( + tree.Length, + SyntaxFactory.IdentifierName(name), + SpeculativeBindingOption.BindAsExpression).Symbol; + } + + private static TypeSymbol GetSpeculativeType(CSharpCompilation comp, string name) + { + var tree = comp.SyntaxTrees.Single(); + var model = comp.GetSemanticModel(tree); + return (TypeSymbol)model.GetSpeculativeTypeInfo( + tree.Length, + SyntaxFactory.IdentifierName(name), + SpeculativeBindingOption.BindAsTypeOrNamespace).Type; + } + } +} \ No newline at end of file diff --git a/src/Compilers/CSharp/Test/Symbol/Compilation/LoadDirectiveTests.cs b/src/Compilers/CSharp/Test/Symbol/Compilation/LoadDirectiveTests.cs index 91b2432ba5766..fd1601ae64048 100644 --- a/src/Compilers/CSharp/Test/Symbol/Compilation/LoadDirectiveTests.cs +++ b/src/Compilers/CSharp/Test/Symbol/Compilation/LoadDirectiveTests.cs @@ -1,14 +1,9 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System; using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Test.Utilities; using Xunit; +using Roslyn.Test.Utilities; namespace Microsoft.CodeAnalysis.CSharp.UnitTests { @@ -91,56 +86,12 @@ private static SourceReferenceResolver CreateResolver(params KeyValuePair Script(string path, string source) { return new KeyValuePair(path, source); } - - private class TestSourceReferenceResolver : SourceReferenceResolver - { - private readonly IDictionary _sources; - - public static TestSourceReferenceResolver Default { get; } = new TestSourceReferenceResolver(); - - public TestSourceReferenceResolver(IDictionary sources = null) - { - _sources = sources; - } - - public override string NormalizePath(string path, string baseFilePath) - { - return path; - } - - public override string ResolveReference(string path, string baseFilePath) - { - return ((_sources != null) && _sources.ContainsKey(path)) ? path : null; - } - - public override Stream OpenRead(string resolvedPath) - { - if (_sources != null) - { - return new MemoryStream(Encoding.UTF8.GetBytes(_sources[resolvedPath])); - } - else - { - throw new IOException(); - } - } - - public override bool Equals(object other) - { - return this.Equals(other); - } - - public override int GetHashCode() - { - return this.GetHashCode(); - } - } } } diff --git a/src/Test/Utilities/Desktop/TestSourceReferenceResolver.cs b/src/Test/Utilities/Desktop/TestSourceReferenceResolver.cs new file mode 100644 index 0000000000000..2df85330249dd --- /dev/null +++ b/src/Test/Utilities/Desktop/TestSourceReferenceResolver.cs @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using System.IO; +using System.Runtime.CompilerServices; +using System.Text; +using Microsoft.CodeAnalysis; + +namespace Roslyn.Test.Utilities +{ + public sealed class TestSourceReferenceResolver : SourceReferenceResolver + { + public static readonly SourceReferenceResolver Default = new TestSourceReferenceResolver(sources: null); + + public static SourceReferenceResolver Create(Dictionary sources = null) + { + return (sources == null || sources.Count == 0) ? Default : new TestSourceReferenceResolver(sources); + } + + private readonly Dictionary _sources; + + private TestSourceReferenceResolver(Dictionary sources) + { + _sources = sources; + } + + public override string NormalizePath(string path, string baseFilePath) => path; + + public override string ResolveReference(string path, string baseFilePath) => + _sources?.ContainsKey(path) == true ? path : null; + + public override Stream OpenRead(string resolvedPath) + { + if (_sources != null && resolvedPath != null) + { + return new MemoryStream(Encoding.UTF8.GetBytes(_sources[resolvedPath])); + } + else + { + throw new IOException(); + } + } + + public override bool Equals(object other) => ReferenceEquals(this, other); + + public override int GetHashCode() => RuntimeHelpers.GetHashCode(this); + } +} diff --git a/src/Test/Utilities/Desktop/TestUtilities.Desktop.csproj b/src/Test/Utilities/Desktop/TestUtilities.Desktop.csproj index 75073b8ecd107..00be27a0b4617 100644 --- a/src/Test/Utilities/Desktop/TestUtilities.Desktop.csproj +++ b/src/Test/Utilities/Desktop/TestUtilities.Desktop.csproj @@ -117,6 +117,7 @@ True TestResource.resx + From 376de68f207519786e9a455e9d137eb63fea9c15 Mon Sep 17 00:00:00 2001 From: Kevin Halverson Date: Fri, 25 Sep 2015 12:14:03 -0700 Subject: [PATCH 78/83] Add null check in SemanticModelService for #load'ed trees... --- .../SemanticModelWorkspaceServiceFactory.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Workspaces/Core/Portable/SemanticModelWorkspaceService/SemanticModelWorkspaceServiceFactory.cs b/src/Workspaces/Core/Portable/SemanticModelWorkspaceService/SemanticModelWorkspaceServiceFactory.cs index a914181549dbd..74576bc646b0f 100644 --- a/src/Workspaces/Core/Portable/SemanticModelWorkspaceService/SemanticModelWorkspaceServiceFactory.cs +++ b/src/Workspaces/Core/Portable/SemanticModelWorkspaceService/SemanticModelWorkspaceServiceFactory.cs @@ -485,7 +485,15 @@ private static ImmutableDictionary AddOrUpdateNewTreeToO } var documentId = newProject.GetDocumentId(newTree); - Contract.Requires(documentId != null); + + // GetDocumentId will return null for #load'ed trees. + // TODO: Remove this check and add logic to fetch the #load'ed tree's + // Document once https://github.com/dotnet/roslyn/issues/5260 is fixed. + if (documentId == null) + { + Debug.Assert(newProject.Solution.Workspace.Kind == "Interactive"); + continue; + } map = map.SetItem(documentId, newTree); } From 8b4461da3f0fa96bcd2b6a7897eba8bdb33ac186 Mon Sep 17 00:00:00 2001 From: Kevin Halverson Date: Fri, 25 Sep 2015 12:29:16 -0700 Subject: [PATCH 79/83] Also add a null check in AbstractDocumentHighlightsService... --- .../AbstractDocumentHighlightsService.cs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/EditorFeatures/Core/Implementation/ReferenceHighlighting/AbstractDocumentHighlightsService.cs b/src/EditorFeatures/Core/Implementation/ReferenceHighlighting/AbstractDocumentHighlightsService.cs index 3ef5a324f209e..a72fe46df83b3 100644 --- a/src/EditorFeatures/Core/Implementation/ReferenceHighlighting/AbstractDocumentHighlightsService.cs +++ b/src/EditorFeatures/Core/Implementation/ReferenceHighlighting/AbstractDocumentHighlightsService.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; +using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -160,9 +161,23 @@ private async Task> CreateSpansAsync( { foreach (var location in reference.Definition.Locations) { - if (location.IsInSource && documentToSearch.Contains(solution.GetDocument(location.SourceTree))) + if (location.IsInSource) { - await AddLocationSpan(location, solution, spanSet, tagMap, HighlightSpanKind.Definition, cancellationToken).ConfigureAwait(false); + var document = solution.GetDocument(location.SourceTree); + + // GetDocument will return null for locations in #load'ed trees. + // TODO: Remove this check and add logic to fetch the #load'ed tree's + // Document once https://github.com/dotnet/roslyn/issues/5260 is fixed. + if (document == null) + { + Debug.Assert(solution.Workspace.Kind == "Interactive"); + continue; + } + + if (documentToSearch.Contains(document)) + { + await AddLocationSpan(location, solution, spanSet, tagMap, HighlightSpanKind.Definition, cancellationToken).ConfigureAwait(false); + } } } } From 1882b7f35e607bf785eca25c6979d50a1db82728 Mon Sep 17 00:00:00 2001 From: Charles Stoner Date: Fri, 25 Sep 2015 11:42:53 -0700 Subject: [PATCH 80/83] Fix function pointer representation --- .../ResultProvider/FunctionPointerTests.cs | 75 +++++++++++++------ .../Debugger/Engine/DkmClrValue.cs | 27 ++++--- 2 files changed, 70 insertions(+), 32 deletions(-) diff --git a/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs b/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs index c9df0accc3060..7df62f7f8cad5 100644 --- a/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs +++ b/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs @@ -3,6 +3,8 @@ using Microsoft.CodeAnalysis.ExpressionEvaluator; using Microsoft.VisualStudio.Debugger.Clr; using Microsoft.VisualStudio.Debugger.Evaluation; +using Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation; +using Microsoft.VisualStudio.Debugger.Metadata; using System; using System.Diagnostics; using Xunit; @@ -12,40 +14,71 @@ namespace Microsoft.CodeAnalysis.CSharp.UnitTests { public class FunctionPointerTests : CSharpResultProviderTestBase { - [Fact(Skip = "Tests are failing in Jenkins queues")] + [Fact] public void Root() { - const int ptr = 0x1234; - var value = CreateDkmClrValue(ptr, type: new DkmClrType(FunctionPointerType.Instance)); - var evalResult = FormatResult("pfn", value); - Verify(evalResult, - EvalResult("pfn", PointerToString(new IntPtr(ptr)), "System.Object*", "pfn", DkmEvaluationResultFlags.None, DkmEvaluationResultCategory.Other)); + var source = +@"unsafe class C +{ + internal C(long p) + { + this.pfn = (int*)p; + } + int* pfn; +}"; + var assembly = GetUnsafeAssembly(source); + unsafe + { + int i = 0x1234; + long ptr = (long)&i; + var type = assembly.GetType("C"); + var value = GetFunctionPointerField(CreateDkmClrValue(type.Instantiate(ptr)), "pfn"); + var evalResult = FormatResult("pfn", value); + Verify(evalResult, + EvalResult("pfn", PointerToString(new IntPtr(ptr)), "System.Object*", "pfn", DkmEvaluationResultFlags.None, DkmEvaluationResultCategory.Other)); + } } - [Fact(Skip = "Tests are failing in Jenkins queues")] + [Fact] public void Member() { var source = -@"class C +@"unsafe class C { - object pfn; + internal C(long p) + { + this.pfn = (int*)p; + } + int* pfn; }"; - const int ptr = 0x0; - GetMemberValueDelegate getMemberValue = (v, m) => (m == "pfn") ? CreateDkmClrValue(ptr, type: new DkmClrType(FunctionPointerType.Instance)) : null; - var runtime = new DkmClrRuntimeInstance(ReflectionUtilities.GetMscorlibAndSystemCore(GetAssembly(source)), getMemberValue: getMemberValue); - using (runtime.Load()) + var assembly = GetUnsafeAssembly(source); + unsafe { - var type = runtime.GetType("C"); - var value = CreateDkmClrValue(type.Instantiate(), type: type); - var evalResult = FormatResult("o", value); - Verify(evalResult, - EvalResult("o", "{C}", "C", "o", DkmEvaluationResultFlags.Expandable, DkmEvaluationResultCategory.Other)); - var children = GetChildren(evalResult); - Verify(children, - EvalResult("pfn", PointerToString(new IntPtr(ptr)), "object {System.Object*}", "o.pfn", DkmEvaluationResultFlags.None, DkmEvaluationResultCategory.Other)); + const long ptr = 0x0; + GetMemberValueDelegate getMemberValue = (v, m) => (m == "pfn") ? GetFunctionPointerField(v, m) : null; + var runtime = new DkmClrRuntimeInstance(ReflectionUtilities.GetMscorlibAndSystemCore(assembly), getMemberValue: getMemberValue); + using (runtime.Load()) + { + var type = runtime.GetType("C"); + var value = CreateDkmClrValue(type.Instantiate(ptr), type); + var evalResult = FormatResult("o", value); + Verify(evalResult, + EvalResult("o", "{C}", "C", "o", DkmEvaluationResultFlags.Expandable, DkmEvaluationResultCategory.Other)); + var children = GetChildren(evalResult); + Verify(children, + EvalResult("pfn", PointerToString(new IntPtr(ptr)), "int*", "o.pfn", DkmEvaluationResultFlags.None, DkmEvaluationResultCategory.Other)); + } } } + private DkmClrValue GetFunctionPointerField(DkmClrValue value, string fieldName) + { + var valueType = value.Type.GetLmrType(); + var fieldInfo = valueType.GetField(fieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + var fieldValue = fieldInfo.GetValue(value.RawValue); + return CreateDkmClrValue(DkmClrValue.UnboxPointer(fieldValue), new DkmClrType(FunctionPointerType.Instance)); + } + // Function pointer type has IsPointer == true and GetElementType() == null. private sealed class FunctionPointerType : TypeImpl { diff --git a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrValue.cs b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrValue.cs index 3290a7db209e9..7c0f4919c23ae 100644 --- a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrValue.cs +++ b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrValue.cs @@ -501,17 +501,7 @@ public DkmClrValue GetMemberValue(string MemberName, int MemberType, string Pare Type type; if (value is System.Reflection.Pointer) { - unsafe - { - if (Environment.Is64BitProcess) - { - value = (long)System.Reflection.Pointer.Unbox(value); - } - else - { - value = (int)System.Reflection.Pointer.Unbox(value); - } - } + value = UnboxPointer(value); type = declaredType; } else if (value == null || declaredType.IsNullable()) @@ -535,6 +525,21 @@ public DkmClrValue GetMemberValue(string MemberName, int MemberType, string Pare access: access); } + internal static unsafe object UnboxPointer(object value) + { + unsafe + { + if (Environment.Is64BitProcess) + { + return (long)System.Reflection.Pointer.Unbox(value); + } + else + { + return (int)System.Reflection.Pointer.Unbox(value); + } + } + } + public DkmClrValue GetArrayElement(int[] indices, DkmInspectionContext inspectionContext) { if (inspectionContext == null) From 2c2db250afd122fb8f34bef0da0e639e7d34c554 Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Fri, 25 Sep 2015 15:38:43 -0700 Subject: [PATCH 81/83] Add a separate package for the Linux coreclr runtime --- cibuild.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cibuild.sh b/cibuild.sh index ecb20178dc1fa..90174bed2f016 100755 --- a/cibuild.sh +++ b/cibuild.sh @@ -77,6 +77,14 @@ release_sem() restore_nuget() { + # restore coreclr runtime package + pushd /tmp + local coreclr_package_name="coreclr.linux.1.zip" + rm $coreclr_package_name + curl -O https://dotnetci.blob.core.windows.net/roslyn/$coreclr_package_name + unzip -uoq $coreclr_package_name -d ~/ + popd + acquire_sem_or_wait "restore_nuget" local package_name="nuget.15.zip" From e06b841743900cdcf6f024b2b7569c8a2747af72 Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Fri, 25 Sep 2015 15:46:36 -0700 Subject: [PATCH 82/83] Ignore if rm can't delete the package --- cibuild.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cibuild.sh b/cibuild.sh index 90174bed2f016..2c03444ea2d6e 100755 --- a/cibuild.sh +++ b/cibuild.sh @@ -80,7 +80,7 @@ restore_nuget() # restore coreclr runtime package pushd /tmp local coreclr_package_name="coreclr.linux.1.zip" - rm $coreclr_package_name + rm $coreclr_package_name 2>/dev/null curl -O https://dotnetci.blob.core.windows.net/roslyn/$coreclr_package_name unzip -uoq $coreclr_package_name -d ~/ popd From 1b9650bc88e2c9d88109546f942e281a55fcf024 Mon Sep 17 00:00:00 2001 From: Charles Stoner Date: Fri, 25 Sep 2015 15:58:12 -0700 Subject: [PATCH 83/83] Minor code cleanup --- .../ResultProvider/FunctionPointerTests.cs | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs b/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs index 7df62f7f8cad5..b41b6da469362 100644 --- a/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs +++ b/src/ExpressionEvaluator/CSharp/Test/ResultProvider/FunctionPointerTests.cs @@ -52,22 +52,19 @@ internal C(long p) int* pfn; }"; var assembly = GetUnsafeAssembly(source); - unsafe + const long ptr = 0x0; + GetMemberValueDelegate getMemberValue = (v, m) => (m == "pfn") ? GetFunctionPointerField(v, m) : null; + var runtime = new DkmClrRuntimeInstance(ReflectionUtilities.GetMscorlibAndSystemCore(assembly), getMemberValue: getMemberValue); + using (runtime.Load()) { - const long ptr = 0x0; - GetMemberValueDelegate getMemberValue = (v, m) => (m == "pfn") ? GetFunctionPointerField(v, m) : null; - var runtime = new DkmClrRuntimeInstance(ReflectionUtilities.GetMscorlibAndSystemCore(assembly), getMemberValue: getMemberValue); - using (runtime.Load()) - { - var type = runtime.GetType("C"); - var value = CreateDkmClrValue(type.Instantiate(ptr), type); - var evalResult = FormatResult("o", value); - Verify(evalResult, - EvalResult("o", "{C}", "C", "o", DkmEvaluationResultFlags.Expandable, DkmEvaluationResultCategory.Other)); - var children = GetChildren(evalResult); - Verify(children, - EvalResult("pfn", PointerToString(new IntPtr(ptr)), "int*", "o.pfn", DkmEvaluationResultFlags.None, DkmEvaluationResultCategory.Other)); - } + var type = runtime.GetType("C"); + var value = CreateDkmClrValue(type.Instantiate(ptr), type); + var evalResult = FormatResult("o", value); + Verify(evalResult, + EvalResult("o", "{C}", "C", "o", DkmEvaluationResultFlags.Expandable, DkmEvaluationResultCategory.Other)); + var children = GetChildren(evalResult); + Verify(children, + EvalResult("pfn", PointerToString(new IntPtr(ptr)), "int*", "o.pfn", DkmEvaluationResultFlags.None, DkmEvaluationResultCategory.Other)); } }