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

moved file around to make remote host and its InProcRemoteHost available in workspace layer

上级 45c833ba

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
# Visual Studio 15
VisualStudioVersion = 15.0.25421.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysisTest", "src\Compilers\Core\CodeAnalysisTest\CodeAnalysisTest.csproj", "{A4C99B85-765C-4C65-9C2A-BB609AAB09E6}"
EndProject
......@@ -361,14 +361,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RepoUtil", "src\Tools\RepoU
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildTask", "src\Compilers\Core\MSBuildTask\MSBuildTask.csproj", "{7AD4FE65-9A30-41A6-8004-AA8F89BCB7F3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisualStudioTestUtilities.Next", "src\VisualStudio\TestUtilities.Next\VisualStudioTestUtilities.Next.csproj", "{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RemoteHostClientMock", "src\VisualStudio\RemoteHostClientMock\RemoteHostClientMock.csproj", "{7259740A-FD0E-480F-A7D4-08BE90AC9051}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServicesVisualStudio.Next", "src\VisualStudio\Core\Next\ServicesVisualStudio.Next.csproj", "{FE0D4BDD-1C30-488E-A870-854F5B8C5014}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisualStudioTest.Next", "src\VisualStudio\Core\Test.Next\VisualStudioTest.Next.csproj", "{2E1658E2-5045-4F85-A64C-C0ECCD39F719}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestUtilities.Workspaces", "src\Workspaces\TestUtilities.Workspace\TestUtilities.Workspaces.csproj", "{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
src\Compilers\Core\CommandLine\CommandLine.projitems*{06b26dcb-7a12-48ef-ae50-708593abd05f}*SharedItemsImports = 4
......@@ -3122,26 +3122,6 @@ Global
{7AD4FE65-9A30-41A6-8004-AA8F89BCB7F3}.Release|x64.Build.0 = Release|Any CPU
{7AD4FE65-9A30-41A6-8004-AA8F89BCB7F3}.Release|x86.ActiveCfg = Release|Any CPU
{7AD4FE65-9A30-41A6-8004-AA8F89BCB7F3}.Release|x86.Build.0 = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|ARM.Build.0 = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|x64.ActiveCfg = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|x64.Build.0 = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|x86.ActiveCfg = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|x86.Build.0 = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|Any CPU.Build.0 = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|ARM.ActiveCfg = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|ARM.Build.0 = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|x64.ActiveCfg = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|x64.Build.0 = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|x86.ActiveCfg = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|x86.Build.0 = Release|Any CPU
{7259740A-FD0E-480F-A7D4-08BE90AC9051}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7259740A-FD0E-480F-A7D4-08BE90AC9051}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7259740A-FD0E-480F-A7D4-08BE90AC9051}.Debug|ARM.ActiveCfg = Debug|Any CPU
......@@ -3202,6 +3182,26 @@ Global
{2E1658E2-5045-4F85-A64C-C0ECCD39F719}.Release|x64.Build.0 = Release|Any CPU
{2E1658E2-5045-4F85-A64C-C0ECCD39F719}.Release|x86.ActiveCfg = Release|Any CPU
{2E1658E2-5045-4F85-A64C-C0ECCD39F719}.Release|x86.Build.0 = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|ARM.Build.0 = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|x64.ActiveCfg = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|x64.Build.0 = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|x86.ActiveCfg = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Debug|x86.Build.0 = Debug|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|Any CPU.Build.0 = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|ARM.ActiveCfg = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|ARM.Build.0 = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|x64.ActiveCfg = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|x64.Build.0 = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|x86.ActiveCfg = Release|Any CPU
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -3368,9 +3368,9 @@ Global
{80FDDD00-9393-47F7-8BAF-7E87CE011068} = {55A62CFA-1155-46F1-ADF3-BEEE51B58AB5}
{1CA184D3-89CB-4074-BEC5-F8AEBA657D41} = {FD0FAF5F-1DED-485C-99FA-84B97F3A8EEC}
{7AD4FE65-9A30-41A6-8004-AA8F89BCB7F3} = {A41D1B99-F489-4C43-BBDF-96D61B19A6B9}
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C} = {8DBA5174-B0AA-4561-82B1-A46607697753}
{7259740A-FD0E-480F-A7D4-08BE90AC9051} = {8DBA5174-B0AA-4561-82B1-A46607697753}
{FE0D4BDD-1C30-488E-A870-854F5B8C5014} = {8DBA5174-B0AA-4561-82B1-A46607697753}
{2E1658E2-5045-4F85-A64C-C0ECCD39F719} = {8DBA5174-B0AA-4561-82B1-A46607697753}
{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C} = {55A62CFA-1155-46F1-ADF3-BEEE51B58AB5}
EndGlobalSection
EndGlobal
......@@ -281,7 +281,6 @@
<InternalsVisibleToTest Include="RoslynETAHost" />
<InternalsVisibleToTest Include="RoslynTaoActions" />
<InternalsVisibleToTest Include="Microsoft.VisualStudio.ErrorList.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Test.Utilities.Next" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Next.UnitTests" />
<InternalsVisibleToMoq Include="DynamicProxyGenAssembly2" />
<InternalsVisibleToTypeScript Include="Microsoft.VisualStudio.Alm.Shared.CodeAnalysisClient" />
......
......@@ -126,7 +126,6 @@
<ItemGroup>
<InternalsVisibleTo Include="Microsoft.CodeAnalysis.TestImpact.BuildManager" />
<InternalsVisibleTo Include="Roslyn.VisualStudio.RemoteHostClientMock" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Test.Utilities.Next" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Next.UnitTests" />
</ItemGroup>
<Import Project="..\..\..\..\build\Targets\VSL.Imports.targets" />
......
......@@ -62,6 +62,10 @@
<Project>{80fddd00-9393-47f7-8baf-7e87ce011068}</Project>
<Name>ServiceHub</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Workspaces\TestUtilities.Workspace\TestUtilities.Workspaces.csproj">
<Project>{78324e87-92d5-412c-9fa8-5cc2fbfbaf6c}</Project>
<Name>TestUtilities.Workspaces</Name>
</ProjectReference>
<ProjectReference Include="..\..\Core\Test\ServicesVisualStudioTest.vbproj">
<Project>{A1455D30-55FC-45EF-8759-3AEBDB13D940}</Project>
<Name>ServicesVisualStudioTest</Name>
......@@ -89,10 +93,6 @@
<Name>Features</Name>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\TestUtilities.Next\VisualStudioTestUtilities.Next.csproj">
<Project>{78324e87-92d5-412c-9fa8-5cc2fbfbaf6c}</Project>
<Name>VisualStudioTestUtilities.Next</Name>
</ProjectReference>
<ProjectReference Include="..\Next\ServicesVisualStudio.Next.csproj">
<Project>{fe0d4bdd-1c30-488e-a870-854f5b8c5014}</Project>
<Name>ServicesVisualStudio.Next</Name>
......
......@@ -7,7 +7,7 @@
using Microsoft.CodeAnalysis.Remote;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.VisualStudio.LanguageServices.Remote;
using Roslyn.VisualStudio.Test.Utilities.Remote;
using Roslyn.Test.Utilities.Remote;
namespace Roslyn.VisualStudio.DiagnosticsWindow.Remote
{
......
......@@ -46,16 +46,14 @@
<Name>ServiceHub</Name>
<IncludeOutputGroupsInVSIX>BuiltProjectOutputGroup%3b</IncludeOutputGroupsInVSIX>
</ProjectReference>
<ProjectReference Include="..\..\Workspaces\TestUtilities.Workspace\TestUtilities.Workspaces.csproj">
<Project>{78324e87-92d5-412c-9fa8-5cc2fbfbaf6c}</Project>
<Name>TestUtilities.Workspaces</Name>
</ProjectReference>
<ProjectReference Include="..\Core\Next\ServicesVisualStudio.Next.csproj">
<Project>{fe0d4bdd-1c30-488e-a870-854f5b8c5014}</Project>
<Name>ServicesVisualStudio.Next</Name>
</ProjectReference>
<ProjectReference Include="..\TestUtilities.Next\VisualStudioTestUtilities.Next.csproj">
<Project>{78324e87-92d5-412c-9fa8-5cc2fbfbaf6c}</Project>
<Name>VisualStudioTestUtilities.Next</Name>
<IncludeOutputGroupsInVSIX>BuiltProjectOutputGroup%3b</IncludeOutputGroupsInVSIX>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<NuGetPackageToIncludeInVsix Include="Nerdbank.FullDuplexStream" />
......
// 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.Threading;
using System.Threading.Tasks;
using StreamJsonRpc;
using Microsoft.CodeAnalysis.Remote;
namespace Roslyn.VisualStudio.Test.Utilities.Remote
{
/// <summary>
/// Helper type that abstract out JsonRpc communication with extra capability of
/// using raw stream to move over big chunk of data
/// </summary>
internal class JsonRpcClient : IDisposable
{
private readonly Stream _stream;
private readonly JsonRpc _rpc;
public JsonRpcClient(Stream stream, object callbackTarget, bool useThisAsCallback)
{
_stream = stream;
var target = useThisAsCallback ? this : callbackTarget;
_rpc = JsonRpc.Attach(stream, target);
_rpc.Disconnected += OnDisconnected;
}
public Task InvokeAsync(string targetName, params object[] arguments)
{
return _rpc.InvokeAsync(targetName, arguments);
}
public Task<T> InvokeAsync<T>(string targetName, params object[] arguments)
{
return _rpc.InvokeAsync<T>(targetName, arguments);
}
public Task InvokeAsync(string targetName, IEnumerable<object> arguments, Func<Stream, CancellationToken, Task> funcWithDirectStreamAsync, CancellationToken cancellationToken)
{
return Extensions.InvokeAsync(_rpc, targetName, arguments, funcWithDirectStreamAsync, cancellationToken);
}
public Task<T> InvokeAsync<T>(string targetName, IEnumerable<object> arguments, Func<Stream, CancellationToken, Task<T>> funcWithDirectStreamAsync, CancellationToken cancellationToken)
{
return Extensions.InvokeAsync(_rpc, targetName, arguments, funcWithDirectStreamAsync, cancellationToken);
}
public void Dispose()
{
OnDisposed();
_rpc.Dispose();
_stream.Dispose();
}
protected virtual void OnDisposed()
{
// do nothing
}
protected virtual void OnDisconnected(object sender, JsonRpcDisconnectedEventArgs e)
{
// do nothing
}
}
}
// 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.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Execution;
using Microsoft.CodeAnalysis.Remote;
using Roslyn.Utilities;
using StreamJsonRpc;
namespace Roslyn.VisualStudio.Test.Utilities.Remote
{
internal class JsonRpcSession : RemoteHostClient.Session
{
// communication channel related to snapshot information
private readonly SnapshotJsonRpcClient _snapshotClient;
// communication channel related to service information
private readonly ServiceJsonRpcClient _serviceClient;
// close connection when cancellation has raised
private readonly CancellationTokenRegistration _cancellationRegistration;
public JsonRpcSession(
ChecksumScope snapshot,
Stream snapshotStream,
object callbackTarget,
Stream serviceStream,
CancellationToken cancellationToken) :
base(snapshot, cancellationToken)
{
_snapshotClient = new SnapshotJsonRpcClient(this, snapshotStream);
_serviceClient = new ServiceJsonRpcClient(serviceStream, callbackTarget);
// dispose session when cancellation has raised
_cancellationRegistration = CancellationToken.Register(Dispose);
}
public override Task InvokeAsync(string targetName, params object[] arguments)
{
CancellationToken.ThrowIfCancellationRequested();
return _serviceClient.InvokeAsync(targetName, arguments.Concat(ChecksumScope.SolutionChecksum.Checksum.ToArray()).ToArray());
}
public override Task<T> InvokeAsync<T>(string targetName, params object[] arguments)
{
CancellationToken.ThrowIfCancellationRequested();
return _serviceClient.InvokeAsync<T>(targetName, arguments.Concat(ChecksumScope.SolutionChecksum.Checksum.ToArray()).ToArray());
}
public override Task InvokeAsync(string targetName, IEnumerable<object> arguments, Func<Stream, CancellationToken, Task> funcWithDirectStreamAsync)
{
CancellationToken.ThrowIfCancellationRequested();
return _serviceClient.InvokeAsync(targetName, arguments.Concat(ChecksumScope.SolutionChecksum.Checksum.ToArray()).ToArray(), funcWithDirectStreamAsync, CancellationToken);
}
public override Task<T> InvokeAsync<T>(string targetName, IEnumerable<object> arguments, Func<Stream, CancellationToken, Task<T>> funcWithDirectStreamAsync)
{
CancellationToken.ThrowIfCancellationRequested();
return _serviceClient.InvokeAsync<T>(targetName, arguments.Concat(ChecksumScope.SolutionChecksum.Checksum.ToArray()).ToArray(), funcWithDirectStreamAsync, CancellationToken);
}
protected override void OnDisposed()
{
// dispose cancellation registration
_cancellationRegistration.Dispose();
// dispose service and snapshot channels
_serviceClient.Dispose();
_snapshotClient.Dispose();
}
/// <summary>
/// Communication channel between VS feature and roslyn service in remote host.
///
/// this is the channel consumer of remote host client will playing with
/// </summary>
private class ServiceJsonRpcClient : JsonRpcClient
{
private readonly object _callbackTarget;
public ServiceJsonRpcClient(Stream stream, object callbackTarget)
: base(stream, callbackTarget, useThisAsCallback: false)
{
// this one doesn't need cancellation token since it has nothing to cancel
_callbackTarget = callbackTarget;
}
}
/// <summary>
/// Communication channel between remote host client and remote host.
///
/// this is framework's back channel to talk to remote host
///
/// for example, this will be used to deliver missing assets in remote host.
///
/// each remote host client will have its own back channel so that it can work isolated
/// with other clients.
/// </summary>
private class SnapshotJsonRpcClient : JsonRpcClient
{
private readonly JsonRpcSession _owner;
private readonly CancellationTokenSource _source;
public SnapshotJsonRpcClient(JsonRpcSession owner, Stream stream)
: base(stream, callbackTarget: null, useThisAsCallback: true)
{
_owner = owner;
_source = new CancellationTokenSource();
}
private ChecksumScope ChecksumScope => _owner.ChecksumScope;
/// <summary>
/// this is callback from remote host side to get asset associated with checksum from VS.
/// </summary>
public async Task RequestAssetAsync(int serviceId, byte[][] checksums, string streamName)
{
try
{
using (var stream = await DirectStream.GetAsync(streamName, _source.Token).ConfigureAwait(false))
{
using (var writer = new ObjectWriter(stream))
{
writer.WriteInt32(serviceId);
await WriteAssetAsync(writer, checksums).ConfigureAwait(false);
}
await stream.FlushAsync(_source.Token).ConfigureAwait(false);
}
}
catch (IOException)
{
// remote host side is cancelled (client stream connection is closed)
// can happen if pinned solution scope is disposed
}
catch (OperationCanceledException)
{
// rpc connection is closed.
// can happen if pinned solution scope is disposed
}
}
private async Task WriteAssetAsync(ObjectWriter writer, byte[][] checksums)
{
// special case
if (checksums.Length == 0)
{
await WriteNoAssetAsync(writer).ConfigureAwait(false);
return;
}
if (checksums.Length == 1)
{
await WriteOneAssetAsync(writer, checksums[0]).ConfigureAwait(false);
return;
}
await WriteMultipleAssetsAsync(writer, checksums).ConfigureAwait(false);
}
private Task WriteNoAssetAsync(ObjectWriter writer)
{
writer.WriteInt32(0);
return SpecializedTasks.EmptyTask;
}
private async Task WriteOneAssetAsync(ObjectWriter writer, byte[] checksum)
{
var service = ChecksumScope.Workspace.Services.GetRequiredService<ISolutionChecksumService>();
var checksumObject = service.GetChecksumObject(new Checksum(checksum), _source.Token);
writer.WriteInt32(1);
writer.WriteValue(checksum);
writer.WriteString(checksumObject.Kind);
await checksumObject.WriteObjectToAsync(writer, _source.Token).ConfigureAwait(false);
}
private async Task WriteMultipleAssetsAsync(ObjectWriter writer, byte[][] checksums)
{
var service = ChecksumScope.Workspace.Services.GetRequiredService<ISolutionChecksumService>();
var checksumObjectMap = service.GetChecksumObjects(checksums.Select(c => new Checksum(c)), _source.Token);
writer.WriteInt32(checksumObjectMap.Count);
foreach (var kv in checksumObjectMap)
{
var checksum = kv.Key;
var checksumObject = kv.Value;
writer.WriteValue(checksum.ToArray());
writer.WriteString(checksumObject.Kind);
await checksumObject.WriteObjectToAsync(writer, _source.Token).ConfigureAwait(false);
}
}
protected override void OnDisconnected(object sender, JsonRpcDisconnectedEventArgs e)
{
_source.Cancel();
}
}
}
}
\ No newline at end of file
......@@ -281,7 +281,7 @@
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Closed.UnitTests" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Test.Setup" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Test.Utilities" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Test.Utilities.Next" />
<InternalsVisibleToTest Include="Roslyn.Test.Utilities.Workspaces" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Services.UnitTests" />
<InternalsVisibleToTest Include="RoslynETAHost" />
<InternalsVisibleToTest Include="RoslynTaoActions" />
......
......@@ -70,7 +70,7 @@
</ItemGroup>
<ItemGroup>
<InternalsVisibleTo Include="Microsoft.CodeAnalysis.TestImpact.BuildManager" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Test.Utilities.Next" />
<InternalsVisibleToTest Include="Roslyn.Test.Utilities.Workspaces" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Next.UnitTests" />
</ItemGroup>
<ItemGroup>
......
......@@ -9,11 +9,12 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Execution;
using Microsoft.CodeAnalysis.Remote;
using Microsoft.VisualStudio.LanguageServices.Remote;
using Nerdbank;
using Roslyn.Utilities;
using StreamJsonRpc;
namespace Roslyn.VisualStudio.Test.Utilities.Remote
namespace Roslyn.Test.Utilities.Remote
{
internal class InProcRemoteHostClient : RemoteHostClient
{
......
......@@ -5,8 +5,8 @@
<ProjectGuid>{78324E87-92D5-412C-9FA8-5CC2FBFBAF6C}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Roslyn.VisualStudio.Test.Utilities</RootNamespace>
<AssemblyName>Roslyn.VisualStudio.Test.Utilities.Next</AssemblyName>
<RootNamespace>Roslyn.Test.Utilities.Workspaces</RootNamespace>
<AssemblyName>Roslyn.Test.Utilities.Workspaces</AssemblyName>
<PlatformTarget>x86</PlatformTarget>
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
<Nonshipping>true</Nonshipping>
......@@ -21,13 +21,13 @@
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\..\VisualStudio\Core\Next\Remote\JsonRpcClient.cs">
<Link>Remote\JsonRpcClient.cs</Link>
</Compile>
<Compile Include="..\..\VisualStudio\Core\Next\Remote\JsonRpcSession.cs">
<Link>Remote\JsonRpcSession.cs</Link>
</Compile>
<Compile Include="Remote\InProcRemostHostClient.cs" />
<Compile Include="Remote\JsonRpcClient.cs" />
<Compile Include="Remote\JsonRpcSession.cs" />
</ItemGroup>
<ItemGroup>
<InternalsVisibleTo Include="Roslyn.VisualStudio.RemoteHostClientMock" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Next.UnitTests" />
</ItemGroup>
<ItemGroup>
<None Include="project.json" />
......@@ -35,6 +35,10 @@
<ItemGroup>
<Reference Include="System" />
</ItemGroup>
<ItemGroup>
<InternalsVisibleTo Include="Roslyn.VisualStudio.RemoteHostClientMock" />
<InternalsVisibleToTest Include="Roslyn.VisualStudio.Next.UnitTests" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Workspaces\Core\Portable\Workspaces.csproj">
<Project>{5f8d2414-064a-4b3a-9b42-8e2a04246be5}</Project>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册