ارتقاهای CLI در NET 10 Preview 3.: نصب محلی SDK، تکمیل خطفرمان، حالت تعاملی و بیشتر
نویسنده: وحید نصیری
تاریخ: ۱۴۰۴/۰۱/۳۱ ۰۷:۲۷
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
dotnet completions generate [SHELL] این مشکل را برطرف کرده است..bashrc برای Bash یا $PROFILE برای PowerShell) اضافه کنند. مثال زیر نحوه فعالسازی تکمیل پوسته در Bash را نشان میدهد:# افزودن تکمیل پوسته برای .NET CLI به Bash dotnet completions generate bash >> ~/.bashrc source ~/.bashrc
dotnet و فشردن Tab، لیستی از دستورات ممکن نمایش داده میشود. این قابلیت حتی برای تکمیل نام بستههای NuGet در دستوراتی مانند dotnet add package نیز کار میکند، که تجربه کاربری را بهویژه در پروژههای بزرگ بهبود میبخشد. توسعهدهندگان میتوانند با ثبت درخواست در مخزن GitHub داتنت، پشتیبانی از پوستههای دیگر را پیشنهاد دهند یا حتی خودشان این قابلیت را توسعه دهند، زیرا مدل تکمیل پوسته در .NET 10 بهصورت افزونهپذیر طراحی شده است.dotnet build، dotnet publish یا dotnet pack، ممکن است نیاز به احراز هویت با مخازن NuGet داشته باشند. در نسخههای قبلی، توسعهدهندگان مجبور بودند بهصورت دستی پرچم --interactive را به دستورات اضافه کنند تا ارائهدهندگان اعتبار (Credential Providers) بتوانند بهصورت پویا عمل کنند. عدم استفاده از این پرچم منجر به خطاهایی مانند عدم دسترسی به مخزن NuGet میشد.--interactive بهصورت پیشفرض برای دستوراتی که در یک محیط تعاملی (مانند ترمینال در حضور کاربر) اجرا میشوند، فعال است. این قابلیت با استفاده از منطقی مشابه با لوگر ترمینال MSBuild که در .NET 8 معرفی شد، تشخیص میدهد که آیا دستور در یک محیط CI/CD (مانند سرورهای ساخت) اجرا میشود یا خیر. در محیطهای غیرتعاملی، این پرچم بهصورت خودکار غیرفعال میشود تا از توقفهای ناخواسته جلوگیری شود. توسعهدهندگان همچنان میتوانند با استفاده از --interactive false این رفتار را غیرفعال کنند.--interactive ممکن است برای قابلیتهای دیگری مانند نمایش اعلانها (Prompts) یا نوارهای پیشرفت (Progress Bars) نیز استفاده شود، که CLI را کاربرپسندتر خواهد کرد.global.json این مشکل را حل کرده است.paths به فایل global.json، مسیرهای سفارشی را برای جستجوی SDK مشخص کنند. این امکان را فراهم میکند که یک نسخه خاص از SDK فقط در یک مخزن (Repository) خاص استفاده شود، بدون تأثیر بر نصب سراسری. بهعنوان مثال، فرض کنید در یک مخزن، فایل global.json بهصورت زیر تنظیم شده است:{
"sdk": {
"version": "10.0.100-preview.3",
"paths": [
"./.dotnet"
]
}
}./.dotnet را برای آن مخزن استفاده میکند، اما خارج از این مخزن به نصب سراسری بازمیگردد. این ویژگی برای تیمهایی که روی پروژههای متعدد با نسخههای مختلف SDK کار میکنند، بسیار مفید است. همچنین، ابزارهای IDE مانند Visual Studio میتوانند از این اطلاعات برای تنظیم خودکار مسیر SDK استفاده کنند، بدون نیاز به تنظیمات دستی پیچیده.<EnableSdkContainerSupport> را در فایل پروژه تنظیم میکردند. در .NET 10 Preview 3، این الزام حذف شده و هر پروژهای که قابلیت انتشار داشته باشد، بهصورت پیشفرض میتواند بهعنوان کانتینر منتشر شود.dotnet publish /t:PublishContainer