Cosmos/source/Cosmos.Build.Builder/Services/VisualStudioService.cs
José Pedro f969601a53
Builder improvements.
- Added check for dependencies, which can be installed from the builder.
- Replaced CosmosTask with CosmosBuildDefinition, which is much simpler.
- The builder can be opened without any command line arguments.
- If the VS path is not specified as a command line argument, it can be selected in a dialog.
2018-03-30 19:44:19 +01:00

45 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.Setup.Configuration;
using Cosmos.Build.Builder.Services.VisualStudioSetup;
namespace Cosmos.Build.Builder.Services
{
internal class VisualStudioService : IVisualStudioService
{
private Lazy<IReadOnlyList<ISetupInstance2>> _instances;
public VisualStudioService()
{
_instances = new Lazy<IReadOnlyList<ISetupInstance2>>(GetSetupInstances);
}
public IReadOnlyList<ISetupInstance2> GetInstances() => _instances.Value;
private static List<ISetupInstance2> GetSetupInstances()
{
var instances = new List<ISetupInstance2>();
var setupConfiguration = new SetupConfiguration();
var instanceEnumerator = setupConfiguration.EnumInstances();
var setupInstance = new ISetupInstance2[1];
var count = 0;
while (true)
{
instanceEnumerator.Next(1, setupInstance, out count);
if (count == 0)
{
break;
}
instances.Add(new VisualStudioSetupInstance(setupInstance[0]));
}
return instances;
}
}
}