/* **************************************************************************** * * Copyright (c) Microsoft Corporation. * * This source code is subject to terms and conditions of the Apache License, Version 2.0. A * copy of the license can be found in the License.html file at the root of this distribution. If * you cannot locate the Apache License, Version 2.0, please send an email to * vspython@microsoft.com. By using this source code in any fashion, you are agreeing to be bound * by the terms of the Apache License, Version 2.0. * * You must not remove this notice, or any other, from this software. * * ***************************************************************************/ using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using Microsoft.VisualStudio; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; using VSLangProj; namespace Microsoft.VisualStudio.Project.Automation { /// /// Represents a project reference of the solution /// [SuppressMessage("Microsoft.Interoperability", "CA1405:ComVisibleTypeBaseTypesShouldBeComVisible")] [ComVisible(true)] public class OAProjectReference : OAReferenceBase { public OAProjectReference(ProjectReferenceNode projectReference) : base(projectReference) { } public new ProjectReferenceNode BaseReferenceNode { get { return (ProjectReferenceNode)base.BaseReferenceNode; } } #region Reference override public override string Culture { get { return string.Empty; } } public override string Name { get { return BaseReferenceNode.ReferencedProjectName; } } public override string Identity { get { return BaseReferenceNode.Caption; } } public override string Path { get { return BaseReferenceNode.ReferencedProjectOutputPath; } } public override EnvDTE.Project SourceProject { get { if (Guid.Empty == BaseReferenceNode.ReferencedProjectGuid) { return null; } IVsHierarchy hierarchy = VsShellUtilities.GetHierarchy(BaseReferenceNode.ProjectMgr.Site, BaseReferenceNode.ReferencedProjectGuid); if (null == hierarchy) { return null; } object extObject; if (Microsoft.VisualStudio.ErrorHandler.Succeeded( hierarchy.GetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_ExtObject, out extObject))) { return extObject as EnvDTE.Project; } return null; } } public override prjReferenceType Type { // TODO: Write the code that finds out the type of the output of the source project. get { return prjReferenceType.prjReferenceTypeAssembly; } } public override string Version { get { return string.Empty; } } #endregion } }