提交 bb297625 编写于 作者: H Heejae Chang

made all build successfully

updated build and test to recognize Dev15Tests

re-arranged test export provider
上级 643a5158
......@@ -79,16 +79,16 @@
<!-- MakeConst unit tests tracked by https://github.com/dotnet/roslyn/issues/5918 -->
<TestAssemblies Condition="'$(Test64)' != 'true'"
Include="$(OutputDirectory)\$(IncludePattern)" />
Include="$(OutputDirectory)\$(IncludePattern);$(OutputDirectory)\Dev15Tests\$(IncludePattern)" />
<TestAssemblies Condition="'$(Test64)' == 'true'"
Include="$(OutputDirectory)\$(IncludePattern)"
Include="$(OutputDirectory)\$(IncludePattern);$(OutputDirectory)\Dev15Tests\$(IncludePattern)"
Exclude="$(OutputDirectory)\Roslyn.Interactive*" />
<CoreTestAssemblies Include="$(CoreClrTestDirectory)\$(IncludePattern)" />
<MisplacedTestAssemblies Include="$(OutputDirectory)\**\$(IncludePattern)"
Exclude="$(OutputDirectory)\$(IncludePattern);@(CoreTestAssemblies)" />
Exclude="$(OutputDirectory)\$(IncludePattern);$(OutputDirectory)\Dev15Tests\$(IncludePattern);@(CoreTestAssemblies)" />
</ItemGroup>
<Error Condition="'@(MisplacedTestAssemblies->Count())' &gt; 0"
......
......@@ -65,6 +65,7 @@
<InternalsVisibleToTest Include="Roslyn.Services.Editor.CSharp.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Editor.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Editor.UnitTests2" />
<InternalsVisibleToTest Include="Roslyn.Services.Test.Utilities" />
</ItemGroup>
<ItemGroup>
<Compile Include="AutomaticCompletion\AutomaticLineEnderCommandHandler.cs" />
......
......@@ -218,12 +218,12 @@
<Compile Include="Extensions\WorkspaceExtensions.cs" />
<Compile Include="GoToAdjacentMember\AbstractGoToAdjacentMemberTests.cs" />
<Compile Include="MoveType\AbstractMoveTypeTest.cs" />
<Compile Include="Preview\MockPreviewPaneService.cs" />
<Compile Include="Preview\TestOnly_CompilerDiagnosticAnalyzerProviderService.cs" />
<Compile Include="Structure\AbstractSyntaxNodeStructureProviderTests.cs" />
<Compile Include="Structure\AbstractSyntaxStructureProviderTests.cs" />
<Compile Include="Structure\AbstractSyntaxTriviaStructureProviderTests.cs" />
<Compile Include="Structure\BlockStructureServiceTests.cs" />
<Compile Include="Preview\MockPreviewPaneService.cs" />
<Compile Include="Preview\TestOnly_CompilerDiagnosticAnalyzerProviderService.cs" />
<Compile Include="DocCommentFormatting\DocCommentFormattingTests.cs" />
<Compile Include="DocumentationComments\AbstractDocumentationCommentTests.cs" />
<Compile Include="DocumentationComments\AbstractXmlTagCompletionTests.cs" />
......@@ -266,7 +266,6 @@
<Compile Include="MetadataAsSource\MetadataAsSourceTests.cs" />
<Compile Include="MetadataAsSource\MetadataAsSourceTests.CSharp.cs" />
<Compile Include="MetadataAsSource\MetadataAsSourceTests.VisualBasic.cs" />
<Compile Include="MinimalTestExportProvider.cs" />
<Compile Include="NavigateTo\NavigateToTestAggregator.Callback.cs" />
<Compile Include="NavigateTo\NavigateToTestAggregator.cs" />
<Compile Include="Structure\BlockSpanTests.cs" />
......@@ -287,8 +286,6 @@
<Compile Include="Tagging\AsynchronousTaggerTests.cs" />
<Compile Include="Tagging\TagSpanIntervalTreeTests.cs" />
<Compile Include="TestExportProvider.cs" />
<Compile Include="TestExtensionErrorHandler.cs" />
<Compile Include="TestOptionsServiceFactory.cs" />
<Compile Include="TextEditorFactoryExtensions.cs" />
<Compile Include="TextEditor\TextBufferAssociatedViewServiceTests.cs" />
<Compile Include="TextEditor\TryGetDocumentTests.cs" />
......@@ -302,14 +299,8 @@
<Compile Include="Utilities\SymbolEquivalenceComparerTests.cs" />
<Compile Include="Utilities\TestEditorOptions.cs" />
<Compile Include="Utilities\TestWaitContext.cs" />
<Compile Include="Utilities\TestWaitIndicator.cs" />
<Compile Include="Workspaces\CSharpTestWorkspaceFixture.cs" />
<Compile Include="Workspaces\MefTestWorkspace.cs" />
<Compile Include="Workspaces\NoCompilationConstants.cs" />
<Compile Include="Workspaces\NoCompilationContentTypeDefinitions.cs" />
<Compile Include="Workspaces\NoCompilationContentTypeLanguageService.cs" />
<Compile Include="Workspaces\NoCompilationDocumentDiagnosticAnalyzer.cs" />
<Compile Include="Workspaces\NoCompilationLanguageServiceFactory.cs" />
<Compile Include="OptionExtensions.cs" />
<Compile Include="Workspaces\TestForegroundNotificationService.cs" />
<Compile Include="Workspaces\TestAddMetadataReferenceCodeActionOperationFactoryWorkspaceService.cs" />
......
// 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.Reflection;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.Shared.Options;
using Microsoft.CodeAnalysis.Editor.UnitTests.Utilities;
using Microsoft.CodeAnalysis.Shared.Options;
using Microsoft.CodeAnalysis.SolutionCrawler;
using Microsoft.VisualStudio.Composition;
using Roslyn.Test.Utilities;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.UnitTests
{
public static class MinimalTestExportProvider
{
private static readonly PartDiscovery s_partDiscovery = CreatePartDiscovery(Resolver.DefaultInstance);
private static readonly Lazy<ComposableCatalog> s_lazyLanguageNeutralCatalog = new Lazy<ComposableCatalog>(() => CreateAssemblyCatalog(GetVisualStudioAssemblies()).WithParts(CreateAssemblyCatalog(GetLanguageNeutralTypes().Select(t => t.Assembly).Distinct())));
public static ComposableCatalog LanguageNeutralCatalog
{
get
{
return s_lazyLanguageNeutralCatalog.Value;
}
}
public static Type[] GetLanguageNeutralTypes()
{
var types = new[]
{
// ROSLYN
typeof(Microsoft.CodeAnalysis.Editor.Implementation.Workspaces.WorkspaceTaskSchedulerFactoryFactory),
typeof(Microsoft.CodeAnalysis.Host.WorkspaceTaskSchedulerFactoryFactory),
typeof(Microsoft.CodeAnalysis.Formatting.Rules.DefaultFormattingRuleFactoryServiceFactory),
typeof(Microsoft.CodeAnalysis.Host.PersistentStorageServiceFactory),
typeof(Microsoft.CodeAnalysis.Text.Implementation.TextBufferFactoryService.TextBufferCloneServiceFactory),
typeof(Microsoft.CodeAnalysis.Host.MetadataServiceFactory),
typeof(Microsoft.CodeAnalysis.Host.TemporaryStorageServiceFactory),
typeof(Microsoft.CodeAnalysis.Host.TextFactoryService),
typeof(Microsoft.CodeAnalysis.Editor.Implementation.Workspaces.ProjectCacheHostServiceFactory),
typeof(Solution), // ServicesCore
typeof(Microsoft.CodeAnalysis.Options.GlobalOptionService),
typeof(Microsoft.CodeAnalysis.Options.OptionServiceFactory),
typeof(Microsoft.CodeAnalysis.Options.Providers.ExportedOptionProvider),
typeof(Microsoft.CodeAnalysis.Editor.Implementation.SmartIndent.SmartIndentProvider),
typeof(Microsoft.CodeAnalysis.Editor.Implementation.ForegroundNotification.ForegroundNotificationService),
typeof(Microsoft.CodeAnalysis.Editor.UnitTests.TestOptionsServiceFactory),
typeof(SymbolMapping.SymbolMappingServiceFactory),
typeof(TestWaitIndicator),
typeof(TestExtensionErrorHandler),
typeof(TestExportProvider)
};
return types.Concat(TestHelpers.GetAllTypesWithStaticFieldsImplementingType(typeof(InternalSolutionCrawlerOptions).Assembly, typeof(Microsoft.CodeAnalysis.Options.IOption)))
.Concat(TestHelpers.GetAllTypesWithStaticFieldsImplementingType(typeof(EditorComponentOnOffOptions).Assembly, typeof(Microsoft.CodeAnalysis.Options.IOption)))
.Concat(TestHelpers.GetAllTypesWithStaticFieldsImplementingType(typeof(ServiceComponentOnOffOptions).Assembly, typeof(Microsoft.CodeAnalysis.Options.IOption)))
.Concat(TestHelpers.GetAllTypesWithStaticFieldsImplementingType(typeof(Microsoft.CodeAnalysis.Formatting.FormattingOptions).Assembly, typeof(Microsoft.CodeAnalysis.Options.IOption)))
.Distinct()
.ToArray();
}
public static IEnumerable<Assembly> GetVisualStudioAssemblies()
{
var assemblies = new[]
{
// EDITOR
// Microsoft.VisualStudio.Platform.VSEditor.dll:
typeof(Microsoft.VisualStudio.Platform.VSEditor.EventArgsHelper).Assembly,
// Microsoft.VisualStudio.Text.Logic.dll:
// Must include this because several editor options are actually stored as exported information
// on this DLL. Including most importantly, the tab size information.
typeof(Microsoft.VisualStudio.Text.Editor.DefaultOptions).Assembly,
// Microsoft.VisualStudio.Text.UI.dll:
// Include this DLL to get several more EditorOptions including WordWrapStyle.
typeof(Microsoft.VisualStudio.Text.Editor.WordWrapStyle).Assembly,
// Microsoft.VisualStudio.Text.UI.Wpf.dll:
// Include this DLL to get more EditorOptions values.
typeof(Microsoft.VisualStudio.Text.Editor.HighlightCurrentLineOption).Assembly,
// BasicUndo.dll:
// Include this DLL to satisfy ITextUndoHistoryRegistry
typeof(BasicUndo.IBasicUndoHistory).Assembly,
// Microsoft.VisualStudio.Language.StandardClassification.dll:
typeof(Microsoft.VisualStudio.Language.StandardClassification.PredefinedClassificationTypeNames).Assembly
};
return assemblies;
}
public static ComposableCatalog CreateAssemblyCatalog(Assembly assembly)
{
return CreateAssemblyCatalog(SpecializedCollections.SingletonEnumerable(assembly));
}
public static ComposableCatalog CreateAssemblyCatalog(IEnumerable<Assembly> assemblies, Resolver resolver = null)
{
var discovery = resolver == null ? s_partDiscovery : CreatePartDiscovery(resolver);
// If we run CreatePartsAsync on the test thread we may deadlock since it'll schedule stuff back
// on the thread.
var parts = Task.Run(async () => await discovery.CreatePartsAsync(assemblies).ConfigureAwait(false)).Result;
return ComposableCatalog.Create(resolver ?? Resolver.DefaultInstance).AddParts(parts);
}
public static ComposableCatalog CreateTypeCatalog(IEnumerable<Type> types, Resolver resolver = null)
{
var discovery = resolver == null ? s_partDiscovery : CreatePartDiscovery(resolver);
// If we run CreatePartsAsync on the test thread we may deadlock since it'll schedule stuff back
// on the thread.
var parts = Task.Run(async () => await discovery.CreatePartsAsync(types).ConfigureAwait(false)).Result;
return ComposableCatalog.Create(resolver ?? Resolver.DefaultInstance).AddParts(parts);
}
public static Resolver CreateResolver()
{
// simple assembly loader is stateless, so okay to share
return new Resolver(SimpleAssemblyLoader.Instance);
}
public static PartDiscovery CreatePartDiscovery(Resolver resolver)
{
return PartDiscovery.Combine(new AttributedPartDiscoveryV1(resolver), new AttributedPartDiscovery(resolver, isNonPublicSupported: true));
}
public static ExportProvider CreateExportProvider(ComposableCatalog catalog)
{
var configuration = CompositionConfiguration.Create(catalog.WithDesktopSupport().WithCompositionService());
var runtimeComposition = RuntimeComposition.CreateRuntimeComposition(configuration);
return runtimeComposition.CreateExportProviderFactory().CreateExportProvider();
}
public static ComposableCatalog WithParts(this ComposableCatalog @this, ComposableCatalog catalog)
{
return @this.AddParts(catalog.DiscoveredParts);
}
public static ComposableCatalog WithParts(this ComposableCatalog catalog, IEnumerable<Type> types)
{
return catalog.WithParts(CreateTypeCatalog(types));
}
public static ComposableCatalog WithParts(this ComposableCatalog catalog, params Type[] types)
{
return WithParts(catalog, (IEnumerable<Type>)types);
}
public static ComposableCatalog WithPart(this ComposableCatalog catalog, Type t)
{
return catalog.WithParts(CreateTypeCatalog(SpecializedCollections.SingletonEnumerable(t)));
}
private class SimpleAssemblyLoader : IAssemblyLoader
{
public static readonly IAssemblyLoader Instance = new SimpleAssemblyLoader();
public Assembly LoadAssembly(AssemblyName assemblyName)
{
return Assembly.Load(assemblyName);
}
public Assembly LoadAssembly(string assemblyFullName, string codeBasePath)
{
var assemblyName = new AssemblyName(assemblyFullName);
if (!string.IsNullOrEmpty(codeBasePath))
{
assemblyName.CodeBase = codeBasePath;
}
return this.LoadAssembly(assemblyName);
}
}
}
}
......@@ -4,9 +4,9 @@
using System.Collections.Immutable;
using System.ComponentModel.Composition;
using System.Linq;
using System.Reflection;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.UnitTests;
namespace Microsoft.CodeAnalysis.Editor.UnitTests.Preview
{
......@@ -42,5 +42,19 @@ public IEnumerable<HostDiagnosticAnalyzerPackage> GetHostDiagnosticAnalyzerPacka
{
yield return _info;
}
public class FromFileLoader : IAnalyzerAssemblyLoader
{
public static FromFileLoader Instance = new FromFileLoader();
public void AddDependencyLocation(string fullPath)
{
}
public Assembly LoadFromPath(string fullPath)
{
return Assembly.LoadFrom(fullPath);
}
}
}
}
......@@ -3,7 +3,6 @@
using System;
using System.Linq;
using Microsoft.CodeAnalysis.CodeGeneration;
using Microsoft.CodeAnalysis.Editor.Implementation.NavigateTo;
using Microsoft.CodeAnalysis.Formatting;
using Microsoft.CodeAnalysis.Formatting.Rules;
using Microsoft.VisualStudio.Composition;
......@@ -75,17 +74,12 @@ private static Type[] GetNeutralAndCSharpAndVisualBasicTypes()
var types = new[]
{
// ROSLYN
typeof(Workspaces.NoCompilationLanguageServiceFactory),
typeof(Workspaces.NoCompilationContentTypeDefinitions),
typeof(Workspaces.NoCompilationContentTypeLanguageService),
typeof(Microsoft.CodeAnalysis.CSharp.IntroduceVariable.CSharpIntroduceVariableService), // Ensures that CSharpFeatures is included in the composition
typeof(Microsoft.CodeAnalysis.VisualBasic.IntroduceVariable.VisualBasicIntroduceVariableService), // Ensures that BasicFeatures is included in the composition
typeof(Microsoft.CodeAnalysis.Editor.CSharp.ContentType.ContentTypeDefinitions), // CSharp Content Type
typeof(Microsoft.CodeAnalysis.Editor.VisualBasic.ContentType.ContentTypeDefinitions), // VB Content Type
typeof(Microsoft.CodeAnalysis.Editor.Implementation.SmartIndent.SmartIndentProvider),
typeof(Microsoft.CodeAnalysis.Editor.VisualBasic.Formatting.Indentation.VisualBasicIndentationService),
typeof(Microsoft.CodeAnalysis.Editor.CSharp.Formatting.Indentation.CSharpIndentationService),
typeof(Microsoft.CodeAnalysis.Editor.Implementation.ForegroundNotification.ForegroundNotificationService),
typeof(Microsoft.CodeAnalysis.CSharp.CSharpCompilationFactoryService),
typeof(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationFactoryService),
typeof(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTreeFactoryServiceFactory), // CSharpServicesCore
......@@ -110,11 +104,10 @@ private static Type[] GetNeutralAndCSharpAndVisualBasicTypes()
typeof(CodeAnalysis.VisualBasic.CodeGeneration.VisualBasicSyntaxGenerator),
typeof(CSharp.LanguageServices.CSharpContentTypeLanguageService),
typeof(VisualBasic.LanguageServices.VisualBasicContentTypeLanguageService),
typeof(IncrementalCaches.SymbolTreeInfoIncrementalAnalyzerProvider),
typeof(CodeAnalysis.Diagnostics.EngineV2.InProcCodeAnalysisDiagnosticAnalyzerExecutor)
typeof(TestExportProvider)
};
return MinimalTestExportProvider.GetLanguageNeutralTypes()
return ServiceTestExportProvider.GetLanguageNeutralTypes()
.Concat(types)
.Concat(TestHelpers.GetAllTypesImplementingGivenInterface(typeof(Microsoft.CodeAnalysis.CSharp.Formatting.DefaultOperationProvider).Assembly, typeof(ISyntaxFormattingService)))
.Concat(TestHelpers.GetAllTypesImplementingGivenInterface(typeof(Microsoft.CodeAnalysis.VisualBasic.Formatting.DefaultOperationProvider).Assembly, typeof(ISyntaxFormattingService)))
......
// 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.ComponentModel.Composition;
using Microsoft.CodeAnalysis.Text;
using Microsoft.VisualStudio.Text;
namespace Microsoft.CodeAnalysis.Editor.UnitTests
{
[Export(typeof(TestExtensionErrorHandler))]
[Export(typeof(IExtensionErrorHandler))]
internal class TestExtensionErrorHandler : IExtensionErrorHandler
{
private List<Exception> _exceptions = new List<Exception>();
public void HandleError(object sender, Exception exception)
{
if (exception is ArgumentOutOfRangeException && ((ArgumentOutOfRangeException)exception).ParamName == "span")
{
// TODO: this is known bug 655591, fixed by Jack in changeset 931906
// Remove this workaround once the fix reaches the DP branch and we all move over.
return;
}
_exceptions.Add(exception);
}
public ICollection<Exception> GetExceptions()
{
// We'll clear off our list, so that way we don't report this for other tests
var newExceptions = _exceptions;
_exceptions = new List<Exception>();
return newExceptions;
}
}
}
// 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.Composition;
using Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces;
using Microsoft.CodeAnalysis.Host;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Options.Providers;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.UnitTests
{
[ExportWorkspaceServiceFactory(typeof(IOptionService), TestWorkspace.WorkspaceName), Shared]
internal class TestOptionsServiceFactory : IWorkspaceServiceFactory
{
private readonly ImmutableArray<Lazy<IOptionProvider>> _providers;
[ImportingConstructor]
public TestOptionsServiceFactory(
[ImportMany] IEnumerable<Lazy<IOptionProvider>> optionProviders)
{
_providers = optionProviders.ToImmutableArray();
}
public IWorkspaceService CreateService(HostWorkspaceServices workspaceServices)
{
// give out new option service per workspace
return new OptionServiceFactory.OptionService(
new GlobalOptionService(_providers, SpecializedCollections.EmptyEnumerable<Lazy<IOptionPersister>>()),
workspaceServices);
}
}
}
\ No newline at end of file
// 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.ComponentModel.Composition;
using System.Threading;
using Microsoft.CodeAnalysis.Editor.Host;
using Microsoft.CodeAnalysis.Shared.Utilities;
using VisualStudioIndicator = Microsoft.VisualStudio.Language.Intellisense.Utilities;
namespace Microsoft.CodeAnalysis.Editor.UnitTests.Utilities
{
[Export(typeof(IWaitIndicator))]
[Export(typeof(VisualStudioIndicator.IWaitIndicator))]
public sealed class TestWaitIndicator : IWaitIndicator, VisualStudioIndicator.IWaitIndicator
{
public static readonly TestWaitIndicator Default = new TestWaitIndicator();
private readonly IWaitContext _waitContext;
private readonly Microsoft.VisualStudio.Language.Intellisense.Utilities.IWaitContext _platformWaitContext = new UncancellableWaitContext();
public TestWaitIndicator()
: this(new UncancellableWaitContext())
{
}
internal TestWaitIndicator(IWaitContext waitContext)
{
_waitContext = waitContext;
}
IWaitContext IWaitIndicator.StartWait(string title, string message, bool allowCancel, bool showProgress)
{
return _waitContext;
}
WaitIndicatorResult IWaitIndicator.Wait(string title, string message, bool allowCancel, bool showProgress, Action<IWaitContext> action)
{
try
{
action(_waitContext);
}
catch (OperationCanceledException)
{
return WaitIndicatorResult.Canceled;
}
return WaitIndicatorResult.Completed;
}
VisualStudioIndicator.IWaitContext VisualStudioIndicator.IWaitIndicator.StartWait(string title, string message, bool allowCancel)
{
return _platformWaitContext;
}
VisualStudioIndicator.WaitIndicatorResult VisualStudioIndicator.IWaitIndicator.Wait(string title, string message, bool allowCancel, Action<VisualStudioIndicator.IWaitContext> action)
{
try
{
action(_platformWaitContext);
}
catch (OperationCanceledException)
{
return VisualStudioIndicator.WaitIndicatorResult.Canceled;
}
return VisualStudioIndicator.WaitIndicatorResult.Completed;
}
private sealed class UncancellableWaitContext : IWaitContext, VisualStudioIndicator.IWaitContext
{
public CancellationToken CancellationToken
{
get { return CancellationToken.None; }
}
public IProgressTracker ProgressTracker { get; } = new ProgressTracker();
public void UpdateProgress()
{
}
public bool AllowCancel
{
get
{
return false;
}
set
{
}
}
public string Message
{
get
{
return "";
}
set
{
}
}
public void Dispose()
{
}
}
}
}
......@@ -12,6 +12,7 @@
using Microsoft.CodeAnalysis.Editor.Shared.Utilities;
using Microsoft.CodeAnalysis.Host;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.CodeAnalysis.Test.Utilities;
using Microsoft.CodeAnalysis.Text;
using Microsoft.CodeAnalysis.Text.Shared.Extensions;
using Microsoft.VisualStudio.Composition;
......@@ -23,7 +24,7 @@ namespace Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces
{
public partial class TestWorkspace : Workspace
{
public const string WorkspaceName = "Test";
public const string WorkspaceName = TestWorkspaceName.Name;
public ExportProvider ExportProvider { get; }
......
......@@ -18,15 +18,6 @@ namespace Microsoft.CodeAnalysis.Editor.UnitTests
public static class MinimalTestExportProvider
{
private static readonly PartDiscovery s_partDiscovery = CreatePartDiscovery(Resolver.DefaultInstance);
private static readonly Lazy<ComposableCatalog> s_lazyLanguageNeutralCatalog = new Lazy<ComposableCatalog>(() => CreateAssemblyCatalog(GetVisualStudioAssemblies()).WithParts(CreateAssemblyCatalog(GetLanguageNeutralTypes().Select(t => t.Assembly).Distinct())));
public static ComposableCatalog LanguageNeutralCatalog
{
get
{
return s_lazyLanguageNeutralCatalog.Value;
}
}
public static Type[] GetLanguageNeutralTypes()
{
......@@ -51,8 +42,7 @@ public static Type[] GetLanguageNeutralTypes()
typeof(Microsoft.CodeAnalysis.Editor.UnitTests.TestOptionsServiceFactory),
typeof(SymbolMapping.SymbolMappingServiceFactory),
typeof(TestWaitIndicator),
typeof(TestExtensionErrorHandler),
typeof(TestExportProvider)
typeof(TestExtensionErrorHandler)
};
return types.Concat(TestHelpers.GetAllTypesWithStaticFieldsImplementingType(typeof(InternalSolutionCrawlerOptions).Assembly, typeof(Microsoft.CodeAnalysis.Options.IOption)))
......
// 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.Linq;
using Microsoft.CodeAnalysis.Formatting;
using Microsoft.VisualStudio.Composition;
namespace Microsoft.CodeAnalysis.Editor.UnitTests
{
/// <summary>
/// This type caches MEF compositions for our unit tests. MEF composition is a relatively expensive
/// operation and caching yields demonstrable benefits for testing.
///
/// These caches must be done in a thread static manner. Many of the stored values are non-frozen
/// WPF elements which will throw if shared between threads. It is legal for a given xUnit runner
/// to execute classes on different threads hence we must handle this scenario.
/// </summary>
public static class ServiceTestExportProvider
{
public static ComposableCatalog CreateAssemblyCatalog()
{
return MinimalTestExportProvider.CreateAssemblyCatalog(
GetLanguageNeutralTypes().Select(t => t.Assembly).Distinct().Concat(MinimalTestExportProvider.GetVisualStudioAssemblies()), MinimalTestExportProvider.CreateResolver());
}
public static Type[] GetLanguageNeutralTypes()
{
var types = new[]
{
// ROSLYN
typeof(Workspaces.NoCompilationLanguageServiceFactory),
typeof(Workspaces.NoCompilationContentTypeDefinitions),
typeof(Workspaces.NoCompilationContentTypeLanguageService),
typeof(Microsoft.CodeAnalysis.Editor.Implementation.SmartIndent.SmartIndentProvider),
typeof(Microsoft.CodeAnalysis.Editor.Implementation.ForegroundNotification.ForegroundNotificationService),
typeof(IncrementalCaches.SymbolTreeInfoIncrementalAnalyzerProvider),
typeof(CodeAnalysis.Diagnostics.EngineV2.InProcCodeAnalysisDiagnosticAnalyzerExecutor)
};
return MinimalTestExportProvider.GetLanguageNeutralTypes().Concat(types).Distinct().ToArray();
}
}
}
......@@ -29,6 +29,10 @@
<PlatformTarget>ARM</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Compilers\Core\Portable\CodeAnalysis.csproj">
<Project>{1ee8cad3-55f9-4d91-96b2-084641da9a6c}</Project>
<Name>CodeAnalysis</Name>
</ProjectReference>
<ProjectReference Include="..\..\Features\Core\Portable\Features.csproj">
<Project>{edc68a0e-c68d-4a74-91b7-bf38ec909888}</Project>
<Name>Features</Name>
......@@ -53,6 +57,10 @@
<Project>{80fddd00-9393-47f7-8baf-7e87ce011068}</Project>
<Name>ServiceHub</Name>
</ProjectReference>
<ProjectReference Include="..\..\Workspaces\VisualBasic\Portable\BasicWorkspace.vbproj">
<Project>{57ca988d-f010-4bf2-9a2e-07d6dcd2ff2c}</Project>
<Name>BasicWorkspace</Name>
</ProjectReference>
<ProjectReference Include="..\Core\EditorFeatures.csproj">
<Project>{3CDEEAB7-2256-418A-BEB2-620B5CB16302}</Project>
<Name>EditorFeatures</Name>
......@@ -89,11 +97,12 @@
<Compile Include="DirectoryExtensions.cs" />
<Compile Include="ExceptionUtilities.cs" />
<Compile Include="MinimalTestExportProvider.cs" />
<Compile Include="TestExportProvider.cs" />
<Compile Include="ServiceTestExportProvider.cs" />
<Compile Include="TestExtensionErrorHandler.cs" />
<Compile Include="TestOptionsServiceFactory.cs" />
<Compile Include="TestWaitIndicator.cs" />
<Compile Include="Remote\InProcRemostHostClient.cs" />
<Compile Include="TestWorkspaceName.cs" />
<Compile Include="Threading\ConditionalWpfFactAttribute.cs" />
<Compile Include="Threading\StaTaskScheduler.cs" />
<Compile Include="Threading\WpfFactAttribute.cs" />
......@@ -101,6 +110,11 @@
<Compile Include="Threading\WpfTestCase.cs" />
<Compile Include="Traits.cs" />
<Compile Include="VisualStudioSendKeys.cs" />
<Compile Include="Workspaces\NoCompilationConstants.cs" />
<Compile Include="Workspaces\NoCompilationContentTypeDefinitions.cs" />
<Compile Include="Workspaces\NoCompilationContentTypeLanguageService.cs" />
<Compile Include="Workspaces\NoCompilationDocumentDiagnosticAnalyzer.cs" />
<Compile Include="Workspaces\NoCompilationLanguageServiceFactory.cs" />
</ItemGroup>
<ItemGroup>
<InternalsVisibleTo Include="Roslyn.VisualStudio.RemoteHostClientMock" />
......@@ -121,12 +135,14 @@
<InternalsVisibleToTest Include="Roslyn.Compilers.VisualBasic.Test.Utilities" />
<InternalsVisibleToTest Include="Roslyn.InteractiveHost.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Editor.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Editor.UnitTests2" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Test.Utilities" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Next.UnitTests" />
</ItemGroup>
<ItemGroup>
<None Include="project.json" />
</ItemGroup>
<ItemGroup />
<Import Project="..\..\..\build\Targets\VSL.Imports.targets" />
<Import Project="..\..\..\build\Targets\Roslyn.Toolsets.Xunit.targets" />
</Project>
\ No newline at end of file
// 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.Linq;
using Microsoft.CodeAnalysis.CodeGeneration;
using Microsoft.CodeAnalysis.Editor.Implementation.NavigateTo;
using Microsoft.CodeAnalysis.Formatting;
using Microsoft.CodeAnalysis.Formatting.Rules;
using Microsoft.VisualStudio.Composition;
using Roslyn.Test.Utilities;
namespace Microsoft.CodeAnalysis.Editor.UnitTests
{
/// <summary>
/// This type caches MEF compositions for our unit tests. MEF composition is a relatively expensive
/// operation and caching yields demonstrable benefits for testing.
///
/// These caches must be done in a thread static manner. Many of the stored values are non-frozen
/// WPF elements which will throw if shared between threads. It is legal for a given xUnit runner
/// to execute classes on different threads hence we must handle this scenario.
/// </summary>
public static class TestExportProvider
{
[ThreadStatic]
private static Lazy<ComposableCatalog> t_lazyEntireAssemblyCatalogWithCSharpAndVisualBasic;
public static ComposableCatalog EntireAssemblyCatalogWithCSharpAndVisualBasic
{
get
{
if (t_lazyEntireAssemblyCatalogWithCSharpAndVisualBasic == null)
{
t_lazyEntireAssemblyCatalogWithCSharpAndVisualBasic = new Lazy<ComposableCatalog>(() => CreateAssemblyCatalogWithCSharpAndVisualBasic());
}
return t_lazyEntireAssemblyCatalogWithCSharpAndVisualBasic.Value;
}
}
[ThreadStatic]
private static Lazy<ExportProvider> t_lazyExportProviderWithCSharpAndVisualBasic;
public static ExportProvider ExportProviderWithCSharpAndVisualBasic
{
get
{
if (t_lazyExportProviderWithCSharpAndVisualBasic == null)
{
t_lazyExportProviderWithCSharpAndVisualBasic = new Lazy<ExportProvider>(CreateExportProviderWithCSharpAndVisualBasic);
}
return t_lazyExportProviderWithCSharpAndVisualBasic.Value;
}
}
[ThreadStatic]
private static Lazy<ComposableCatalog> t_lazyMinimumCatalogWithCSharpAndVisualBasic;
public static ComposableCatalog MinimumCatalogWithCSharpAndVisualBasic
{
get
{
if (t_lazyMinimumCatalogWithCSharpAndVisualBasic == null)
{
t_lazyMinimumCatalogWithCSharpAndVisualBasic = new Lazy<ComposableCatalog>(() => MinimalTestExportProvider.CreateTypeCatalog(GetNeutralAndCSharpAndVisualBasicTypes())
.WithParts(MinimalTestExportProvider.CreateAssemblyCatalog(MinimalTestExportProvider.GetVisualStudioAssemblies())));
}
return t_lazyMinimumCatalogWithCSharpAndVisualBasic.Value;
}
}
private static Type[] GetNeutralAndCSharpAndVisualBasicTypes()
{
var types = new[]
{
// ROSLYN
typeof(Workspaces.NoCompilationLanguageServiceFactory),
typeof(Workspaces.NoCompilationContentTypeDefinitions),
typeof(Workspaces.NoCompilationContentTypeLanguageService),
typeof(Microsoft.CodeAnalysis.CSharp.IntroduceVariable.CSharpIntroduceVariableService), // Ensures that CSharpFeatures is included in the composition
typeof(Microsoft.CodeAnalysis.VisualBasic.IntroduceVariable.VisualBasicIntroduceVariableService), // Ensures that BasicFeatures is included in the composition
typeof(Microsoft.CodeAnalysis.Editor.CSharp.ContentType.ContentTypeDefinitions), // CSharp Content Type
typeof(Microsoft.CodeAnalysis.Editor.VisualBasic.ContentType.ContentTypeDefinitions), // VB Content Type
typeof(Microsoft.CodeAnalysis.Editor.Implementation.SmartIndent.SmartIndentProvider),
typeof(Microsoft.CodeAnalysis.Editor.VisualBasic.Formatting.Indentation.VisualBasicIndentationService),
typeof(Microsoft.CodeAnalysis.Editor.CSharp.Formatting.Indentation.CSharpIndentationService),
typeof(Microsoft.CodeAnalysis.Editor.Implementation.ForegroundNotification.ForegroundNotificationService),
typeof(Microsoft.CodeAnalysis.CSharp.CSharpCompilationFactoryService),
typeof(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationFactoryService),
typeof(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTreeFactoryServiceFactory), // CSharpServicesCore
typeof(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTreeFactoryServiceFactory), // BasicServicesCore
typeof(CodeAnalysis.CSharp.CodeGeneration.CSharpCodeGenerationServiceFactory),
typeof(CodeAnalysis.VisualBasic.CodeGeneration.VisualBasicCodeGenerationServiceFactory),
typeof(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxFactsServiceFactory),
typeof(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxFactsServiceFactory),
typeof(CodeAnalysis.CSharp.CSharpSymbolDeclarationService),
typeof(CodeAnalysis.VisualBasic.VisualBasicSymbolDeclarationService),
typeof(CodeAnalysis.Editor.CSharp.LanguageServices.CSharpSymbolDisplayServiceFactory),
typeof(Microsoft.CodeAnalysis.Editor.CSharp.Interactive.CSharpInteractiveEvaluator),
typeof(CodeAnalysis.Editor.VisualBasic.LanguageServices.VisualBasicSymbolDisplayServiceFactory),
typeof(Microsoft.CodeAnalysis.Editor.VisualBasic.Interactive.VisualBasicInteractiveEvaluator),
typeof(CodeAnalysis.CSharp.Simplification.CSharpSimplificationService),
typeof(CodeAnalysis.VisualBasic.Simplification.VisualBasicSimplificationService),
typeof(CodeAnalysis.CSharp.Rename.CSharpRenameConflictLanguageService),
typeof(CodeAnalysis.VisualBasic.Rename.VisualBasicRenameRewriterLanguageServiceFactory),
typeof(CodeAnalysis.CSharp.CSharpSemanticFactsService),
typeof(CodeAnalysis.VisualBasic.VisualBasicSemanticFactsService),
typeof(CodeAnalysis.CSharp.CodeGeneration.CSharpSyntaxGenerator),
typeof(CodeAnalysis.VisualBasic.CodeGeneration.VisualBasicSyntaxGenerator),
typeof(CSharp.LanguageServices.CSharpContentTypeLanguageService),
typeof(VisualBasic.LanguageServices.VisualBasicContentTypeLanguageService),
typeof(IncrementalCaches.SymbolTreeInfoIncrementalAnalyzerProvider),
typeof(CodeAnalysis.Diagnostics.EngineV2.InProcCodeAnalysisDiagnosticAnalyzerExecutor)
};
return MinimalTestExportProvider.GetLanguageNeutralTypes()
.Concat(types)
.Concat(TestHelpers.GetAllTypesImplementingGivenInterface(typeof(Microsoft.CodeAnalysis.CSharp.Formatting.DefaultOperationProvider).Assembly, typeof(ISyntaxFormattingService)))
.Concat(TestHelpers.GetAllTypesImplementingGivenInterface(typeof(Microsoft.CodeAnalysis.VisualBasic.Formatting.DefaultOperationProvider).Assembly, typeof(ISyntaxFormattingService)))
.Concat(TestHelpers.GetAllTypesImplementingGivenInterface(typeof(Microsoft.CodeAnalysis.CSharp.Formatting.DefaultOperationProvider).Assembly, typeof(IFormattingRule)))
.Concat(TestHelpers.GetAllTypesImplementingGivenInterface(typeof(Microsoft.CodeAnalysis.VisualBasic.Formatting.DefaultOperationProvider).Assembly, typeof(IFormattingRule)))
.Concat(TestHelpers.GetAllTypesImplementingGivenInterface(typeof(Microsoft.CodeAnalysis.CSharp.Formatting.DefaultOperationProvider).Assembly, typeof(ICodeGenerationService)))
.Concat(TestHelpers.GetAllTypesImplementingGivenInterface(typeof(Microsoft.CodeAnalysis.VisualBasic.Formatting.DefaultOperationProvider).Assembly, typeof(ICodeGenerationService)))
.Concat(TestHelpers.GetAllTypesWithStaticFieldsImplementingType(typeof(Microsoft.CodeAnalysis.CSharp.Formatting.CSharpFormattingOptions).Assembly, typeof(Microsoft.CodeAnalysis.Options.IOption)))
.Distinct()
.ToArray();
}
/// <summary>
/// Create fresh ExportProvider that doesnt share anything with others.
/// test can use this export provider to create all new MEF components not shared with others.
/// </summary>
public static ExportProvider CreateExportProviderWithCSharpAndVisualBasic()
{
return MinimalTestExportProvider.CreateExportProvider(CreateAssemblyCatalogWithCSharpAndVisualBasic());
}
/// <summary>
/// Create fresh ComposableCatalog that doesnt share anything with others.
/// everything under this catalog should have been created from scratch that doesnt share anything with others.
/// </summary>
public static ComposableCatalog CreateAssemblyCatalogWithCSharpAndVisualBasic()
{
return MinimalTestExportProvider.CreateAssemblyCatalog(
GetNeutralAndCSharpAndVisualBasicTypes().Select(t => t.Assembly).Distinct().Concat(MinimalTestExportProvider.GetVisualStudioAssemblies()),
MinimalTestExportProvider.CreateResolver());
}
}
}
......@@ -4,16 +4,16 @@
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Composition;
using Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces;
using Microsoft.CodeAnalysis.Host;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Options.Providers;
using Microsoft.CodeAnalysis.Test.Utilities;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.UnitTests
{
[ExportWorkspaceServiceFactory(typeof(IOptionService), TestWorkspace.WorkspaceName), Shared]
[ExportWorkspaceServiceFactory(typeof(IOptionService), TestWorkspaceName.Name), Shared]
internal class TestOptionsServiceFactory : IWorkspaceServiceFactory
{
private readonly ImmutableArray<Lazy<IOptionProvider>> _providers;
......
// 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.Test.Utilities
{
public static class TestWorkspaceName
{
public const string Name = "Test";
}
}
......@@ -4,9 +4,38 @@
"xunit.runner.console": "2.2.0-beta1-build3239",
"Newtonsoft.Json": "8.0.3",
"Nerdbank.FullDuplexStream": "1.0.1",
"BasicUndo": "0.9.3",
"Microsoft.VisualStudio.Composition": "14.2.19-pre",
"RoslynDependencies.Microsoft.VisualStudio.Platform.VSEditor": "14.3.25407"
"BasicUndo": {
"version": "0.9.3",
"suppressParent": "all"
},
"Microsoft.VisualStudio.Composition": {
"version": "14.2.19-pre",
"suppressParent": "all"
},
"RoslynDependencies.Microsoft.VisualStudio.Platform.VSEditor": {
"version": "14.3.25407",
"suppressParent": "all"
},
"Microsoft.VisualStudio.Language.Intellisense": {
"version": "14.3.25407",
"suppressParent": "all"
},
"RoslynDependencies.Microsoft.VisualStudio.Language.CallHierarchy": {
"version": "14.3.25407",
"suppressParent": "all"
},
"RoslynDependencies.Microsoft.VisualStudio.Language.NavigateTo.Interfaces": {
"version": "14.3.25407",
"suppressParent": "all"
},
"Microsoft.VisualStudio.Text.UI": {
"version": "14.3.25407",
"suppressParent": "all"
},
"Microsoft.VisualStudio.Text.UI.Wpf": {
"version": "14.3.25407",
"suppressParent": "all"
}
},
"frameworks": {
"net46": { }
......
......@@ -207,6 +207,7 @@
<InternalsVisibleToTest Include="Roslyn.Services.Editor.UnitTests2" />
<InternalsVisibleToTest Include="Roslyn.Services.Editor.VisualBasic.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Services.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Test.Utilities" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="VBEditorResources.resx">
......
......@@ -52,6 +52,7 @@
<InternalsVisibleToTest Include="Roslyn.Services.Editor.VisualBasic.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.CSharp.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Test.Utilities" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\Compilers\CSharp\Portable\Syntax\LambdaUtilities.cs">
......
......@@ -61,6 +61,7 @@
<InternalsVisibleToTest Include="Roslyn.Services.Editor.VisualBasic.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Services.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Test.Utilities" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.CodeAnalysis.Shared.Extensions" />
......
......@@ -83,6 +83,7 @@
<InternalsVisibleToTest Include="Roslyn.Services.Editor.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Editor.UnitTests2" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.CSharp.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Test.Utilities" />
</ItemGroup>
<ItemGroup>
<Compile Include="Completion\CompletionProviders\CSharpReplCommandCompletionProvider.cs" />
......
......@@ -114,6 +114,7 @@
<InternalsVisibleToTest Include="Roslyn.Services.Editor.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Editor.UnitTests2" />
<InternalsVisibleToTest Include="Roslyn.Services.Editor.VisualBasic.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Test.Utilities" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="VBInteractiveEditorResources.resx">
......
......@@ -7,9 +7,6 @@ namespace Microsoft.VisualStudio.LanguageServices.Remote
{
internal static class RemoteHostOptions
{
[ExportOption]
public static readonly Option<bool> RemoteHostTest = new Option<bool>(OptionName, nameof(RemoteHostTest), defaultValue: false);
[ExportOption]
public static readonly Option<bool> RemoteHost = new Option<bool>(nameof(InternalFeatureOnOffOptions), nameof(RemoteHost), defaultValue: true,
storageLocations: new LocalUserProfileStorageLocation(InternalFeatureOnOffOptions.LocalRegistryPath + nameof(RemoteHost)));
......
......@@ -10,7 +10,7 @@
"version": "14.3.25407",
"suppressParent": "all"
},
"Microsoft.ServiceHub.Client": "1.0.103-rc",
"Microsoft.ServiceHub.Client": "0.13.78-alpha-gf674a884a9",
"Newtonsoft.Json": "8.0.3",
"RoslynDependencies.Microsoft.VisualStudio.Shell.Interop.15.0.DesignTime": "15.0.25718-Preview5",
"RoslynDependencies.Microsoft.VisualStudio.Workspace": "14.0.983-pre-ge167e81694",
......
......@@ -5,8 +5,8 @@
using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.VisualStudio.LanguageServices.Remote;
using Roslyn.VisualStudio.Test.Utilities.Remote;
using Microsoft.CodeAnalysis.Remote;
using Roslyn.Test.Utilities.Remote;
namespace Roslyn.VisualStudio.Next.UnitTests.Mocks
{
......
......@@ -13,7 +13,7 @@ public static HostServices CreateHostServices()
{
return MefV1HostServices.Create(
MinimalTestExportProvider.CreateExportProvider(
TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithPart(typeof(InProcRemoteHostClientFactory))).AsExportProvider());
ServiceTestExportProvider.CreateAssemblyCatalog().WithPart(typeof(InProcRemoteHostClientFactory))).AsExportProvider());
}
}
}
{
"dependencies": {
"Newtonsoft.Json": "8.0.3"
"Newtonsoft.Json": "8.0.3",
"Moq": "4.2.1402.2112",
"Microsoft.VisualStudio.Composition": "14.2.19-pre",
"Dev15BinariesForRoslyn": "4.0.0.0",
"Microsoft.VisualStudio.Imaging": "15.0.25604-Preview4",
"Microsoft.VisualStudio.Utilities": "15.0.25604-Preview4",
"Microsoft.VisualStudio.ImageCatalog": "15.0.25604-Preview4",
"Microsoft.VisualStudio.Text.UI": "15.0.25604-Preview4",
"Microsoft.VisualStudio.CoreUtility": "15.0.25604-Preview4",
"Microsoft.VisualStudio.Language.Intellisense": "15.0.25604-Preview4",
"Microsoft.VisualStudio.Text.Data": "15.0.25604-Preview4",
"Microsoft.VisualStudio.Text.Logic": "15.0.25604-Preview4",
"Microsoft.VisualStudio.Text.UI.Wpf": "15.0.25604-Preview4",
"Microsoft.VisualStudio.Editor": "15.0.25604-Preview4",
},
"frameworks": {
"net46": {}
"net46": { }
},
"runtimes": {
"win7": { }
......
......@@ -49,6 +49,7 @@
<InternalsVisibleToTest Include="Roslyn.Services.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.CSharp.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.CSharp.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Test.Utilities" />
</ItemGroup>
<ItemGroup>
<Compile Include="CaseCorrection\CSharpCaseCorrectionService.cs" />
......
......@@ -53,6 +53,7 @@
<InternalsVisibleToTest Include="Roslyn.Services.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.VisualBasic.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Services.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.Services.Test.Utilities" />
</ItemGroup>
<ItemGroup>
<Compile Include="CaseCorrection\VisualBasicCaseCorrectionService.Rewriter.vb" />
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册