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); }