コード例 #1
0
        private string GetAssemblyPathFromVSInstalDir(BuildItem item)
        {
            string name = GetReferenceDllName(item);

            string[] installDirs = FrameworkHelper.GetVSInstallFoldersPaths();
            string   path        = FrameworkHelper.GetAssemblyPath(name, installDirs);

            if (File.Exists(path))
            {
                return(path);
            }
            return(string.Empty);
        }
コード例 #2
0
        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);
                    }
                }
            }
        }
コード例 #3
0
        private string GetAssemblyPathFromAssemblyFolders(MsBuildProjectLoader msBuildLoader, BuildItem item)
        {
            string spec = GetReferenceDllName(item);

            string[] assemblyFoldersPaths = FrameworkHelper.GetFrameworkPaths(msBuildLoader.TargetFramework);
            assemblyFoldersPaths = ReversePaths(assemblyFoldersPaths);
            string path = FrameworkHelper.GetAssemblyPath(spec, assemblyFoldersPaths);

            if (File.Exists(path))
            {
                return(path);
            }
            assemblyFoldersPaths = FrameworkHelper.GetAssemblyFoldersPaths(msBuildLoader.TargetFramework);
            path = FrameworkHelper.GetAssemblyPath(spec, assemblyFoldersPaths);
            if (File.Exists(path))
            {
                return(path);
            }
            try
            {
                Assembly assembly = Assembly.Load(item.FinalItemSpec);
                if (assembly != null)
                {
                    return(assembly.Location);
                }
            }
            catch
            {
            }

            try
            {
                Assembly assembly = Assembly.LoadWithPartialName(item.FinalItemSpec);
                if (assembly != null)
                {
                    return(assembly.Location);
                }
            }
            catch
            {
            }

            return(string.Empty);
        }