EnvDTE.Client/Impl/ProjectModelImpl/SolutionBuildImplementation.cs (67 lines of code) (raw):
using System;
using EnvDTE;
using EnvDTE80;
using JetBrains.Annotations;
using JetBrains.Core;
using JetBrains.EnvDTE.Client.Impl.ProjectModelImpl.ConfigurationImpl;
using JetBrains.EnvDTE.Client.Util;
using JetBrains.Rd.Tasks;
using JetBrains.Rider.Model;
namespace JetBrains.EnvDTE.Client.Impl.ProjectModelImpl;
public class SolutionBuildImplementation(
[NotNull] DteImplementation dte,
[NotNull] SolutionImplementation parentSolution)
: SolutionBuild2
{
[CanBeNull] private SolutionConfigurationsImplementation _solutionConfigurations;
private SolutionConfigurationsImplementation SolutionConfigurationsImplementation
{
get
{
_solutionConfigurations ??= new SolutionConfigurationsImplementation(dte, this);
return _solutionConfigurations;
}
}
public DTE DTE => dte;
public Solution Parent => parentSolution;
public vsBuildState BuildState =>
dte.DteProtocolModel.Solution_get_BuildState.Sync(Unit.Instance).FromRdBuildState();
public int LastBuildInfo => dte.DteProtocolModel.Solution_get_LastBuildInfo.Sync(Unit.Instance);
public SolutionConfiguration ActiveConfiguration
{
get
{
var config = dte.DteProtocolModel.Solution_get_ActiveConfiguration.Sync(Unit.Instance);
return config is null ? null : new SolutionConfigurationImplementation(dte, config, SolutionConfigurationsImplementation);
}
}
public SolutionConfigurations SolutionConfigurations => SolutionConfigurationsImplementation;
public void Build(bool waitForBuildToFinish) => BuildInternal(waitForBuildToFinish, RdBuildSessionTarget.Build);
public void Clean(bool waitForCleanToFinish) => BuildInternal(waitForCleanToFinish, RdBuildSessionTarget.Clean);
private void BuildInternal(bool waitForBuildToFinish, RdBuildSessionTarget target) => dte.DteProtocolModel.Solution_build
.Start(dte.DteLifetime, new(waitForBuildToFinish, target))
.GetAwaiter()
.GetResult();
public object StartupProjects
{
get => dte.DteProtocolModel.Solution_get_StartupProjects.Sync(Unit.Instance).ToArray();
set => throw new NotImplementedException();
}
#region NotImplemented
public BuildDependencies BuildDependencies => throw new NotImplementedException();
public int LastPublishInfo => throw new NotImplementedException();
public vsPublishState PublishState => throw new NotImplementedException();
public void Debug() => throw new NotImplementedException();
public void Deploy(bool waitForDeployToFinish) => throw new NotImplementedException();
public void Run() => throw new NotImplementedException();
public void BuildProject(string solutionConfiguration, string projectUniqueName, bool waitForBuildToFinish) =>
throw new NotImplementedException();
public void Publish(bool waitForPublishToFinish = false) => throw new NotImplementedException();
public void PublishProject(string solutionConfiguration, string projectUniqueName,
bool waitForPublishToFinish = false) =>
throw new NotImplementedException();
public void DeployProject(string solutionConfiguration, string projectUniqueName,
bool waitForDeployToFinish = false) =>
throw new NotImplementedException();
#endregion
}