Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(937)

Unified Diff: experimental/visual_studio_plugin/third_party/Microsoft.VisualStudio.Project/ComReferenceNode.cs

Issue 10928195: First round of dead file removal (Closed) Base URL: https://github.com/samclegg/nativeclient-sdk.git@master
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: experimental/visual_studio_plugin/third_party/Microsoft.VisualStudio.Project/ComReferenceNode.cs
diff --git a/experimental/visual_studio_plugin/third_party/Microsoft.VisualStudio.Project/ComReferenceNode.cs b/experimental/visual_studio_plugin/third_party/Microsoft.VisualStudio.Project/ComReferenceNode.cs
deleted file mode 100644
index aa7cb30bf861ed31da2d01ef82cb82d358771b57..0000000000000000000000000000000000000000
--- a/experimental/visual_studio_plugin/third_party/Microsoft.VisualStudio.Project/ComReferenceNode.cs
+++ /dev/null
@@ -1,317 +0,0 @@
-/// Copyright (c) Microsoft Corporation. All rights reserved.
-
-using System;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.IO;
-using System.Runtime.InteropServices;
-using Microsoft.VisualStudio;
-using Microsoft.VisualStudio.Shell.Interop;
-using Microsoft.Win32;
-
-namespace Microsoft.VisualStudio.Project
-{
- /// <summary>
- /// This type of node is used for references to COM components.
- /// </summary>
- [CLSCompliant(false)]
- [ComVisible(true)]
- public class ComReferenceNode : ReferenceNode
- {
- #region fields
- private string typeName;
- private Guid typeGuid;
- private string projectRelativeFilePath;
- private string installedFilePath;
- private string minorVersionNumber;
- private string majorVersionNumber;
- private string lcid;
- #endregion
-
- #region properties
- public override string Caption
- {
- get { return this.typeName; }
- }
-
- public override string Url
- {
- get
- {
- return this.projectRelativeFilePath;
- }
- }
-
- /// <summary>
- /// Returns the Guid of the COM object.
- /// </summary>
- public Guid TypeGuid
- {
- get { return this.typeGuid; }
- }
-
- /// <summary>
- /// Returns the path where the COM object is installed.
- /// </summary>
- public string InstalledFilePath
- {
- get { return this.installedFilePath; }
- }
-
- [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "LCID")]
- public string LCID
- {
- get { return lcid; }
- }
-
- public int MajorVersionNumber
- {
- get
- {
- if(string.IsNullOrEmpty(majorVersionNumber))
- {
- return 0;
- }
- return int.Parse(majorVersionNumber, CultureInfo.CurrentCulture);
- }
- }
- public int MinorVersionNumber
- {
- get
- {
- if(string.IsNullOrEmpty(minorVersionNumber))
- {
- return 0;
- }
- return int.Parse(minorVersionNumber, CultureInfo.CurrentCulture);
- }
- }
- private Automation.OAComReference comReference;
- internal override object Object
- {
- get
- {
- if(null == comReference)
- {
- comReference = new Automation.OAComReference(this);
- }
- return comReference;
- }
- }
- #endregion
-
- #region ctors
- /// <summary>
- /// Constructor for the ComReferenceNode.
- /// </summary>
- public ComReferenceNode(ProjectNode root, ProjectElement element)
- : base(root, element)
- {
- this.typeName = this.ItemNode.GetMetadata(ProjectFileConstants.Include);
- string typeGuidAsString = this.ItemNode.GetMetadata(ProjectFileConstants.Guid);
- if(typeGuidAsString != null)
- {
- this.typeGuid = new Guid(typeGuidAsString);
- }
-
- this.majorVersionNumber = this.ItemNode.GetMetadata(ProjectFileConstants.VersionMajor);
- this.minorVersionNumber = this.ItemNode.GetMetadata(ProjectFileConstants.VersionMinor);
- this.lcid = this.ItemNode.GetMetadata(ProjectFileConstants.Lcid);
- this.SetProjectItemsThatRelyOnReferencesToBeResolved(false);
- this.SetInstalledFilePath();
- }
-
- /// <summary>
- /// Overloaded constructor for creating a ComReferenceNode from selector data
- /// </summary>
- /// <param name="root">The Project node</param>
- /// <param name="selectorData">The component selctor data.</param>
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2201:DoNotRaiseReservedExceptionTypes")]
- public ComReferenceNode(ProjectNode root, VSCOMPONENTSELECTORDATA selectorData)
- : base(root)
- {
- if(root == null)
- {
- throw new ArgumentNullException("root");
- }
- if(selectorData.type == VSCOMPONENTTYPE.VSCOMPONENTTYPE_Project
- || selectorData.type == VSCOMPONENTTYPE.VSCOMPONENTTYPE_ComPlus)
- {
- throw new ArgumentException("SelectorData cannot be of type VSCOMPONENTTYPE.VSCOMPONENTTYPE_Project or VSCOMPONENTTYPE.VSCOMPONENTTYPE_ComPlus", "selectorData");
- }
-
- // Initialize private state
- this.typeName = selectorData.bstrTitle;
- this.typeGuid = selectorData.guidTypeLibrary;
- this.majorVersionNumber = selectorData.wTypeLibraryMajorVersion.ToString(CultureInfo.InvariantCulture);
- this.minorVersionNumber = selectorData.wTypeLibraryMinorVersion.ToString(CultureInfo.InvariantCulture);
- this.lcid = selectorData.lcidTypeLibrary.ToString(CultureInfo.InvariantCulture);
-
- // Check to see if the COM object actually exists.
- this.SetInstalledFilePath();
- // If the value cannot be set throw.
- if(String.IsNullOrEmpty(this.installedFilePath))
- {
- throw new NullReferenceException("The InstalledFilePath is null");
- }
- }
- #endregion
-
- #region methods
- /// <summary>
- /// Links a reference node to the project and hierarchy.
- /// </summary>
- protected override void BindReferenceData()
- {
- Debug.Assert(this.ItemNode != null, "The AssemblyName field has not been initialized");
-
- // We need to create the project element at this point if it has not been created.
- // We cannot do that from the ctor if input comes from a component selector data, since had we been doing that we would have added a project element to the project file.
- // The problem with that approach is that we would need to remove the project element if the item cannot be added to the hierachy (E.g. It already exists).
- // It is just safer to update the project file now. This is the intent of this method.
- // Call MSBuild to build the target ResolveComReferences
- if(this.ItemNode == null || this.ItemNode.Item == null)
- {
- this.ItemNode = this.GetProjectElementBasedOnInputFromComponentSelectorData();
- }
-
- this.SetProjectItemsThatRelyOnReferencesToBeResolved(true);
- }
-
- /// <summary>
- /// Checks if a reference is already added. The method parses all references and compares the the FinalItemSpec and the Guid.
- /// </summary>
- /// <returns>true if the assembly has already been added.</returns>
- protected override bool IsAlreadyAdded()
- {
- ReferenceContainerNode referencesFolder = this.ProjectMgr.FindChild(ReferenceContainerNode.ReferencesNodeVirtualName) as ReferenceContainerNode;
- Debug.Assert(referencesFolder != null, "Could not find the References node");
-
- for(HierarchyNode n = referencesFolder.FirstChild; n != null; n = n.NextSibling)
- {
- ComReferenceNode refererenceNode = n as ComReferenceNode;
-
- if(refererenceNode != null)
- {
- // We check if the name and guids are the same
- if(refererenceNode.TypeGuid == this.TypeGuid && String.Compare(refererenceNode.Caption, this.Caption, StringComparison.OrdinalIgnoreCase) == 0)
- {
- return true;
- }
- }
- }
-
- return false;
- }
-
- /// <summary>
- /// Determines if this is node a valid node for painting the default reference icon.
- /// </summary>
- /// <returns></returns>
- protected override bool CanShowDefaultIcon()
- {
- return !String.IsNullOrEmpty(this.installedFilePath);
- }
-
- /// <summary>
- /// This is an helper method to convert the VSCOMPONENTSELECTORDATA recieved by the
- /// implementer of IVsComponentUser into a ProjectElement that can be used to create
- /// an instance of this class.
- /// This should not be called for project reference or reference to managed assemblies.
- /// </summary>
- /// <returns>ProjectElement corresponding to the COM component passed in</returns>
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")]
- private ProjectElement GetProjectElementBasedOnInputFromComponentSelectorData()
- {
-
- ProjectElement element = new ProjectElement(this.ProjectMgr, this.typeName, ProjectFileConstants.COMReference);
-
- // Set the basic information regarding this COM component
- element.SetMetadata(ProjectFileConstants.Guid, this.typeGuid.ToString("B"));
- element.SetMetadata(ProjectFileConstants.VersionMajor, this.majorVersionNumber);
- element.SetMetadata(ProjectFileConstants.VersionMinor, this.minorVersionNumber);
- element.SetMetadata(ProjectFileConstants.Lcid, this.lcid);
- element.SetMetadata(ProjectFileConstants.Isolated, false.ToString());
-
- // See if a PIA exist for this component
- TypeLibConverter typelib = new TypeLibConverter();
- string assemblyName;
- string assemblyCodeBase;
- if(typelib.GetPrimaryInteropAssembly(this.typeGuid, Int32.Parse(this.majorVersionNumber, CultureInfo.InvariantCulture), Int32.Parse(this.minorVersionNumber, CultureInfo.InvariantCulture), Int32.Parse(this.lcid, CultureInfo.InvariantCulture), out assemblyName, out assemblyCodeBase))
- {
- element.SetMetadata(ProjectFileConstants.WrapperTool, WrapperToolAttributeValue.Primary.ToString().ToLowerInvariant());
- }
- else
- {
- // MSBuild will have to generate an interop assembly
- element.SetMetadata(ProjectFileConstants.WrapperTool, WrapperToolAttributeValue.TlbImp.ToString().ToLowerInvariant());
- element.SetMetadata(ProjectFileConstants.Private, true.ToString());
- }
- return element;
- }
-
- private void SetProjectItemsThatRelyOnReferencesToBeResolved(bool renameItemNode)
- {
- // Call MSBuild to build the target ResolveComReferences
- bool success;
- ErrorHandler.ThrowOnFailure(this.ProjectMgr.BuildTarget(MsBuildTarget.ResolveComReferences, out success));
- if(!success)
- throw new InvalidOperationException();
-
- // Now loop through the generated COM References to find the corresponding one
- Microsoft.Build.BuildEngine.BuildItemGroup comReferences = this.ProjectMgr.BuildProject.GetEvaluatedItemsByName(MsBuildGeneratedItemType.ComReferenceWrappers);
- foreach(Microsoft.Build.BuildEngine.BuildItem reference in comReferences)
- {
- if(String.Compare(reference.GetMetadata(ProjectFileConstants.Guid), this.typeGuid.ToString("B"), StringComparison.OrdinalIgnoreCase) == 0
- && String.Compare(reference.GetMetadata(ProjectFileConstants.VersionMajor), this.majorVersionNumber, StringComparison.OrdinalIgnoreCase) == 0
- && String.Compare(reference.GetMetadata(ProjectFileConstants.VersionMinor), this.minorVersionNumber, StringComparison.OrdinalIgnoreCase) == 0
- && String.Compare(reference.GetMetadata(ProjectFileConstants.Lcid), this.lcid, StringComparison.OrdinalIgnoreCase) == 0)
- {
- string name = reference.FinalItemSpec;
- if(Path.IsPathRooted(name))
- {
- this.projectRelativeFilePath = name;
- }
- else
- {
- this.projectRelativeFilePath = Path.Combine(this.ProjectMgr.ProjectFolder, name);
- }
-
- if(renameItemNode)
- {
- this.ItemNode.Rename(Path.GetFileNameWithoutExtension(name));
- }
- break;
- }
- }
- }
-
- /// <summary>
- /// Verify that the TypeLib is registered and set the the installed file path of the com reference.
- /// </summary>
- /// <returns></returns>
- private void SetInstalledFilePath()
- {
- string registryPath = string.Format(CultureInfo.InvariantCulture, @"TYPELIB\{0}\{1}.{2}", this.typeGuid.ToString("B"), this.majorVersionNumber, this.minorVersionNumber);
- using(RegistryKey typeLib = Registry.ClassesRoot.OpenSubKey(registryPath))
- {
- if(typeLib != null)
- {
- // Check if we need to set the name for this type.
- if(string.IsNullOrEmpty(this.typeName))
- {
- this.typeName = typeLib.GetValue(string.Empty) as string;
- }
- // Now get the path to the file that contains this type library.
- using(RegistryKey installKey = typeLib.OpenSubKey(@"0\win32"))
- {
- this.installedFilePath = installKey.GetValue(String.Empty) as String;
- }
- }
- }
- }
-
- #endregion
- }
-}

Powered by Google App Engine
This is Rietveld 408576698