| Index: obsolete/Microsoft.VisualStudio.Project/OutputGroup.cs
|
| diff --git a/obsolete/Microsoft.VisualStudio.Project/OutputGroup.cs b/obsolete/Microsoft.VisualStudio.Project/OutputGroup.cs
|
| deleted file mode 100644
|
| index c7cc66162e4387fae943a8fb61f22129c6ee181c..0000000000000000000000000000000000000000
|
| --- a/obsolete/Microsoft.VisualStudio.Project/OutputGroup.cs
|
| +++ /dev/null
|
| @@ -1,255 +0,0 @@
|
| -/// Copyright (c) Microsoft Corporation. All rights reserved.
|
| -
|
| -using System;
|
| -using System.Collections.Generic;
|
| -using System.Diagnostics;
|
| -using System.Diagnostics.CodeAnalysis;
|
| -using System.Runtime.InteropServices;
|
| -using Microsoft.VisualStudio;
|
| -using Microsoft.VisualStudio.Shell.Interop;
|
| -using MSBuild = Microsoft.Build.BuildEngine;
|
| -
|
| -namespace Microsoft.VisualStudio.Project
|
| -{
|
| - /// <summary>
|
| - /// Allows projects to group outputs according to usage.
|
| - /// </summary>
|
| - [CLSCompliant(false), ComVisible(true)]
|
| - public class OutputGroup : IVsOutputGroup2
|
| - {
|
| - #region fields
|
| - private ProjectConfig projectCfg;
|
| - private ProjectNode project;
|
| -
|
| - private List<Output> outputs = new List<Output>();
|
| - private Output keyOutput;
|
| - private string name;
|
| - private string targetName;
|
| - #endregion
|
| -
|
| - #region properties
|
| - /// <summary>
|
| - /// Get the project configuration object associated with this output group
|
| - /// </summary>
|
| - [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cfg")]
|
| - protected ProjectConfig ProjectCfg
|
| - {
|
| - get { return projectCfg; }
|
| - }
|
| -
|
| - /// <summary>
|
| - /// Get the project object that produces this output group.
|
| - /// </summary>
|
| - protected ProjectNode Project
|
| - {
|
| - get { return project; }
|
| - }
|
| -
|
| - /// <summary>
|
| - /// Gets the msbuild target name which is assciated to the outputgroup.
|
| - /// ProjectNode defines a static collection of output group names and their associated MsBuild target
|
| - /// </summary>
|
| - protected string TargetName
|
| - {
|
| - get { return targetName; }
|
| - }
|
| - #endregion
|
| -
|
| - #region ctors
|
| -
|
| - /// <summary>
|
| - /// Constructor for IVSOutputGroup2 implementation
|
| - /// </summary>
|
| - /// <param name="outputName">Name of the output group. See VS_OUTPUTGROUP_CNAME_Build in vsshell.idl for the list of standard values</param>
|
| - /// <param name="msBuildTargetName">MSBuild target name</param>
|
| - /// <param name="projectManager">Project that produce this output</param>
|
| - /// <param name="configuration">Configuration that produce this output</param>
|
| - public OutputGroup(string outputName, string msBuildTargetName, ProjectNode projectManager, ProjectConfig configuration)
|
| - {
|
| - if(outputName == null)
|
| - throw new ArgumentNullException("outputName");
|
| - if(msBuildTargetName == null)
|
| - throw new ArgumentNullException("outputName");
|
| - if(projectManager == null)
|
| - throw new ArgumentNullException("projectManager");
|
| - if(configuration == null)
|
| - throw new ArgumentNullException("configuration");
|
| -
|
| - name = outputName;
|
| - targetName = msBuildTargetName;
|
| - project = projectManager;
|
| - projectCfg = configuration;
|
| - }
|
| - #endregion
|
| -
|
| - #region virtual methods
|
| - protected virtual void Refresh()
|
| - {
|
| - // Let MSBuild know which configuration we are working with
|
| - project.SetConfiguration(projectCfg.ConfigName);
|
| -
|
| - // Generate dependencies if such a task exist
|
| - const string generateDependencyList = "AllProjectOutputGroups";
|
| - if(project.BuildProject.Targets.Exists(generateDependencyList))
|
| - {
|
| - bool succeeded = false;
|
| - project.BuildTarget(generateDependencyList, out succeeded);
|
| - Debug.Assert(succeeded, "Failed to build target: " + generateDependencyList);
|
| - }
|
| -
|
| - // Rebuild the content of our list of output
|
| - string outputType = this.targetName + "KeyOutput";
|
| - this.outputs.Clear();
|
| - foreach(MSBuild.BuildItem assembly in project.BuildProject.GetEvaluatedItemsByName(outputType))
|
| - {
|
| - Output output = new Output(project, project.GetProjectElement(assembly));
|
| - this.outputs.Add(output);
|
| -
|
| - // See if it is our key output
|
| - if(String.Compare(assembly.GetEvaluatedMetadata("IsKeyOutput"), true.ToString(), StringComparison.OrdinalIgnoreCase) == 0)
|
| - keyOutput = output;
|
| - }
|
| -
|
| - project.SetCurrentConfiguration();
|
| -
|
| - // Now that the group is built we have to check if it is invalidated by a property
|
| - // change on the project.
|
| - project.OnProjectPropertyChanged += new EventHandler<ProjectPropertyChangedArgs>(OnProjectPropertyChanged);
|
| - }
|
| -
|
| - public virtual void InvalidateGroup()
|
| - {
|
| - // Set keyOutput to null so that a refresh will be performed the next time
|
| - // a property getter is called.
|
| - if(null != keyOutput)
|
| - {
|
| - // Once the group is invalidated there is no more reason to listen for events.
|
| - project.OnProjectPropertyChanged -= new EventHandler<ProjectPropertyChangedArgs>(OnProjectPropertyChanged);
|
| - }
|
| - keyOutput = null;
|
| - }
|
| - #endregion
|
| -
|
| - #region event handlers
|
| - private void OnProjectPropertyChanged(object sender, ProjectPropertyChangedArgs args)
|
| - {
|
| - // In theory here we should decide if we have to invalidate the group according with the kind of property
|
| - // that is changed.
|
| - InvalidateGroup();
|
| - }
|
| - #endregion
|
| -
|
| - #region IVsOutputGroup2 Members
|
| -
|
| - public virtual int get_CanonicalName(out string pbstrCanonicalName)
|
| - {
|
| - pbstrCanonicalName = this.name;
|
| - return VSConstants.S_OK;
|
| - }
|
| -
|
| - public virtual int get_DeployDependencies(uint celt, IVsDeployDependency[] rgpdpd, uint[] pcActual)
|
| - {
|
| - return VSConstants.E_NOTIMPL;
|
| - }
|
| -
|
| - public virtual int get_Description(out string pbstrDescription)
|
| - {
|
| - pbstrDescription = null;
|
| -
|
| - string description;
|
| - int hr = this.get_CanonicalName(out description);
|
| - if(ErrorHandler.Succeeded(hr))
|
| - pbstrDescription = this.Project.GetOutputGroupDescription(description);
|
| - return hr;
|
| - }
|
| -
|
| - public virtual int get_DisplayName(out string pbstrDisplayName)
|
| - {
|
| - pbstrDisplayName = null;
|
| -
|
| - string displayName;
|
| - int hr = this.get_CanonicalName(out displayName);
|
| - if(ErrorHandler.Succeeded(hr))
|
| - pbstrDisplayName = this.Project.GetOutputGroupDisplayName(displayName);
|
| - return hr;
|
| - }
|
| -
|
| - public virtual int get_KeyOutput(out string pbstrCanonicalName)
|
| - {
|
| - pbstrCanonicalName = null;
|
| - if(keyOutput == null)
|
| - Refresh();
|
| - if(keyOutput == null)
|
| - {
|
| - pbstrCanonicalName = String.Empty;
|
| - return VSConstants.S_FALSE;
|
| - }
|
| - return keyOutput.get_CanonicalName(out pbstrCanonicalName);
|
| - }
|
| -
|
| - public virtual int get_KeyOutputObject(out IVsOutput2 ppKeyOutput)
|
| - {
|
| - if(keyOutput == null)
|
| - Refresh();
|
| - ppKeyOutput = keyOutput;
|
| - if(ppKeyOutput == null)
|
| - return VSConstants.S_FALSE;
|
| - return VSConstants.S_OK;
|
| - }
|
| -
|
| - public virtual int get_Outputs(uint celt, IVsOutput2[] rgpcfg, uint[] pcActual)
|
| - {
|
| - // Ensure that we are refreshed. This is somewhat of a hack that enables project to
|
| - // project reference scenarios to work. Normally, output groups are populated as part
|
| - // of build. However, in the project to project reference case, what ends up happening
|
| - // is that the referencing projects requests the referenced project's output group
|
| - // before a build is done on the referenced project.
|
| - //
|
| - // Furthermore, the project auto toolbox manager requires output groups to be populated
|
| - // on project reopen as well...
|
| - //
|
| - // In the end, this is probably the right thing to do, though -- as it keeps the output
|
| - // groups always up to date.
|
| - Refresh();
|
| -
|
| - // See if only the caller only wants to know the count
|
| - if(celt == 0 || rgpcfg == null)
|
| - {
|
| - if(pcActual != null && pcActual.Length > 0)
|
| - pcActual[0] = (uint)outputs.Count;
|
| - return VSConstants.S_OK;
|
| - }
|
| -
|
| - // Fill the array with our outputs
|
| - uint count = 0;
|
| - foreach(Output output in outputs)
|
| - {
|
| - if(rgpcfg.Length > count && celt > count && output != null)
|
| - {
|
| - rgpcfg[count] = output;
|
| - ++count;
|
| - }
|
| - }
|
| -
|
| - if(pcActual != null && pcActual.Length > 0)
|
| - pcActual[0] = count;
|
| -
|
| - // If the number asked for does not match the number returned, return S_FALSE
|
| - return (count == celt) ? VSConstants.S_OK : VSConstants.S_FALSE;
|
| - }
|
| -
|
| - public virtual int get_ProjectCfg(out IVsProjectCfg2 ppIVsProjectCfg2)
|
| - {
|
| - ppIVsProjectCfg2 = (IVsProjectCfg2)this.projectCfg;
|
| - return VSConstants.S_OK;
|
| - }
|
| -
|
| - public virtual int get_Property(string pszProperty, out object pvar)
|
| - {
|
| - pvar = project.GetProjectProperty(pszProperty);
|
| - return VSConstants.S_OK;
|
| - }
|
| -
|
| - #endregion
|
| - }
|
| -}
|
|
|