protected virtual void LoadReferences(ProjectElement project, Hashtable projects, XmlDocument doc, string projectDir, string projectLangTag)
        {
            string      lReferencesQuery = String.Format(STR_ReferencesQueryFormat, projectLangTag);
            XmlNodeList lReferences      = doc.SelectNodes(lReferencesQuery);
            int         lCount           = lReferences.Count;

            for (int i = 0; i < lCount; i++)
            {
                System.Xml.XmlNode lReferenceNode = lReferences[i];
                System.Xml.XmlNode lName          = lReferenceNode.Attributes.GetNamedItem(STR_Name);
                System.Xml.XmlNode lAssemblyName  = lReferenceNode.Attributes.GetNamedItem(STR_AssemblyName);
                if (lAssemblyName != null)
                {
                    string lAssemblyNameStr = lAssemblyName.Value;
                    string lPath            = FrameworkHelper.GetAssemblyPath(lAssemblyNameStr);
                    if (lPath == null || lPath.Length == 0)
                    {
                        System.Xml.XmlNode lHintPath = lReferenceNode.Attributes.GetNamedItem("HintPath");
                        lPath = lHintPath.Value;
                        lPath = PathUtilities.GetPath(projectDir, lPath);
                        if (File.Exists(lPath))
                        {
                            AssemblyReference lRef = new AssemblyReference(lPath);
                            project.AddReference(lRef);
                        }
                    }
                    else
                    {
                        project.AddReferenceByName(lAssemblyNameStr);
                    }
                }
                else
                {
                    System.Xml.XmlNode lProjectRef = lReferenceNode.Attributes.GetNamedItem(STR_Project);
                    string             lGuid       = lProjectRef.Value;
                    ProjectInfo        lInfo       = projects[lGuid] as ProjectInfo;
                    if (lInfo != null)
                    {
                        AssemblyReference lRef = new AssemblyReference(String.Empty);
                        lRef.SetSourceProjectFullName(lInfo.FilePath);
                        project.AddReference(lRef);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private AssemblyReference AddReference(ProjectElement project, MsBuildProjectLoader msBuildLoader, BuildItem item, string projectDir, string aliases)
        {
            AssemblyReference reference = null;
            string            dllName   = GetReferenceDllName(item);
            bool   isSilverlight        = IsSilverlightProject(project);
            string path = GetAssemblyPath(dllName, isSilverlight);

            if (String.IsNullOrEmpty(path))
            {
                path = GetReferencePath(msBuildLoader, item, projectDir);
            }
            if (!string.IsNullOrEmpty(path))
            {
                reference = new AssemblyReference(path);
                reference.SetAliasesString(aliases);
                project.AddReference(reference);
            }
            else
            {
                reference = project.AddReferenceByName(item.FinalItemSpec, aliases);
            }
            return(reference);
        }
 protected virtual void LoadReferences(ProjectElement project, Hashtable projects, XmlDocument doc, string projectDir, string projectLangTag)
 {
     string lReferencesQuery = String.Format(STR_ReferencesQueryFormat, projectLangTag);
     XmlNodeList lReferences = doc.SelectNodes(lReferencesQuery);
     int lCount = lReferences.Count;
     for (int i = 0; i < lCount; i++)
     {
         System.Xml.XmlNode lReferenceNode = lReferences[i];
         System.Xml.XmlNode lName = lReferenceNode.Attributes.GetNamedItem(STR_Name);
         System.Xml.XmlNode lAssemblyName = lReferenceNode.Attributes.GetNamedItem(STR_AssemblyName);
         if (lAssemblyName != null)
         {
             string lAssemblyNameStr = lAssemblyName.Value;
             string lPath = FrameworkHelper.GetAssemblyPath(lAssemblyNameStr);
             if (lPath == null || lPath.Length == 0)
             {
                 System.Xml.XmlNode lHintPath = lReferenceNode.Attributes.GetNamedItem("HintPath");
                 lPath = lHintPath.Value;
                 lPath = PathUtilities.GetPath(projectDir, lPath);
                 if (File.Exists(lPath))
                 {
                     AssemblyReference lRef = new AssemblyReference(lPath);
                     project.AddReference(lRef);
                 }
             }
             else
                 project.AddReferenceByName(lAssemblyNameStr);
         }
         else
         {
             System.Xml.XmlNode lProjectRef = lReferenceNode.Attributes.GetNamedItem(STR_Project);
             string lGuid = lProjectRef.Value;
             ProjectInfo lInfo = projects[lGuid] as ProjectInfo;
             if (lInfo != null)
             {
                 AssemblyReference lRef = new AssemblyReference(String.Empty);
                 lRef.SetSourceProjectFullName(lInfo.FilePath);
                 project.AddReference(lRef);
             }
         }
     }
 }
        private AssemblyReference AddReference(ProjectElement project, MsBuildProjectLoader msBuildLoader, BuildItem item, string projectDir, string aliases)
        {
            AssemblyReference reference = null;
            string dllName = GetReferenceDllName(item);
            bool isSilverlight = IsSilverlightProject(project);
            string path = GetAssemblyPath(dllName, isSilverlight);
            if (String.IsNullOrEmpty(path))
            {
                path = GetReferencePath(msBuildLoader, item, projectDir);

            }
            if (!string.IsNullOrEmpty(path))
            {
                reference = new AssemblyReference(path);
                reference.SetAliasesString(aliases);
                project.AddReference(reference);
            }
            else
            {
                reference = project.AddReferenceByName(item.FinalItemSpec, aliases);

            }
            return reference;
        }