public override string ToString() { if (HintPath.IsNotNullOrEmpty()) { var fi = new FileInfo(HintPath); if (!fi.Exists) { Warnings.Add("HintPath not found."); } } HintPathAbsolute = HintPath; if (HintPath.StartsWith(".")) { // Try and find the dll referred to var projectFileFolder = new FileInfo(ProjectFile).Directory; this.ProjectRoot = projectFileFolder.FullName; var absoluteAssembly = new FileInfo(Path.Combine(projectFileFolder.FullName, HintPath)); HintPathAbsoluteExists = absoluteAssembly.Exists; HintPathAbsolute = absoluteAssembly.FullName; Warnings.Add("Checking: " + absoluteAssembly.FullName); if (absoluteAssembly.Exists == false) { Warnings.Add("@@" + absoluteAssembly.FullName + " not found."); } } var result = new StringBuilder("[" + GetType().FullName + "]\n"); result.AppendLine("Assembly: " + Assembly); result.AppendLine("ProjectRoot: " + ProjectRoot); result.AppendLine("HintPath: " + HintPath); result.AppendLine("HintPathAbsolute: " + HintPathAbsolute); result.AppendLine("HintPathAbsoluteExists: " + HintPathAbsoluteExists); result.AppendLine("IsOutSideProjectPath: " + IsOutSideProjectPath(HintPathAbsolute)); foreach (var item in Warnings) { result.AppendLine("Warning: " + item); } return(result.ToString()); }
private void LoadHintPath(VsProject project, ProjectItem projectItem) { HintPath = projectItem.Metadata.Any(m => m.Name == "HintPath") ? projectItem.Metadata.Single(m => m.Name == "HintPath").EvaluatedValue : null; if (HintPath != null) { var packagesPath = project.RelativeNuGetPackagesPath; if (HintPath.StartsWith(packagesPath)) { var startIndex = packagesPath.Length; var endIndex = HintPath.IndexOf("\\", startIndex, StringComparison.InvariantCulture); if (endIndex != -1) { IsNuGetReference = true; var isVersionPart = true; var nuGetPackageVersion = string.Empty; var nuGetPackage = string.Empty; var segments = HintPath.Substring(startIndex, endIndex - startIndex).Split('.'); foreach (var segment in segments.Reverse()) { if (isVersionPart) { int number = 0; if (int.TryParse(segment, out number)) { nuGetPackageVersion = segment + "." + nuGetPackageVersion; } else { nuGetPackage = segment; isVersionPart = false; } } else { nuGetPackage = segment + "." + nuGetPackage; } } NuGetPackageName = nuGetPackage.Trim('.'); NuGetPackageVersion = nuGetPackageVersion.Trim('.'); } } } }