املای صحیح فناوریهای مرتبط با مایکروسافت
releasing-the-source-code
فعالسازی توزیع فایلهای PDB به همراه بستههای NuGet
وجود فایلهای PDB، برای اجرای برنامهها ضرورتی ندارند؛ اما اگر ارائه شوند، به کمک آنها میتوان گزارشهای استثناءهای بسیار کاملتری را به همراه نام فایل و شماره سطرهای مرتبط موجود در Exception.StackTrace، مشاهده کرد.
پیشتر توسعه دهندگان بستههای NuGet، فایلهای PDB را خودشان با تعریف یک سری include در فایل مشخصات بسته، به فایل نهایی تولیدی اضافه میکردند. اما این روزها با ارائهی «NuGet.org Symbol Server»، دیگر افزودن فایلهای PDB به بستههای nupkg توصیه نمیشود. چون حجم نهایی و زمان بازیابی بستهها را بیش از اندازه افزایش میدهند؛ خصوصا اگر مصرف کنندهای قصد دیباگ آنها را نداشته باشد.
راه حل جدید توصیه شده، ارائهی فایلهای ویژهی snupkg. در کنار بستههای nupkg. معمولی است که حاوی فایلهای PDB متناظر با بستهی اصلی NuGet هستند.
برای فعالسازی آنها در پروژههای NET Core. بستههای نیوگت خود تنها کافی است دو تنظیم زیر را به فایل csproj اضافه کنید:
<PropertyGroup> <IncludeSymbols>true</IncludeSymbols> <SymbolPackageFormat>snupkg</SymbolPackageFormat> </PropertyGroup>
در سمت مصرف کننده، IDE شما باید برای کار با این Symbol Server تنظیم شده باشد.
فعالسازی تولید Source Link
وجود PDBها جهت دیباگ بستههای ارائه شده بسیار مفیدند؛ اما اگر بر روی کدهای نهایی بهینه سازی صورت گرفته باشد، ممکن است اطلاعات دیباگ آنها با کد اصلی تطابق پیدا نکنند. برای بهبود این وضعیت و ارتقاء آن به یک سطح بالاتر، مفهوم source link ارائه شدهاست که مستقل است از نوع زبان و همچنین سورس کنترل.
کار سورسلینک، افزودن متادیتای سورس کنترل انتخابی، به بستهی نهایی تولید شدهاست. به این صورت میتوان سورس کامل و متناظر با قطعه کد بسته و کتابخانهی ثالث در حال دیباگ را در IDE خود داشت و با آن به نحو متداولی کار کرد. یعنی سورس لینک، قابلیت «Step Into" the source code"» را مهیا میکند. متادیتای اضافه شده، دقیقا مشخص میکند که بستهی تولیدی نهایی، متناظر با کدام commit سورس کنترل است. به این ترتیب دقیقا میتوان به کدهای همان commit ای که بسته بر اساس آن کامپایل شدهاست، در IDE خود دسترسی یافت.
این قابلیت از Visual Studio 15.3 به بعد در اختیار کاربران آن است (گزینهی Enable Source Server Support، در قسمت Debug/General آن باید فعال شود). همچنین Rider و VSCode نیز از آن پشتیبانی میکنند. برای Rider باید در قسمت Tools/External symbols، گزینههای Use sources from symbol files when available و Allow downloading symbols from remote locations را فعال کنید.
همچنین برای فعالسازی آن در فایل csproj بستهی نیوگت خود میتوانید تنظیمات زیر را اضافه کنید:
<PropertyGroup> <PublishRepositoryUrl>true</PublishRepositoryUrl> <EmbedUntrackedSources>true</EmbedUntrackedSources> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" /> </ItemGroup>
روش فعالسازی Source Link در پروژهی VSCode
اگر از VSCode استفاده میکنید، نیاز است تنظیمات زیر را به قسمت configurations فایل launch.json خود اضافه کنید تا قابلیت «Step Into" the source code"» بستههای نیوگتی که از SourceLink پشتیبانی میکنند، با فشردن دکمهی F11 در حین دیباگ، فعال شود:
"justMyCode": false, "symbolOptions": { "searchMicrosoftSymbolServer": true }, "suppressJITOptimizations": true, "env": { "COMPlus_ZapDisable": "1" }
در هنگام اولین بارگزاری پروژه در مخزن Git ، گاها دیده میشود که Visual Studio فایل gitignore . ایی را که شما آماده کردهاید، نادیده گرفته و فایل gitignore . پیش فرض خود را در مخزن Push میکند. در این پست یک راه حل ممکن برای حل این مشکل ارائه میدهیم.
1- در Visual Studio از مسیر File->Add to Source Control و با انتخاب Git پروژه را آماده کنید:
2- بدون هیچ تغییری، پروژه را ببندید و در مسیر ذخیره سازی پروژه، به پوشهی git . (مخفی است ( وارد شوید.
3- فایل ms-persist.xml را حذف کنید.
4- پروژه را باز کنید. در قسمت Team Explorer
وارد Setting شوید. در قسمت Ignore File، فایل gitignore . را مطابق نیاز خود ویرایش و ذخیره
کنید.
5- در قسمت Team Explorer وارد قسمت Changes شوید. یک نام مناسب را وارد و سپس Commit کنید.
6 - در بالا با کلیک روی sync به قسمت commits unsync وارد خواهید شد. در این جا آدرس مخزن پروژه را وارد کنید و گزینه Publish را وارد کنید.
7- تا این مرحله فایل gitignore مورد نظر شما وارد مخزن شده است. برای بارگزاری مابقی پروژه به ترتیب مراحل 1 ، 5 و سپس 6 را تکرار کنید با این تفاوت که در مرحله 6 نیازی به Publish نبوده و صرفا انتخاب گزینه sync کافی است.
git branch [branch name]
git branch
git checkout [branch name]
git checkout -b [branch name]
تذکر:
در صورتیکه working tree تقریبا clean نباشد، یعنی تغییراتی در فایلها صورت گرفته باشد که این تغییرات هنوز در repository ذخیره نشده باشند، git امکان تعویض شاخه را نخواهد داد. علت تقریبا به این جهت است که در مواردی git میتواند برخی تفاوتها را نادیده بگیرد؛ مثلا اگر فایلی در شاخهی دیگر وجود نداشته باشد. در این حالت سه راهکار پیش روی کاربر است:
برای حذف یک شاخه ایجاد شده از دستور زیر استفاده میشود:
git branch -d [branch name]
git branch -m [old name][new name]
git merge [branch name]
تداخل یا conflict:
git merge --abort
git merge --continue
git stash save "[stash name]"
git stash list
stash@{number}
git stash show stahs@{[number]}
git stash Drop [stash name]
git stash clear
به مثالهای زیر و شکل شاخهها بعد از اعمال دستورات merge و rebase توجه کنید :
در شاخه master فایل readme5 اضافه شده و در شاخه a2 فایل readme4 اضافه شده و بعد تغییری در آن ذخیره شده است
شاخه a1 در master ادغام شده است
شکل درختی شاخهها پس از ادغام
شکل شاخهها بعد از اعمال rebase
همانطور که مشاهده میشود با سوئیچ به شاخه master هنوز head در محل قبلی خود است
با اعمال دستور ادغام، head به محل آخرین commit منتقل میشود
بعد از انجام دستور rebase باید از دستور merge استفاده کرد. زیرا هر شاخه برای خود head جداگانهای دارد. بعد از اجرای این فرمان، هنوز head در شاخه مقصد به آخرین فرمان خود اشاره میکند. در آخرین فرمان، شاخهای اضافه شده، بنابراین اجرای دستور merge حالت fast forward را پیاده میکند و head به آخرین commit منتقل میشود.
تذکر:
git rebase [destination branch]
git rebase [destination][source]
به تفاوت محل درج ادغامها در merge و rebase توجه کنید.
git cherry-pick [branch name]
استفاده از Kendo UI templates
<a href="/">Test</a>
عدم اجرای پروژه در VS 2012
<add name="IrisDbContext" providerName="System.Data.SqlClient" connectionString="Data Source=(local);Integrated Security=true;Initial Catalog=IrisDB" />