예제 #1
0
            private Project GetSourceProject(Web.AssemblyReference reference)
            {
                Project sourceProject = null;

                if (reference.ReferenceKind != Web.AssemblyReferenceType.AssemblyReferenceConfig)
                {
                    sourceProject = DteHelperEx.FindProject(reference.DTE, new Predicate<Project>(delegate(Project match)
                    {
                        return (match.Kind == VSLangProj.PrjKind.prjKindCSharpProject ||
                            match.Kind == VSLangProj.PrjKind.prjKindVBProject) &&
                            match.Name.Equals(reference.Name, StringComparison.OrdinalIgnoreCase);
                    }));
                }
                return sourceProject;
            }
        /// <summary>
        /// Creates the visual studio reference from reference.
        /// </summary>
        /// <param name="solution">The solution.</param>
        /// <param name="reference">The reference.</param>
        /// <returns></returns>
        internal static ProjectReference CreateVisualStudioReferenceFromReference(SolutionNode solution, VsWebSite.AssemblyReference reference)
        {
            if (reference == null || (reference.ReferencedProject == null && String.IsNullOrEmpty(reference.FullPath)))
                return null;

            string strongName = reference.Name;
            string version = "1.0.0.0";
            try
            {
                strongName = reference.StrongName;
                AssemblyName an = new AssemblyName(strongName);
                version = an.Version.ToString();
            }
            catch
            {
                if (!String.IsNullOrEmpty(strongName))
                {
                    string[] parts = strongName.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    if (parts.Length > 0)
                    {
                        strongName = parts[0].Trim();
                        if (parts.Length > 1)
                        {
                            string[] parts2 = parts[1].Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                            if (parts2.Length > 1)
                                version = parts2[1].Trim();
                        }
                        strongName += ", Version=" + version;
                    }
                }
            }
            return CreateVSReference(solution, reference.ContainingProject, reference.ReferencedProject, reference.Name, reference.FullPath, version, strongName, reference.ReferenceKind == VsWebSite.AssemblyReferenceType.AssemblyReferenceClientProject);
        }