← මුල් පිටුව

macOS මත WinForms

Windows Forms කේත පදනමක් Apple Silicon සහ Intel Mac පරිගණක මත ධාවනය කිරීම — ක්‍රියා කරන දේ, වෙනස් ලෙස දැනෙන දේ, සහ .app එකක් බෙදා හරින ආකාරය.

මෙම පිටුව පරිවර්තනයකි. ඉංග්‍රීසි අනුවාදය සමඟ වෙනසක් ඇත්නම්, ඉංග්‍රීසි අනුවාදය නිවැරදි ලෙස සලකන්න. English

සාමාන්‍ය WinForms හට එය කළ නොහැක්කේ ඇයි

System.Windows.Forms පවතින්නේ Windows Desktop runtime එකේ වන අතර එය user32.dll සහ GDI+ ආවරණය කරයි. එහි macOS build එකක් නැත, කිසි දිනෙක තිබුණේ ද නැත — net10.0-windows ව්‍යාපෘතියක් Mac එකක build වන්නේවත් නැත. සුපුරුදු විසඳුම් මාර්ග ද සාර්ථක නොවේ: Mono හි WinForms port එක කිසි දිනෙක නවීන .NET වෙත පැමිණියේ නැත, .NET 7 සිට System.Drawing.Common Windows නොවන වේදිකාවල PlatformNotSupportedException විසි කරයි, තවද යෙදුම Windows VM එකක් හෝ CrossOver යටතේ ධාවනය කිරීමෙන් අදහස් වන්නේ ඔබ තවමත් Windows යෙදුමක් බෙදා හරින බවයි.

ඒ වෙනුවට Majorsilence.Forms කරන්නේ කුමක්ද

එය SkiaSharp මත WinForms API එක නැවත ක්‍රියාත්මක කර, Avalonia හරහා සැබෑ NSWindow එකක එය ධාරකය (host) කරයි. සාමාන්‍ය net10.0 build එකක් — -windows TFM එකක් නොමැතිව — Apple Silicon (arm64) සහ Intel (x64) Mac පරිගණක මත ස්වදේශීයව ආරම්භ වන යෙදුමක් නිපදවයි.

dotnet new install Majorsilence.Forms.Templates
dotnet new majorsilenceforms
dotnet run --project MajorsilenceFormsApp

සැකිල්ල (template) බෙදාගත් UI library එකක් සහ desktop head එකක් නිපදවයි; එකම මූලාශ්‍ර කේතය වෙනස් නොකර Windows සහ Linux මත build වේ.

macOS මත සැබවින්ම ක්‍රියා කරන දේ

ක්ෂේත්‍රය macOS මත
කවුළු සහ ආදානය Avalonia backend එක හරහා ස්වදේශීය NSWindow, සම්මත macOS traffic-light chrome සහ ස්වදේශීය drag/resize සමඟ
Apple Silicon ස්වදේශීය arm64 — osx-arm64 සහ osx-x64 දෙකම සාමාන්‍ය publish ඉලක්ක වේ
විදැහුම්කරණය (Rendering), Retina SkiaSharp, GPU-වේගවත් කළ සහ HiDPI-දැනුවත් — Windows සහ Linux හි එකම paint කේතය
අකුරු සහ පෙළ SkiaSharp මඟින් CoreText හරහා resolve කරයි, නැති ඕනෑම දෙයක් සඳහා ඇතුළත් fallback කට්ටලයක් සමඟ
GDI+ / System.Drawing කේතය Majorsilence.Forms.Drawing මඟින් ප්‍රතිස්ථාපනය කර ඇත — Bitmap, Font, Pen, Brush, Region, Drawing2D, Imaging, EMF/WMF playback
පොදු සංවාද කවුළු Backend එක හරහා ස්වදේශීය open/save/folder/colour/font සංවාද කවුළු
මුද්‍රණය PrintDocument Skia හරහා PDF වෙත විදැහුම් කරයි, සෑම OS එකකම එක සමානව
WebView පාලකයන් සැබෑ WKWebView, inline PDF විදැහුම්කරණය ඇතුළුව
ශබ්දය afplay හරහා වාදනය වේ
ආරක්ෂිත ගබඩාව සහ කථනය Majorsilence.Forms.Essentials: SecureStorage Keychain Services වෙත ලියයි, Speech පද්ධතියේ say හඬ භාවිත කරයි; දෙකම IsSupported වාර්තා කරන අතර exception විසි කරනවා වෙනුවට no-ops (කිසිවක් නොකරයි) බවට පහත වැටේ
තේමා සහ dark mode තේමා යනු CSS ගොනු ය (ලේඛනගත උප කුලකයක්); BuiltInTheme.Default OS හි light/dark පෙනුම අනුගමනය කරන අතර, Theme.SetBuiltInTheme/Theme.ApplyTheme runtime එකේදී මාරු කරයි. Theme Studio නිදසුන පෙරදසුනක් සහිත සජීවී CSS සංස්කාරකයක් වන අතර, පෙර-ගොඩනැගූ binaries GitHub Releases වෙත අමුණා ඇත
Trackpad අභිනයන් (gestures) Pinch, Swipe, LongPress සහ momentum ScrollGesture පළමු-පෙළ events වේ; ScrollableControl දැනටමත් ඒවා යොදන බැවින්, Panel/ListBox/TreeView යෙදුම් වෙනස්කම් කිසිවකින් තොරව pan වේ
ස්වදේශීය කවුළු handle WindowBase.PlatformHandle හරහා සැබෑ NSWindow pointer එකක් (පාලක-අනුව handles සෑම තැනකම IntPtr.Zero වේ — ස්වදේශීය interop බලන්න)
Uno backend ඔබ Uno තුළ ධාරකය කිරීමට කැමති නම්, එයටද සහාය දක්වන අතර macOS මත සම්පූර්ණ පෝරමයක් boot කර විදැහුම් කිරීම තහවුරු කර ඇත
GTK 4 backend Homebrew වෙතින් ලැබෙන GTK runtime එක (brew install gtk4) සමඟ macOS මත compile වී ධාවනය වේ — Linux-first backend එකක්, එබැවින් AppKit කවුළුවක් නොව GTK කවුළුවක් අපේක්ෂා කරන්න; ප්‍රධාන වශයෙන් Mac එකක GTK head එක පරීක්ෂා කිරීමට ප්‍රයෝජනවත්

එය Mac-ශෛලියට අනුකූල නොවන ලෙස දැනෙන තැන්

Design review එකකට පෙර දැනගැනීම වටී, මන්ද මේවා bugs නොව ගැළපුම් ආකෘතියේ ප්‍රතිඵල වේ:

.app එකක් බෙදා හැරීම

ඇසුරුම් කිරීම (packaging) ඕනෑම Avalonia හෝ .NET desktop යෙදුමක් සඳහා මෙන්ම වේ — framework එක අමතර පියවර කිසිවක් එක් නොකරයි:

dotnet publish -c Release -r osx-arm64 --self-contained

එතැන් සිට, සම්මත macOS කාර්යයන් අදාළ වේ: publish කළ ප්‍රතිදානය Info.plist එකක් සහ .icns එකක් සමඟ YourApp.app/Contents/MacOS bundle පිරිසැලසුමකට ඔතා, ඉන්පසු එය codesign කර, ඔබ App Store එකෙන් පිටත බෙදා හරින්නේ නම් Apple සමඟ notarize කරන්න. osx-arm64 සහ osx-x64 publish කර ඒවා lipo සමඟ එකතු කිරීමෙන් universal binary එකක් build කරන්න.

macOS මත තහවුරු කර ඇත

Explorer නිදසුන සහ සම්පූර්ණ පාලක ගැලරිය යන දෙකම macOS මත ධාවනය වන අතර, ගැලරියේ Uno head එක ද එහි තහවුරු කර ඇත:

macOS මත ධාවනය වන Explorer නිදසුන

ඊළඟට