دیشب نسخه 6 پیشنمایش دات نت کور 3، منتشر شد و ویژگیهای بسیار خوبی را ارائه کرد و بهانهای شد تا با برخی از ویژگیها مخصوص خروجی گرفتن از برنامه در دات نت کور 3 آشنا بشویم.
و سپس با دستور زیر در cmd اقدام به گرفتن خروجی کنید:
در یک پروژهی سادهی WPF، حجم برنامه از 68 مگابایت، به 28 مگابایت کاهش پیدا کرد.
PublishSingleFile
توسط این دستور میتوانید برنامه خودتان را همراه با تمام اسمبلیها و فایلها، در یک فایل Exe قرار دهید و اجرا کنید. برای بار اول اجرا ممکن است چند ثانیه طول بکشد ولی از دفعات بعد، تاخیری در اجرا نخواهیم داشت. در واقع این روش تمام فایلها را فشرده کرده و با اجرا، در مسیر مشخصی آنپک میکند.
روش استفاده از آن به این صورت هست که پنجره CMD را در کنار فایل پروژه باز کنید و دستور زیر را اجرا کنید:
dotnet publish -r win10-x64 /p:PublishSingleFile=true
ReadyToRun
توسط این دستور میتوانید سرعت اجرای برنامههای دات نت کور را شدیدا بهبود بخشید. شما میتوانید با کامپایل کردن اسمبلیهای برنامه به فرمت R2R، علاوه بر کاهش زمان اجرای برنامه، میزان استفاده از حافظه را هم کاهش دهید. البته حجم برنامهی خروجی در این روش بیشتر است؛ چون هم شامل کدهای IL برنامه هست و هم شامل همان کدها بصورت Native تا بتواند اجرای برنامه را سرعت ببخشد.
نتایج زیر، بر روی پروژهی سادهی WPF اجرا شده
With ReadyToRun images | IL-only Application |
Startup time: 1.3 seconds | Startup time: 1.9 seconds |
Memory usage: 55.7 MB | Memory usage: 69.1 MB |
Application size: 156 MB | Application size: 150 MB |
برای فعالسازی آن، تگ زیر را به فایل پروژه اضافه کنید:
<PublishReadyToRun>true</PublishReadyToRun>
dotnet publish -r win-x64 -c Release
در حال حاضر این روش فقط برای حالت Self-Contained کار میکند و در نسخهی بعدی برای FramworkDependent هم فعال میشود.
Assembly linking
توسط این ابزار میتوانید حجم و سایز برنامه را کاهش دهید. روش کار به این صورت است که کدهای IL را اسکن میکند و فقط اسمبلیهای استفاده شده در برنامه را در کنار برنامه قرار میدهد که باعث کاهش حجم برنامه میشود.
برای فعالسازی آن، تگ زیر را به فایل پروژه اضافه کنید:
<PublishTrimmed>true</PublishTrimmed>
و سپس با دستور زیر در cmd اقدام به گرفتن خروجی کنید:
dotnet publish -r win-x64 -c Release
نکته: شما میتوانید از ایمیجهای ReadyToRun و Linker همزمان استفاده کنید. اولی حجم برنامه را افزایش میدهد و دومی کاهش! و این در حال حاضر باعث ایجاد مشکلاتی میشود که قرار هست در نسخهی بعدی، یعنی پیشنمایش 7، رفع بشود. در حال حاضر بهتر است از هر دو دستور باهم استفاده نکنید.