عنوان:

‫بررسی فرمت جدید و ساده‌تر فایل راه‌حل (SLNX.)


نویسنده: وحید نصیری
تاریخ: ۱۴۰۳/۱۲/۲۴ ۰۸:۰۹
آدرس: www.dntips.ir
این مطلب، فرمت جدید فایل راه‌حل (.SLNX) را برای ویژوال استودیو معرفی می‌کند، که محدودیت‌های فرمت موجود .SLN را ندارد.

چالش‌های فرمت .SLN:

  • ویرایش‌های دستی طاقت‌فرسا، مستعد خطا.
  • تداخل‌های مکرر ادغام (merge conflicts) در محیط‌های تیمی.
  • پرگو و زائد، با GUIDهای تکراری و فراداده (metadata).
  • عدم وجود یک فرمت فایل استاندارد، محدود کردن سازگاری.

بهبودهای فرمت .SLNX:

  • ساختار XML قابل خواندن و ویرایش توسط انسان.
  • حفظ فضای خالی و نظرات.
  • ردپای حداقلی برای عملکرد بهینه.
  • کاهش تداخل‌های ادغام.
  • سازگاری با ویژوال استودیو Dev 17.14 و نسخه‌های بعدی.
  • هم‌ترازی با قراردادهای MSBuild.

ویژگی‌ها و پیاده‌سازی کلیدی:

  • ذخیره به صورت XML (.SLNX).
  • پشتیبانی MSBuild، .NET CLI و C# Dev Kit.
  • انتقال از .SLN از طریق .NET CLI یا ویژوال استودیو.
  • توصیه می‌شود از داشتن هر دو فایل .SLN و .SLNX در یک مخزن (repository) خودداری شود.
  • فیلترهای راه‌حل (solution filters) همچنان پشتیبانی می‌شوند، اما ممکن است نیاز به به‌روزرسانی برای ارجاع به فایل جدید .SLNX داشته باشند.
  • افزونه‌ها (extensions) باید به کار خود ادامه دهند، اما آنهایی که مستقیماً فایل‌های راه‌حل را ویرایش می‌کنند ممکن است نیاز به به‌روزرسانی داشته باشند.
  • Globbing فایل به دلیل نگرانی‌های مربوط به عملکرد، پشتیبانی نمی‌شود.
  • حداقل نسخه‌های ابزار پشتیبانی شده: .NET 9.0.200 SDK یا ویژوال استودیو/ابزارهای ساخت 17.13 یا نسخه‌های بعدی.

نکات برجسته پرسش‌های متداول:

  • فایل‌های .SLNX، مانند .SLN، برای ویرایش باید بارگیری نشوند (unloaded).
  • توصیه می‌شود پشتیبانی‌های ابزارهای شخص ثالث تا نهایی شدن بیشتر فرمت انجام نشود.
  • سریال‌ساز متن‌بازی (open source serializer) برای آن در دسترس است: vs-solutionpersistence.

مثال از یک فایل .SLN قدیمی

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.9.34511.98
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetMonitorWebApp", "DotNetMonitorWebApp\DotNetMonitorWebApp.csproj", "{1385B389-B20C-4D19-8FE0-85629BC41343}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1385B389-B20C-4D19-8FE0-85629BC41343}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1385B389-B20C-4D19-8FE0-85629BC41343}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1385B389-B20C-4D19-8FE0-85629BC41343}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1385B389-B20C-4D19-8FE0-85629BC41343}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C12E911E-FAA3-4ACE-B6BF-C3605E866483}
EndGlobalSection
EndGlobal

مثال از یک فایل .SLNX جدید

<Solution>
<Project Path="DotNetMonitorWebApp\DotNetMonitorWebApp.csproj" />
</Solution>

نحوه انتقال از .SLN به .SLNX

استفاده از .NET CLI (برای پروژه‌های .NET)

dotnet SLN <YourSolutionFile.SLN> migrate

استفاده از ویژوال استودیو (توصیه شده برای همه زبان‌ها)

  1. روی گره راه‌حل در Solution Explorer راست کلیک کنید.
  2. File -> Save Solution As… را انتخاب کنید.
  3. در منوی کشویی نوع فایل، Xml Solution File (*.SLNX) را انتخاب کنید.
  4. روی Save کلیک کنید.




مشاهده مطلب اصلی