diff --git a/build/Targets/Packages.props b/build/Targets/Packages.props index ce31808aea8d083afb5250640e8286b3119cddec..6a41c3f92351d7dbc010e2b9c9b2f87a02a10b78 100644 --- a/build/Targets/Packages.props +++ b/build/Targets/Packages.props @@ -98,6 +98,7 @@ 15.0.26730-alpha 15.0.26730-alpha 15.3.178-pre-g209fb07c2e + 2.3.6152103 10.0.0.0-alpha 14.0.249-master2E2DC10C 1.11.2290 diff --git a/src/Compilers/Extension/CompilerExtension.csproj b/src/Compilers/Extension/CompilerExtension.csproj index 7a79b854b1161a3fb7c477b41780acb1c7358f72..afe5d3ba4ed1647fcc46fa611dfa1705c684f1f8 100644 --- a/src/Compilers/Extension/CompilerExtension.csproj +++ b/src/Compilers/Extension/CompilerExtension.csproj @@ -134,6 +134,7 @@ TargetFramework=net46 + @@ -141,5 +142,11 @@ + + + + + + \ No newline at end of file diff --git a/src/Compilers/Extension/CompilerPackage.cs b/src/Compilers/Extension/CompilerPackage.cs index 510b2dfdef2d954c889f7533469acc1512999d75..28a20497a619cafa578092fc57d201f5b257d332 100644 --- a/src/Compilers/Extension/CompilerPackage.cs +++ b/src/Compilers/Extension/CompilerPackage.cs @@ -13,6 +13,8 @@ namespace Roslyn.Compilers.Extension [ProvideAutoLoad(UIContextGuids.SolutionExists)] public sealed class CompilerPackage : Package { + public static string RoslynHive = null; + protected override void Initialize() { base.Initialize(); @@ -30,14 +32,14 @@ protected override void Initialize() { var skuName = registryParts[2]; var hiveName = registryParts[3]; - var roslynHive = string.Format(@"{0}.{1}", registryParts[2], registryParts[3]); + RoslynHive = string.Format(@"{0}.{1}", registryParts[2], registryParts[3]); - WriteMSBuildFiles(packagePath, roslynHive); + WriteMSBuildFiles(packagePath, RoslynHive); try { Microsoft.Build.Evaluation.ProjectCollection.GlobalProjectCollection.DisableMarkDirty = true; - Microsoft.Build.Evaluation.ProjectCollection.GlobalProjectCollection.SetGlobalProperty("RoslynHive", roslynHive); + Microsoft.Build.Evaluation.ProjectCollection.GlobalProjectCollection.SetGlobalProperty("RoslynHive", RoslynHive); } finally { diff --git a/src/Compilers/Extension/SetGlobalGlobalPropertiesForCPS.cs b/src/Compilers/Extension/SetGlobalGlobalPropertiesForCPS.cs new file mode 100644 index 0000000000000000000000000000000000000000..b73d958b1360f81ebeba99d12916ac6c9357bba1 --- /dev/null +++ b/src/Compilers/Extension/SetGlobalGlobalPropertiesForCPS.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Immutable; +using System.ComponentModel.Composition; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.VisualStudio.ProjectSystem; +using Microsoft.VisualStudio.ProjectSystem.Build; +using Microsoft.VisualStudio.Shell.Interop; + +namespace Roslyn.Compilers.Extension +{ + [ExportBuildGlobalPropertiesProvider] + [AppliesTo("(" + ProjectCapabilities.CSharp + " | " + ProjectCapabilities.VB + ")" + " & " + ProjectCapabilities.LanguageService)] + public class SetGlobalGlobalPropertiesForCPS : StaticGlobalPropertiesProviderBase + { + [ImportingConstructor] + public SetGlobalGlobalPropertiesForCPS(IProjectService projectService) + : base(projectService.Services) + { + } + + public override Task> GetGlobalPropertiesAsync(CancellationToken cancellationToken) + { + return CompilerPackage.RoslynHive != null + ? Task.FromResult>(Empty.PropertiesMap.Add("RoslynHive", CompilerPackage.RoslynHive)) + : Task.FromResult>(Empty.PropertiesMap); + } + } +} diff --git a/src/Compilers/Extension/source.extension.vsixmanifest b/src/Compilers/Extension/source.extension.vsixmanifest index 724f3eb4f66bde862eddf4b461b5c2494615763c..42c393f43042a29af6fe7c252aec7842035ecb96 100644 --- a/src/Compilers/Extension/source.extension.vsixmanifest +++ b/src/Compilers/Extension/source.extension.vsixmanifest @@ -12,6 +12,7 @@ +