Dreamine.Web 1.0.0.0
WPF와 Blazor를 한 코드 흐름으로 연결하고 반복적인 MVVM 코드를 줄이는 오픈소스 FullKit 공식 웹 애플리케이션입니다.
로딩중...
검색중...
일치하는것 없음
VersionSyncService.cs
이 파일의 문서화 페이지로 가기
1using System.IO;
2using System.Text.RegularExpressions;
4
6
16{
25 private readonly ILibraryStore _store;
34 private readonly string _libRoot;
35
44 private static readonly Regex _versionRx =
45 new(@"<Version>\s*([^<\s]+)\s*</Version>", RegexOptions.IgnoreCase | RegexOptions.Compiled);
46
72 {
73 _store = store;
75 }
76
85 public bool IsConfigured => !string.IsNullOrWhiteSpace(_libRoot) && Directory.Exists(_libRoot);
86
103 public async Task<int> SyncAsync()
104 {
105 if (!IsConfigured) return -1;
106
107 // 어셈블리명 → 버전 매핑
108 var map = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
109 foreach (var f in Directory.EnumerateFiles(_libRoot, "*.csproj", SearchOption.AllDirectories))
110 {
111 var name = Path.GetFileNameWithoutExtension(f);
112 if (name.EndsWith(".Tests", StringComparison.OrdinalIgnoreCase)) continue;
113 var m = _versionRx.Match(await File.ReadAllTextAsync(f));
114 if (m.Success) map[name] = m.Groups[1].Value;
115 }
116
117 var libs = (await _store.GetAllAsync()).ToList();
118 int count = 0;
119 foreach (var lib in libs)
120 {
121 if (!map.TryGetValue(lib.Name, out var ver)) continue;
122 if (lib.Version == ver) continue;
123 lib.Version = ver;
124 await _store.SaveAsync(lib);
125 count++;
126 }
127 return count;
128 }
129}
VersionSyncService(ILibraryStore store, DreamineOptions opts)