diff --git a/source/Cosmos.VS.ProjectSystem/CompatMocks/ConfiguredProjectMock.cs b/source/Cosmos.VS.ProjectSystem/CompatMocks/ConfiguredProjectMock.cs
new file mode 100644
index 000000000..95b601480
--- /dev/null
+++ b/source/Cosmos.VS.ProjectSystem/CompatMocks/ConfiguredProjectMock.cs
@@ -0,0 +1,17 @@
+using System.ComponentModel.Composition;
+using Microsoft.VisualStudio.ProjectSystem;
+
+namespace Cosmos.VS.ProjectSystem.CompatMocks
+{
+ [Export]
+ internal sealed class ConfiguredProjectMock
+ {
+ [ImportingConstructor]
+ public ConfiguredProjectMock(ConfiguredProjectServicesMock configuredProjectServicesMock)
+ {
+ Services = configuredProjectServicesMock;
+ }
+
+ public ConfiguredProjectServicesMock Services { get; }
+ }
+}
diff --git a/source/Cosmos.VS.ProjectSystem/CompatMocks/ConfiguredProjectServicesMock.cs b/source/Cosmos.VS.ProjectSystem/CompatMocks/ConfiguredProjectServicesMock.cs
new file mode 100644
index 000000000..ff5c83518
--- /dev/null
+++ b/source/Cosmos.VS.ProjectSystem/CompatMocks/ConfiguredProjectServicesMock.cs
@@ -0,0 +1,24 @@
+using System.ComponentModel.Composition;
+using Microsoft.VisualStudio.Composition;
+using Microsoft.VisualStudio.ProjectSystem;
+using Microsoft.VisualStudio.ProjectSystem.Properties;
+
+namespace Cosmos.VS.ProjectSystem.CompatMocks
+{
+ [Export]
+ internal sealed class ConfiguredProjectServicesMock
+ {
+ [ImportingConstructor]
+ public ConfiguredProjectServicesMock(
+ IAdditionalRuleDefinitionsService additionalRuleDefinitions,
+ IPropertyPagesCatalogProvider propertyPagesCatalog)
+ {
+ AdditionalRuleDefinitions = additionalRuleDefinitions;
+ PropertyPagesCatalog = propertyPagesCatalog;
+ }
+
+ public IAdditionalRuleDefinitionsService AdditionalRuleDefinitions { get; }
+
+ public IPropertyPagesCatalogProvider PropertyPagesCatalog { get; }
+ }
+}
diff --git a/source/Cosmos.VS.ProjectSystem/Cosmos.VS.ProjectSystem.csproj b/source/Cosmos.VS.ProjectSystem/Cosmos.VS.ProjectSystem.csproj
index 642af86e5..40533633b 100644
--- a/source/Cosmos.VS.ProjectSystem/Cosmos.VS.ProjectSystem.csproj
+++ b/source/Cosmos.VS.ProjectSystem/Cosmos.VS.ProjectSystem.csproj
@@ -37,6 +37,7 @@
+
diff --git a/source/Cosmos.VS.ProjectSystem/ProjectProperties.cs b/source/Cosmos.VS.ProjectSystem/ProjectProperties.cs
index f6d383409..c1d2dc4f6 100644
--- a/source/Cosmos.VS.ProjectSystem/ProjectProperties.cs
+++ b/source/Cosmos.VS.ProjectSystem/ProjectProperties.cs
@@ -1,19 +1,25 @@
using System.Composition;
+using Microsoft.VisualStudio.Composition;
using Microsoft.VisualStudio.ProjectSystem;
using Microsoft.VisualStudio.ProjectSystem.Properties;
+using Cosmos.VS.ProjectSystem.CompatMocks;
+
namespace Cosmos.VS.ProjectSystem
{
[Export]
internal partial class ProjectProperties : StronglyTypedPropertyAccess
{
+ public new ConfiguredProjectMock ConfiguredProject { get; }
+
///
/// Initializes a new instance of the class.
///
[ImportingConstructor]
- public ProjectProperties(ConfiguredProject configuredProject)
+ public ProjectProperties(ConfiguredProject configuredProject, ConfiguredProjectMock configuredProjectMock)
: base(configuredProject)
{
+ ConfiguredProject = configuredProjectMock;
}
///
diff --git a/source/Cosmos.VS.ProjectSystem/ProjectSystem/VS/Debug/DebugLaunchProvider.cs b/source/Cosmos.VS.ProjectSystem/ProjectSystem/VS/Debug/DebugLaunchProvider.cs
index ac99b7c24..59474dcbc 100644
--- a/source/Cosmos.VS.ProjectSystem/ProjectSystem/VS/Debug/DebugLaunchProvider.cs
+++ b/source/Cosmos.VS.ProjectSystem/ProjectSystem/VS/Debug/DebugLaunchProvider.cs
@@ -22,18 +22,23 @@ namespace Cosmos.VS.ProjectSystem.VS.Debug
{
private static readonly Guid CosmosDebugEngineGuid = new Guid("fa1da3a6-66ff-4c65-b077-e65f7164ef83");
- private ProjectProperties _projectProperties;
- private IBootableProperties _bootableProperties;
+ private readonly ProjectProperties _projectProperties;
+ private readonly IBootableProperties _bootableProperties;
+
+ private readonly IProjectLockService _projectLockService;
[ImportingConstructor]
public DebugLaunchProvider(
ConfiguredProject configuredProject,
ProjectProperties projectProperties,
- IBootableProperties bootableProperties)
+ IBootableProperties bootableProperties,
+ IProjectLockService projectLockService)
: base(configuredProject)
{
_projectProperties = projectProperties;
_bootableProperties = bootableProperties;
+
+ _projectLockService = projectLockService;
}
public override Task CanLaunchAsync(DebugLaunchOptions aLaunchOptions) => TplExtensions.TrueTask;
@@ -110,9 +115,7 @@ namespace Cosmos.VS.ProjectSystem.VS.Debug
private async Task GetPropertyAsync(string propertyName)
{
- var projectLockService = ConfiguredProject.UnconfiguredProject.ProjectService.Services.ProjectLockService;
-
- using (var projectReadLock = await projectLockService.ReadLockAsync())
+ using (var projectReadLock = await _projectLockService.ReadLockAsync())
{
var project = await projectReadLock.GetProjectAsync(ConfiguredProject);
return project.GetPropertyValue(propertyName);
diff --git a/source/Cosmos.VS.ProjectSystem/ProjectSystem/VS/PlugsProjectTreeProvider.cs b/source/Cosmos.VS.ProjectSystem/ProjectSystem/VS/PlugsProjectTreeProvider.cs
index a329aab60..7a9186336 100644
--- a/source/Cosmos.VS.ProjectSystem/ProjectSystem/VS/PlugsProjectTreeProvider.cs
+++ b/source/Cosmos.VS.ProjectSystem/ProjectSystem/VS/PlugsProjectTreeProvider.cs
@@ -17,14 +17,18 @@ namespace Cosmos.VS.ProjectSystem.VS
private static readonly ProjectTreeFlags PlugsProjectTreeFlags = ProjectTreeFlags.Create(
ProjectTreeFlags.Common.BubbleUp | ProjectTreeFlags.Common.VirtualFolder);
+ private readonly IActiveConfiguredProjectSubscriptionService _activeConfiguredProjectSubscriptionService;
+
private IDisposable _itemsSubscriptionLink;
[ImportingConstructor]
protected PlugsProjectTreeProvider(
IProjectThreadingService threadingService,
- UnconfiguredProject unconfiguredProject)
+ UnconfiguredProject unconfiguredProject,
+ IActiveConfiguredProjectSubscriptionService activeConfiguredProjectSubscriptionService)
: base(threadingService, unconfiguredProject)
{
+ _activeConfiguredProjectSubscriptionService = activeConfiguredProjectSubscriptionService;
}
protected override void Initialize()
@@ -37,8 +41,7 @@ namespace Cosmos.VS.ProjectSystem.VS
return Task.FromResult(new TreeUpdateResult(CreatePlugsFolder(), true));
});
- var subscriptionService = UnconfiguredProject.Services.ActiveConfiguredProjectSubscription;
- var itemsBlock = subscriptionService.ProjectCatalogSource.SourceBlock;
+ var itemsBlock = _activeConfiguredProjectSubscriptionService.ProjectCatalogSource.SourceBlock;
var targetBlock = new ActionBlock>(ItemsChangedAsync);
_itemsSubscriptionLink = itemsBlock.LinkTo(
@@ -95,7 +98,7 @@ namespace Cosmos.VS.ProjectSystem.VS
{
var tree = oldTree.ClearChildren();
- foreach (var reference in snapshot.Project.Value.GetItems("PlugsReference"))
+ foreach (var reference in snapshot.Project.ProjectInstance.GetItems("PlugsReference"))
{
if (cancellationToken.IsCancellationRequested)
{