//找出所有 .csproj 檔案 var allFiles = Directory.GetFiles(arg, "*.csproj", SearchOption.AllDirectories); //依序以 XDocument 載入並解析出第三方套件的名稱與版本號 foreach (var file in allFiles) { var projDefinition = XDocument.Load(file); var elements = projDefinition.Element("Project")?.Element("ItemGroup")?.Elements("PackageReference");
if (elements == null) continue; if (!elements.Any()) continue; var pkgRefs = elements.ToDictionary(x => x.Attribute("Include")?.Value, x => x.Attribute("Version")?.Value); }
剩下的功能就是查詢 Nuget 取得版本號碼。 由於大部分人的使用都是直接使用 IDE 或 VS 的 package management console 來安裝,幾乎沒有使用 api 去呼叫的需求,這類型的資訊在網路上很少;若是哪天要整理的內容變很多時,手動就感覺特別的沒有效率。 我絕對不會承認官方文件看好久還是看不懂
publicstaticasync Task<string> GetResultAsync(string url) { var result = ""; try { var httpClient = new HttpClient(); var response = await httpClient.GetAsync(url);
if (response != null) { if (response.IsSuccessStatusCode) { result = await response.Content.ReadAsStringAsync(); } else { } } } catch (Exception ex) { } return result; }