diff --git a/Roslyn.slnx b/Roslyn.slnx index 37ddceaf8c1a9..67f950c52efe3 100644 --- a/Roslyn.slnx +++ b/Roslyn.slnx @@ -386,6 +386,7 @@ + diff --git a/eng/config/PublishData.json b/eng/config/PublishData.json index 67349715f2fe3..01148a7dc3f24 100644 --- a/eng/config/PublishData.json +++ b/eng/config/PublishData.json @@ -12,6 +12,7 @@ "Microsoft.CodeAnalysis.Scripting.Common": "arcade", "Microsoft.CodeAnalysis.Workspaces.Common": "vssdk", "Microsoft.CodeAnalysis.Workspaces.MSBuild": "arcade", + "Microsoft.CodeAnalysis.Workspaces.MSBuild.Contracts": "arcade", "Microsoft.CodeAnalysis.Workspaces.Desktop": "arcade", "Microsoft.CodeAnalysis.Workspaces.Test.Utilities": "vs-impl", "Microsoft.CodeAnalysis.Compiler.Test.Resources": "vs-impl", diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/DotnetCliHelper.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/DotnetCliHelper.cs index 8d03e0374cb5f..0fb187995edcb 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/DotnetCliHelper.cs +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/DotnetCliHelper.cs @@ -5,7 +5,6 @@ using System.Composition; using System.Diagnostics; using System.Text; -using Microsoft.CodeAnalysis.Collections; using Microsoft.CodeAnalysis.Host.Mef; using Microsoft.Extensions.Logging; using Roslyn.Utilities; diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/CanonicalMiscFilesProjectLoader.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/CanonicalMiscFilesProjectLoader.cs index 18dafdc7e3ae0..7453465742ce9 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/CanonicalMiscFilesProjectLoader.cs +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/CanonicalMiscFilesProjectLoader.cs @@ -7,7 +7,6 @@ using Microsoft.CodeAnalysis.Features.Workspaces; using Microsoft.CodeAnalysis.LanguageServer.HostWorkspace; using Microsoft.CodeAnalysis.LanguageServer.HostWorkspace.ProjectTelemetry; -using Microsoft.CodeAnalysis.MSBuild; using Microsoft.CodeAnalysis.Options; using Microsoft.CodeAnalysis.ProjectSystem; using Microsoft.CodeAnalysis.Shared.Extensions; @@ -17,7 +16,6 @@ using Microsoft.CodeAnalysis.Workspaces.ProjectSystem; using Microsoft.Extensions.Logging; using Roslyn.Utilities; -using static Microsoft.CodeAnalysis.MSBuild.BuildHostProcessManager; namespace Microsoft.CodeAnalysis.LanguageServer.FileBasedPrograms; diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/FileBasedProgramsProjectSystem.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/FileBasedProgramsProjectSystem.cs index afa8e5e4dde15..c40dfcd86b561 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/FileBasedProgramsProjectSystem.cs +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/FileBasedProgramsProjectSystem.cs @@ -2,12 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System.Collections.Immutable; -using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Features.Workspaces; using Microsoft.CodeAnalysis.LanguageServer.HostWorkspace; using Microsoft.CodeAnalysis.LanguageServer.HostWorkspace.ProjectTelemetry; -using Microsoft.CodeAnalysis.MSBuild; using Microsoft.CodeAnalysis.Options; using Microsoft.CodeAnalysis.ProjectSystem; using Microsoft.CodeAnalysis.Shared.Extensions; @@ -17,7 +14,6 @@ using Microsoft.CommonLanguageServerProtocol.Framework; using Microsoft.Extensions.Logging; using Roslyn.LanguageServer.Protocol; -using static Microsoft.CodeAnalysis.MSBuild.BuildHostProcessManager; namespace Microsoft.CodeAnalysis.LanguageServer.FileBasedPrograms; diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/FileBasedProgramsWorkspaceProviderFactory.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/FileBasedProgramsWorkspaceProviderFactory.cs index 69f3b965c7a41..17312862df4d3 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/FileBasedProgramsWorkspaceProviderFactory.cs +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/FileBasedProgramsWorkspaceProviderFactory.cs @@ -8,7 +8,6 @@ using Microsoft.CodeAnalysis.LanguageServer.Handler; using Microsoft.CodeAnalysis.LanguageServer.HostWorkspace; using Microsoft.CodeAnalysis.LanguageServer.HostWorkspace.ProjectTelemetry; -using Microsoft.CodeAnalysis.MSBuild; using Microsoft.CodeAnalysis.Options; using Microsoft.CodeAnalysis.ProjectSystem; using Microsoft.CodeAnalysis.Shared.TestHooks; diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/VirtualProjectXmlProvider.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/VirtualProjectXmlProvider.cs index 9c05bb948bcee..93e0f39c7b909 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/VirtualProjectXmlProvider.cs +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/VirtualProjectXmlProvider.cs @@ -13,7 +13,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.CodeAnalysis.Diagnostics; using Microsoft.CodeAnalysis.Host.Mef; using Microsoft.CodeAnalysis.LanguageServer.HostWorkspace; using Microsoft.CodeAnalysis.Options; diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/GlobalUsings.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/GlobalUsings.cs new file mode 100644 index 0000000000000..95a318dfeea30 --- /dev/null +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/GlobalUsings.cs @@ -0,0 +1,9 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +extern alias MSBuildWorkspaces; +extern alias MSBuildWorkspacesContracts; + +global using MSBuildWorkspaces::Microsoft.CodeAnalysis.MSBuild; +global using MSBuildWorkspacesContracts::Microsoft.CodeAnalysis.MSBuild; diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/BinLogPathProvider.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/BinLogPathProvider.cs index 05958b1a0a796..0e0df7c168ba7 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/BinLogPathProvider.cs +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/BinLogPathProvider.cs @@ -4,7 +4,6 @@ using System.Composition; using Microsoft.CodeAnalysis.Host.Mef; -using Microsoft.CodeAnalysis.MSBuild; using Microsoft.CodeAnalysis.Options; using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.Composition; diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LanguageServerProjectLoader.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LanguageServerProjectLoader.cs index 7bbc4bdbb00f7..1cbdb4809236b 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LanguageServerProjectLoader.cs +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LanguageServerProjectLoader.cs @@ -6,21 +6,16 @@ using System.Diagnostics; using Microsoft.CodeAnalysis.Collections; using Microsoft.CodeAnalysis.Host; -using Microsoft.CodeAnalysis.LanguageServer.Handler.DebugConfiguration; using Microsoft.CodeAnalysis.LanguageServer.HostWorkspace.ProjectTelemetry; -using Microsoft.CodeAnalysis.MSBuild; using Microsoft.CodeAnalysis.Options; using Microsoft.CodeAnalysis.PooledObjects; using Microsoft.CodeAnalysis.ProjectSystem; -using Microsoft.CodeAnalysis.Shared.Collections; using Microsoft.CodeAnalysis.Shared.Extensions; using Microsoft.CodeAnalysis.Shared.TestHooks; -using Microsoft.CodeAnalysis.Shared.Utilities; using Microsoft.CodeAnalysis.Threading; using Microsoft.CodeAnalysis.Workspaces.ProjectSystem; using Microsoft.Extensions.Logging; using Roslyn.Utilities; -using static Microsoft.CodeAnalysis.MSBuild.BuildHostProcessManager; using LSP = Roslyn.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.LanguageServer.HostWorkspace; diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LanguageServerProjectSystem.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LanguageServerProjectSystem.cs index a7b83343ac0fa..65d9dc77abf42 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LanguageServerProjectSystem.cs +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LanguageServerProjectSystem.cs @@ -6,15 +6,12 @@ using System.Composition; using Microsoft.CodeAnalysis.Host.Mef; using Microsoft.CodeAnalysis.LanguageServer.HostWorkspace.ProjectTelemetry; -using Microsoft.CodeAnalysis.MSBuild; using Microsoft.CodeAnalysis.Options; using Microsoft.CodeAnalysis.ProjectSystem; using Microsoft.CodeAnalysis.Shared.TestHooks; using Microsoft.CodeAnalysis.Workspaces.ProjectSystem; using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.Composition; -using Roslyn.Utilities; -using static Microsoft.CodeAnalysis.MSBuild.BuildHostProcessManager; namespace Microsoft.CodeAnalysis.LanguageServer.HostWorkspace; @@ -87,7 +84,7 @@ public async Task OpenProjectsAsync(ImmutableArray projectFilePaths) if (!_projectFileExtensionRegistry.TryGetLanguageNameFromProjectPath(projectPath, DiagnosticReportingMode.Ignore, out var languageName)) return null; - var preferredBuildHostKind = GetKindForProject(projectPath); + var preferredBuildHostKind = BuildHostProcessManager.GetKindForProject(projectPath); var (buildHost, actualBuildHostKind) = await buildHostProcessManager.GetBuildHostWithFallbackAsync(preferredBuildHostKind, projectPath, cancellationToken); var loadedFile = await buildHost.LoadProjectFileAsync(projectPath, languageName, cancellationToken); diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LoadedProject.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LoadedProject.cs index b5236a94d0828..cce080e5590ca 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LoadedProject.cs +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LoadedProject.cs @@ -3,13 +3,8 @@ // See the LICENSE file in the project root for more information. using System.Collections.Immutable; -using Microsoft.CodeAnalysis.Host; using Microsoft.CodeAnalysis.LanguageServer.Handler.DebugConfiguration; -using Microsoft.CodeAnalysis.LanguageServer.HostWorkspace.FileWatching; -using Microsoft.CodeAnalysis.LanguageServer.HostWorkspace.ProjectTelemetry; -using Microsoft.CodeAnalysis.MSBuild; using Microsoft.CodeAnalysis.ProjectSystem; -using Microsoft.CodeAnalysis.Text; using Microsoft.CodeAnalysis.Workspaces.ProjectSystem; using Microsoft.Extensions.FileSystemGlobbing; using Microsoft.Extensions.Logging; diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/ProjectDependencyHelper.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/ProjectDependencyHelper.cs index 1dd9ed1a80826..0311e437f410d 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/ProjectDependencyHelper.cs +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/ProjectDependencyHelper.cs @@ -5,7 +5,6 @@ using System.Collections.Immutable; using Microsoft.CodeAnalysis.LanguageServer.Handler; using Microsoft.CodeAnalysis.LanguageServer.LanguageServer; -using Microsoft.CodeAnalysis.MSBuild; using Microsoft.CodeAnalysis.PooledObjects; using Microsoft.Extensions.Logging; using NuGet.ProjectModel; diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/ProjectTelemetry/ProjectLoadTelemetryReporter.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/ProjectTelemetry/ProjectLoadTelemetryReporter.cs index 51ebd9b53b3cf..2e151f051a4af 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/ProjectTelemetry/ProjectLoadTelemetryReporter.cs +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/ProjectTelemetry/ProjectLoadTelemetryReporter.cs @@ -6,7 +6,6 @@ using System.Composition; using Microsoft.CodeAnalysis.Host.Mef; using Microsoft.CodeAnalysis.LanguageServer.LanguageServer; -using Microsoft.CodeAnalysis.MSBuild; using Microsoft.Extensions.Logging; using Roslyn.Utilities; diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreParams.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreParams.cs index d8d97b8f8a781..6027b517257ee 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreParams.cs +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreParams.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; -using Roslyn.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.LanguageServer.Handler; diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Microsoft.CodeAnalysis.LanguageServer.csproj b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Microsoft.CodeAnalysis.LanguageServer.csproj index c32f01a669587..9bb6d9bd3ff34 100644 --- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Microsoft.CodeAnalysis.LanguageServer.csproj +++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Microsoft.CodeAnalysis.LanguageServer.csproj @@ -103,7 +103,10 @@ - + + + + diff --git a/src/NuGet/VS.ExternalAPIs.Roslyn.Package/VS.ExternalAPIs.Roslyn.Package.csproj b/src/NuGet/VS.ExternalAPIs.Roslyn.Package/VS.ExternalAPIs.Roslyn.Package.csproj index 438601629916c..a8ed455d0bd2f 100644 --- a/src/NuGet/VS.ExternalAPIs.Roslyn.Package/VS.ExternalAPIs.Roslyn.Package.csproj +++ b/src/NuGet/VS.ExternalAPIs.Roslyn.Package/VS.ExternalAPIs.Roslyn.Package.csproj @@ -100,6 +100,7 @@ <_File Include="$(ArtifactsBinDir)Microsoft.CodeAnalysis.VisualBasic\$(Configuration)\netstandard2.0\Microsoft.CodeAnalysis.VisualBasic.dll" TargetDir="" /> <_File Include="$(ArtifactsBinDir)Microsoft.CodeAnalysis.Workspaces.Desktop\$(Configuration)\net472\Microsoft.CodeAnalysis.Workspaces.Desktop.dll" TargetDir="" /> <_File Include="$(ArtifactsBinDir)Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost\$(Configuration)\net472\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.exe" TargetDir="" /> + <_File Include="$(ArtifactsBinDir)Microsoft.CodeAnalysis.Workspaces.MSBuild.Contracts\$(Configuration)\net472\Microsoft.CodeAnalysis.Workspaces.MSBuild.Contracts.dll" TargetDir="" /> <_File Include="$(ArtifactsBinDir)Microsoft.CodeAnalysis.Workspaces.MSBuild\$(Configuration)\net472\Microsoft.CodeAnalysis.Workspaces.MSBuild.dll" TargetDir="" /> <_File Include="$(ArtifactsBinDir)Microsoft.CodeAnalysis.Workspaces\$(Configuration)\netstandard2.0\Microsoft.CodeAnalysis.Workspaces.dll" TargetDir="" /> <_File Include="$(ArtifactsBinDir)Microsoft.CodeAnalysis\$(Configuration)\netstandard2.0\Microsoft.CodeAnalysis.dll" TargetDir="" /> diff --git a/src/Workspaces/MSBuild/BuildHost/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.csproj b/src/Workspaces/MSBuild/BuildHost/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.csproj index b8e8fa58b48fb..82b0a8440377a 100644 --- a/src/Workspaces/MSBuild/BuildHost/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.csproj +++ b/src/Workspaces/MSBuild/BuildHost/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.csproj @@ -84,6 +84,10 @@ + + + + @@ -101,6 +105,5 @@ - diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/DiagnosticLogItem.cs b/src/Workspaces/MSBuild/Contracts/DiagnosticLogItem.cs similarity index 100% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/DiagnosticLogItem.cs rename to src/Workspaces/MSBuild/Contracts/DiagnosticLogItem.cs diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/DocumentFileInfo.cs b/src/Workspaces/MSBuild/Contracts/DocumentFileInfo.cs similarity index 100% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/DocumentFileInfo.cs rename to src/Workspaces/MSBuild/Contracts/DocumentFileInfo.cs diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/FileGlobs.cs b/src/Workspaces/MSBuild/Contracts/FileGlobs.cs similarity index 100% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/FileGlobs.cs rename to src/Workspaces/MSBuild/Contracts/FileGlobs.cs diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/IBuildHost.cs b/src/Workspaces/MSBuild/Contracts/IBuildHost.cs similarity index 100% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/IBuildHost.cs rename to src/Workspaces/MSBuild/Contracts/IBuildHost.cs diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/IProjectFile.cs b/src/Workspaces/MSBuild/Contracts/IProjectFile.cs similarity index 100% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/IProjectFile.cs rename to src/Workspaces/MSBuild/Contracts/IProjectFile.cs diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/JsonSettings.cs b/src/Workspaces/MSBuild/Contracts/JsonSettings.cs similarity index 100% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/JsonSettings.cs rename to src/Workspaces/MSBuild/Contracts/JsonSettings.cs diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/MSBuildLocation.cs b/src/Workspaces/MSBuild/Contracts/MSBuildLocation.cs similarity index 100% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/MSBuildLocation.cs rename to src/Workspaces/MSBuild/Contracts/MSBuildLocation.cs diff --git a/src/Workspaces/MSBuild/Contracts/Microsoft.CodeAnalysis.Workspaces.MSBuild.Contracts.csproj b/src/Workspaces/MSBuild/Contracts/Microsoft.CodeAnalysis.Workspaces.MSBuild.Contracts.csproj new file mode 100644 index 0000000000000..aca3cfd069673 --- /dev/null +++ b/src/Workspaces/MSBuild/Contracts/Microsoft.CodeAnalysis.Workspaces.MSBuild.Contracts.csproj @@ -0,0 +1,31 @@ + + + + Library + Microsoft.CodeAnalysis + $(NetRoslynBuildHostNetCoreVersion);net472 + + + true + + .NET Compiler Platform ("Roslyn") MSBuild host RPC contracts. + + + + + + + + + + + + + + + + + + + + diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/MonoMSBuildDiscovery.cs b/src/Workspaces/MSBuild/Contracts/MonoMSBuildDiscovery.cs similarity index 93% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/MonoMSBuildDiscovery.cs rename to src/Workspaces/MSBuild/Contracts/MonoMSBuildDiscovery.cs index 05228c3bef8b6..a421450743744 100644 --- a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/MonoMSBuildDiscovery.cs +++ b/src/Workspaces/MSBuild/Contracts/MonoMSBuildDiscovery.cs @@ -8,7 +8,6 @@ using System.IO; using System.Linq; using System.Runtime.InteropServices; -using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.MSBuild; @@ -20,6 +19,9 @@ internal static class MonoMSBuildDiscovery private static string? s_monoMSBuildDirectory; private static string? s_monoVersionString; + private static void RequireUnix() + => Contract.ThrowIfTrue(Path.DirectorySeparatorChar == '\\'); + private static IEnumerable GetSearchPaths() { if (s_searchPaths == null) @@ -53,10 +55,7 @@ private static IEnumerable GetSearchPaths() /// private static string? RealPath(string path) { - if (PlatformInformation.IsWindows) - { - throw new PlatformNotSupportedException($"{nameof(RealPath)} can only be called on Unix."); - } + RequireUnix(); var ptr = Unix_realpath(path, IntPtr.Zero); var result = Marshal.PtrToStringAnsi(ptr); // uses UTF8 on Unix @@ -70,7 +69,7 @@ private static IEnumerable GetSearchPaths() /// private static string? GetMonoRuntimeExecutablePath() { - Contract.ThrowIfTrue(PlatformInformation.IsWindows); + RequireUnix(); if (s_monoRuntimeExecutablePath == null) { @@ -94,7 +93,7 @@ private static IEnumerable GetSearchPaths() /// private static string? GetMonoLibDirPath() { - Contract.ThrowIfTrue(PlatformInformation.IsWindows); + RequireUnix(); const string DefaultMonoLibPath = "/usr/lib/mono"; if (Directory.Exists(DefaultMonoLibPath)) @@ -131,7 +130,7 @@ private static IEnumerable GetSearchPaths() /// public static string? GetMonoMSBuildDirectory() { - Contract.ThrowIfTrue(PlatformInformation.IsWindows); + RequireUnix(); if (s_monoMSBuildDirectory == null) { @@ -164,7 +163,7 @@ private static IEnumerable GetSearchPaths() public static string? GetMonoMSBuildVersion() { - Contract.ThrowIfTrue(PlatformInformation.IsWindows); + RequireUnix(); if (s_monoVersionString == null) { diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/PackageReference.cs b/src/Workspaces/MSBuild/Contracts/PackageReference.cs similarity index 100% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/PackageReference.cs rename to src/Workspaces/MSBuild/Contracts/PackageReference.cs diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/ProjectFileInfo.cs b/src/Workspaces/MSBuild/Contracts/ProjectFileInfo.cs similarity index 98% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/ProjectFileInfo.cs rename to src/Workspaces/MSBuild/Contracts/ProjectFileInfo.cs index a82eb5019df94..320c754f5b8be 100644 --- a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/ProjectFileInfo.cs +++ b/src/Workspaces/MSBuild/Contracts/ProjectFileInfo.cs @@ -4,7 +4,6 @@ using System.Collections.Immutable; using System.Runtime.Serialization; -using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.MSBuild; @@ -144,7 +143,7 @@ internal sealed class ProjectFileInfo public ImmutableArray FileGlobs { get; init; } public override string ToString() - => RoslynString.IsNullOrWhiteSpace(TargetFramework) + => string.IsNullOrWhiteSpace(TargetFramework) ? FilePath ?? string.Empty : $"{FilePath} ({TargetFramework})"; diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/ProjectFileReference.cs b/src/Workspaces/MSBuild/Contracts/ProjectFileReference.cs similarity index 100% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/ProjectFileReference.cs rename to src/Workspaces/MSBuild/Contracts/ProjectFileReference.cs diff --git a/src/Workspaces/MSBuild/Contracts/PublicAPI.Shipped.txt b/src/Workspaces/MSBuild/Contracts/PublicAPI.Shipped.txt new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/Workspaces/MSBuild/Contracts/PublicAPI.Unshipped.txt b/src/Workspaces/MSBuild/Contracts/PublicAPI.Unshipped.txt new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/Request.cs b/src/Workspaces/MSBuild/Contracts/Request.cs similarity index 100% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/Request.cs rename to src/Workspaces/MSBuild/Contracts/Request.cs diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/Response.cs b/src/Workspaces/MSBuild/Contracts/Response.cs similarity index 100% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/Response.cs rename to src/Workspaces/MSBuild/Contracts/Response.cs diff --git a/src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/TextReaderExtensions.cs b/src/Workspaces/MSBuild/Contracts/TextReaderExtensions.cs similarity index 100% rename from src/Workspaces/MSBuild/BuildHost/Rpc/Contracts/TextReaderExtensions.cs rename to src/Workspaces/MSBuild/Contracts/TextReaderExtensions.cs diff --git a/src/Workspaces/MSBuild/Core/GlobalUsings.cs b/src/Workspaces/MSBuild/Core/GlobalUsings.cs new file mode 100644 index 0000000000000..4fea05d8e5047 --- /dev/null +++ b/src/Workspaces/MSBuild/Core/GlobalUsings.cs @@ -0,0 +1,6 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +extern alias Contracts; +global using Contracts::Microsoft.CodeAnalysis.MSBuild; diff --git a/src/Workspaces/MSBuild/Core/MSBuild/BuildHostProcessKind.cs b/src/Workspaces/MSBuild/Core/MSBuild/BuildHostProcessKind.cs new file mode 100644 index 0000000000000..fcae4026705fa --- /dev/null +++ b/src/Workspaces/MSBuild/Core/MSBuild/BuildHostProcessKind.cs @@ -0,0 +1,12 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CodeAnalysis.MSBuild; + +internal enum BuildHostProcessKind +{ + NetCore, + NetFramework, + Mono +} diff --git a/src/Workspaces/MSBuild/Core/MSBuild/BuildHostProcessManager.cs b/src/Workspaces/MSBuild/Core/MSBuild/BuildHostProcessManager.cs index 8d1234c4f71c0..eeb621f10036e 100644 --- a/src/Workspaces/MSBuild/Core/MSBuild/BuildHostProcessManager.cs +++ b/src/Workspaces/MSBuild/Core/MSBuild/BuildHostProcessManager.cs @@ -412,13 +412,6 @@ public static BuildHostProcessKind GetKindForProject(string projectFilePath) #endif } - public enum BuildHostProcessKind - { - NetCore, - NetFramework, - Mono - } - private sealed class BuildHostProcess : IAsyncDisposable { private readonly ILogger? _logger; diff --git a/src/Workspaces/MSBuild/Core/Microsoft.CodeAnalysis.Workspaces.MSBuild.csproj b/src/Workspaces/MSBuild/Core/Microsoft.CodeAnalysis.Workspaces.MSBuild.csproj index d782e84f1e211..b61934aff1ff5 100644 --- a/src/Workspaces/MSBuild/Core/Microsoft.CodeAnalysis.Workspaces.MSBuild.csproj +++ b/src/Workspaces/MSBuild/Core/Microsoft.CodeAnalysis.Workspaces.MSBuild.csproj @@ -46,6 +46,9 @@ true + + + @@ -56,7 +59,6 @@ InternalUtilities\GlobalAssemblyCache.cs - diff --git a/src/Workspaces/MSBuild/Test/BuildHostProcessManagerTests.cs b/src/Workspaces/MSBuild/Test/BuildHostProcessManagerTests.cs index 4b3b2604b5502..058279e9b7f5c 100644 --- a/src/Workspaces/MSBuild/Test/BuildHostProcessManagerTests.cs +++ b/src/Workspaces/MSBuild/Test/BuildHostProcessManagerTests.cs @@ -2,17 +2,12 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System.Collections.Generic; -using System.Collections.Immutable; using System.Linq; -using Moq; using Roslyn.Test.Utilities; using Xunit; namespace Microsoft.CodeAnalysis.MSBuild.UnitTests; -using BuildHostProcessKind = BuildHostProcessManager.BuildHostProcessKind; - public sealed class BuildHostProcessManagerTests { [Fact] diff --git a/src/Workspaces/MSBuild/Test/DefaultBinLogPathProviderTests.cs b/src/Workspaces/MSBuild/Test/DefaultBinLogPathProviderTests.cs index 6dd268476fa3b..f7897899403a8 100644 --- a/src/Workspaces/MSBuild/Test/DefaultBinLogPathProviderTests.cs +++ b/src/Workspaces/MSBuild/Test/DefaultBinLogPathProviderTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -6,10 +6,11 @@ using System.IO; using System.Linq; using Xunit; -using static Microsoft.CodeAnalysis.MSBuild.MSBuildProjectLoader; namespace Microsoft.CodeAnalysis.MSBuild.UnitTests; +using BinLogPathProvider = MSBuildProjectLoader.BinLogPathProvider; + public sealed class DefaultBinLogPathProviderTests { private const string DefaultFileName = "msbuild"; diff --git a/src/Workspaces/MSBuild/Test/GlobalUsings.cs b/src/Workspaces/MSBuild/Test/GlobalUsings.cs new file mode 100644 index 0000000000000..95a318dfeea30 --- /dev/null +++ b/src/Workspaces/MSBuild/Test/GlobalUsings.cs @@ -0,0 +1,9 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +extern alias MSBuildWorkspaces; +extern alias MSBuildWorkspacesContracts; + +global using MSBuildWorkspaces::Microsoft.CodeAnalysis.MSBuild; +global using MSBuildWorkspacesContracts::Microsoft.CodeAnalysis.MSBuild; diff --git a/src/Workspaces/MSBuild/Test/Microsoft.CodeAnalysis.Workspaces.MSBuild.UnitTests.csproj b/src/Workspaces/MSBuild/Test/Microsoft.CodeAnalysis.Workspaces.MSBuild.UnitTests.csproj index 28559303b82a4..3130fb3db8718 100644 --- a/src/Workspaces/MSBuild/Test/Microsoft.CodeAnalysis.Workspaces.MSBuild.UnitTests.csproj +++ b/src/Workspaces/MSBuild/Test/Microsoft.CodeAnalysis.Workspaces.MSBuild.UnitTests.csproj @@ -7,9 +7,12 @@ $(NetRoslyn);net472 + + + + - diff --git a/src/Workspaces/MSBuild/Test/NetCoreTests.cs b/src/Workspaces/MSBuild/Test/NetCoreTests.cs index 571170f6eb392..ea714bf4b73c6 100644 --- a/src/Workspaces/MSBuild/Test/NetCoreTests.cs +++ b/src/Workspaces/MSBuild/Test/NetCoreTests.cs @@ -133,7 +133,7 @@ public async Task TestOpenInMemoryProject_NetCoreApp() await using var buildHostProcessManager = new BuildHostProcessManager(ImmutableDictionary.Empty); - var buildHost = await buildHostProcessManager.GetBuildHostAsync(BuildHostProcessManager.BuildHostProcessKind.NetCore, CancellationToken.None); + var buildHost = await buildHostProcessManager.GetBuildHostAsync(BuildHostProcessKind.NetCore, CancellationToken.None); var projectFile = await buildHost.LoadProjectAsync(projectFilePath, content, LanguageNames.CSharp, CancellationToken.None); var projectFileInfo = (await projectFile.GetProjectFileInfosAsync(CancellationToken.None)).Single(); diff --git a/src/Workspaces/MSBuild/Test/RpcTests.cs b/src/Workspaces/MSBuild/Test/RpcTests.cs index a42b14094941b..0aecfab1a2c01 100644 --- a/src/Workspaces/MSBuild/Test/RpcTests.cs +++ b/src/Workspaces/MSBuild/Test/RpcTests.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +extern alias MSBuildWorkspaces; + using System; using System.Collections.Generic; using System.IO.Pipes; @@ -10,6 +12,8 @@ using Roslyn.Test.Utilities; using Xunit; +using NamedPipeUtil = MSBuildWorkspaces::Microsoft.CodeAnalysis.NamedPipeUtil; + namespace Microsoft.CodeAnalysis.MSBuild.UnitTests; /// diff --git a/src/Workspaces/MSBuild/Test/Utilities/DotNetSdkMSBuildInstalled.cs b/src/Workspaces/MSBuild/Test/Utilities/DotNetSdkMSBuildInstalled.cs index bcfd233935c6d..6fc7abce2bf52 100644 --- a/src/Workspaces/MSBuild/Test/Utilities/DotNetSdkMSBuildInstalled.cs +++ b/src/Workspaces/MSBuild/Test/Utilities/DotNetSdkMSBuildInstalled.cs @@ -42,7 +42,7 @@ private static bool HasNetCoreSdkForSolution(string solution) { buildHostProcessManager = new BuildHostProcessManager(); - var buildHost = buildHostProcessManager.GetBuildHostAsync(BuildHostProcessManager.BuildHostProcessKind.NetCore, CancellationToken.None).Result; + var buildHost = buildHostProcessManager.GetBuildHostAsync(BuildHostProcessKind.NetCore, CancellationToken.None).Result; return buildHost.HasUsableMSBuildAsync(solution, CancellationToken.None).Result; } diff --git a/src/Workspaces/MSBuild/Test/Utilities/VisualStudioMSBuildInstalled.cs b/src/Workspaces/MSBuild/Test/Utilities/VisualStudioMSBuildInstalled.cs index 9d3864be2b924..347ce870f7f84 100644 --- a/src/Workspaces/MSBuild/Test/Utilities/VisualStudioMSBuildInstalled.cs +++ b/src/Workspaces/MSBuild/Test/Utilities/VisualStudioMSBuildInstalled.cs @@ -32,7 +32,7 @@ private static bool IsVisualStudioMSBuildInstalled() { buildHostProcessManager = new BuildHostProcessManager(); - var buildHost = buildHostProcessManager.GetBuildHostAsync(BuildHostProcessManager.BuildHostProcessKind.NetFramework, CancellationToken.None).Result; + var buildHost = buildHostProcessManager.GetBuildHostAsync(BuildHostProcessKind.NetFramework, CancellationToken.None).Result; // HACK: for .NET Framework build hosts, we don't actually need the project path to determine whether there's a usable VS -- so we can pass any file name here. return buildHost.HasUsableMSBuildAsync("NonExistent.sln", CancellationToken.None).Result;