مطالب
مدیریت مرکزی شماره نگارش‌های بسته‌های NuGet در پروژه‌های NET Core.
عموما برنامه‌های بزرگ NET.، به چندین زیر پروژه شکسته می‌شوند تا مدیریت آن‌ها ساده‌تر شود. مهم‌ترین مشکلی که در این حالت پس از مدتی بروز می‌کند، هماهنگ نگه داشتن شماره نگارش‌های ارجاعات NuGet این پروژه‌ها است و همچنین به روز رسانی مکرر و هر باره‌ی تمام این فایل‌های csproj. به همین جهت ایده‌ی مدیریت مرکزی شماره نگارش‌های ارجاعات پروژه‌های NuGet قرار است به نگارش بعدی آن اضافه شود که البته هم اکنون نیز قسمتی از آن در NET Core SDK 3.1.300. به بعد، قابل استفاده‌است که جزئیات آن‌را در ادامه مرور می‌کنیم.


ایجاد فایل جدید Directory.Packages.props

زمانیکه قرار است شماره نگارش‌های بسته‌های NuGet مختلف مورد استفاده‌ی در برنامه، به صورت مرکزی مدیریت شوند، نیاز به یک مخزن ثبت آن‌ها نیز می‌باشد. به همین جهت یک فایل جدید را به نام Directory.Packages.props در کنار فایل sln پروژه‌ی خود ایجاد کنید (در ریشه‌ی اصلی پروژه)؛ با این محتوای فرضی:
<Project>
  <ItemGroup>
    <PackageVersion Include="Microsoft.Extensions.Localization.Abstractions" Version="3.1.8" />
    <PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.8" />
  </ItemGroup>
</Project>
برای تشکیل این فایل، فایل‌های csproj مختلف موجود در solution جاری را یافته و سپس PackageReference‌های آن‌ها را به فایل props فوق کپی کنید؛ با یک تفاوت مهم: بجای PackageReference اینبار از نام PackageVersion استفاده می‌شود.


تغییرات مورد نیاز در فایل‌های پروژه‌های موجود

در ادامه مجددا به تمام فایل‌های csproj خود مراجعه کرده و ویژگی Version را از آن‌ها حذف کنید؛ مانند:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Localization.Abstractions" />
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
  </ItemGroup>
</Project>
 از این پس دیگر هیچکدام از فایل‌های پروژه‌ی شما نباید به همراه قید صریح شماره نگارش بسته‌های مورد استفاده باشند؛ در غیر اینصورت در حین Build پروژه، خطای زیر را دریافت خواهید کرد:
error NU1008: Projects that use central package version management should not define the version on the PackageReference items

همچنین اگر دقت کرده باشید، ویژگی جدید ManagePackageVersionsCentrally نیز به این فایل پروژه و سایر فایل‌های پروژه نیز باید اضافه شود. حالت پیش‌فرض آن false است.

یک نکته: می‌توان ویژگی ManagePackageVersionsCentrally را نیز به صورت سراسری به فایل Directory.Packages.props اضافه کرد تا به صورت خودکار به تمام فایل‌های csproj موجود، اعمال شود:
<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
  </PropertyGroup>
  <ItemGroup>
    <PackageVersion Include="Microsoft.Extensions.Localization.Abstractions" Version="3.1.8" />
    <PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.8" />
  </ItemGroup>
</Project>


نحوه‌ی افزودن بسته‌های جدید

قابلیتی که تا اینجا معرفی شد، در NET Core SDK 3.1.300. به بعد قابل دسترسی و استفاده‌است (و پس از این تغییرات، برنامه بدون مشکل کامپایل می‌شود)؛ اما هنوز NET Core CLI. برای افزودن خودکار بسته‌های جدید NuGet به این سیستم، به روز رسانی نشده‌است. یعنی فعلا اگر خواستید بسته‌ی جدیدی را اضافه کنید باید ابتدا به صورت دستی PackageVersion آن‌را در فایل Directory.Packages.props ثبت کنید و سپس PackageReference بدون شماره‌ی نگارش را نیز به پروژه‌ی مدنظر خود به صورت دستی اضافه کنید.



برای مطالعه بیشتر
مستندات رسمی آن
وضعیت پیاده سازی آن
نظرات مطالب
WF:Windows Workflow #1
مشکل جایی شروع میشه که خروجی هایی که هر سازمان از یه مفهوم دارند متفاوت هست، بطور مثال در حوزه نرم افزار‌های مربوط به حضور و غیاب که به ظاهر شاید فقط ورود و خروج و اضافه کار و کسر کار است ولی در ریز کار و در اعمال قوانین مربوط به سازمان استفاده کننده کاملا متفاوت و شاید تجمیع آنها در قالب هارد کد دست نیافتی باشد: برای نمونه میتوان روی نوع برخورد با اضافه کاری صحبت کرد که در یک سازمان طریق تجمیع و محاسبه این مورد در روز و ماه و سال تفاوت است. جایی حتی ورود قبل از ساعت کاری اضافه کار محسوب میشود و ضرایب و نوع ضرایب آن متغییر و متفاوت است، شاید با گروه بندی و راهکارهایی از این دست بتوان از این سفارشی سازی‌ها تا حدودی در امان ماند ولی در نهایت کار پروژه به اجبار باید به تولید یه موتور تعریف قوانین برای سپردن این مسئولیت (ساخت و ویرایش، بهمراه پیچیدگیهای سازمانی آن) برود که در بعضی از اوقات WF جواب دلخواه هیچ کدام از دو سمت را نمیدهد.
اشتراک‌ها
ثبت سفارش تجهیزات ضروری زیرساختی فناوری اطلاعات متوقف شد

«... هیات مدیره سخت‌افزار سازمان نظام صنفی رایانه‌ای ممنوعیت وارادت کالاهایی مانند CPU، سرور، لپ‌تاپ، تبلت، استوریج، هارد دیسک، روتر و... را شوخی دانست و خواستار رسیدگی سریع به این موضوع شد... »

یک عدد هارد یک ترابایت شده نزدیک به یک میلیون تومن ....

 
ثبت سفارش تجهیزات ضروری زیرساختی فناوری اطلاعات متوقف شد
اشتراک‌ها
تفاوت انواع گواهینامه EV, OV, DV, SSL

گواهینامه SSL دارای انواع مختلفی است، که هر نوع آن تامین کننده نیاز خاصی می‌باشد و از اعتبار و قیمت متفاوتی برخوردار است و علاوه بر تامین امنیت می‌تواند اعتبار یک سازمان را نمایش دهد. به منظور انتخاب بهترین نوع گواهینامه SSL و صرف مناسب‌ترین هزینه به منظور برآورده نمودن نیاز و کارایی مطلوب، لازم است ابتدا تعریفی از آنها داشته باشیم ...

تفاوت انواع گواهینامه   EV, OV, DV, SSL
اشتراک‌ها
آیا از KPI باید به انباره داده و هوش تجاری رسید؟
اکنون تا اندازه ای مسیر و متدولوژی‌های پروژه‌های DW/BI روشنتر از گذشته شده است. 
این مشتری نیست که دیکته کند چه باید روی صفحه مانیتور ببیند. 
متاسفانه از گوشه و کنار به گوش میرسد که برخی از اهالی IT که بعضاً نیز کارشناس صنایع هستند با بررسیKPIهای یک سازمان، پروژه DW/BI آن بنگاه را شروع مینمایند. در این باره چند مورد متناقض وجود دارد ...
آیا از KPI باید به انباره داده و هوش تجاری رسید؟
نظرات مطالب
امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x - قسمت چهاردهم- آماده شدن برای انتشار برنامه
با سلام؛ من  از ids4 برای سیستم احراز هویت سازمان استفاده میکنم حالا چالشی که برای من پیش آمده است به این شکله که اگر برنامهA بر روی مرورگر کروم توسط یک یوزر لاگین شد، و همان یوزر اگر توسط مرورگر دیگر اقدام به لاگین شدن به سیستم را داشت ،خودبخود از مرورگر کروم لاگ اوت شود.