using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using EnvDTE; namespace ICSharpCode.ILSpy.AddIn.Commands { /// /// Represents a NuGet package item in Solution Explorer, which can be opened in ILSpy. /// class NuGetReferenceForILSpy { ProjectItem projectItem; NuGetReferenceForILSpy(ProjectItem projectItem) { this.projectItem = projectItem; } /// /// Detects whether the given selected item represents a supported project. /// /// Data object of selected item to check. /// instance or null, if item is not a supported project. public static NuGetReferenceForILSpy Detect(object itemData) { if (itemData is ProjectItem projectItem) { var properties = Utils.GetProperties(projectItem.Properties, "Type"); if ((properties[0] as string) == "Package") { return new NuGetReferenceForILSpy(projectItem); } } return null; } /// /// If possible retrieves parameters to use for launching ILSpy instance. /// /// Parameters object or null, if not applicable. public ILSpyParameters GetILSpyParameters() { var properties = Utils.GetProperties(projectItem.Properties, "Name", "Version", "Path"); if (properties[0] != null && properties[1] != null && properties[2] != null) { return new ILSpyParameters(new[] { $"{properties[2]}\\{properties[0]}.{properties[1]}.nupkg" }); } return null; } } }