DotNet | دات نت
1.2K subscribers
671 photos
231 videos
486 files
730 links
تو این روزا بهتره که همیشه علم خودمون رو بالا ببریم و بتونیم با سریع ترین راه ممکن خودمونو بروز نگه داریم.
- سعی کنیم از کمترین امکانات بیشترین بهره رو ببریم
منتظرت هستیم😉
دنیا رو جای بهتری برای یادگیری کنیم 🌹
#course #book


🆔 @dotnetcode
Download Telegram
Course Track Path For .NET Developers
مجموعه درس‌های آنلاین برای تبدیل شدن به یک برنامه‌نویس دات‌نت خوب هستند.

این دوره هم آپدیت شدش رو قرار میدم به زودی

#roadmap #udemy #course #dotnet #net #aspnet #aspnetcore

https://www.dotnetmastery.com/home/careerPath
5
📽مسیر کامل یادگیری ASP.NET Core از صفر تا صد (A-Z)

نکته : دوره شماره 11 به خاطر این که آژور ایران رو تحریم کرده قرار ندادم.(جلوگیری از اتلاف وقت ، مباحث کاربردی تر دیگری هست که هنوز بلد نیستیم😉🌹)
همچنين ديدم خيلى از جاها اين دوره ها رو به صورت تكى و آپديت نشده ميفروشن ، رايگان استفاده كنيد به همراه آخرين آپديت ها و بهترين بهره رو از اين مسير آموزشى فوق العاده داشته باشين.


📁به همراه تمام فایل ها و زیرنویس ها

برای کسانی که میخواهند از صفر ASP.NET Core را شروع کنند ، جزو بهترین مسیر هایی آموزشی دات نت هست که وجود دارد

—دانلود 📥 :

پارت 1 | پارت 2 | پارت 3 | پارت 4 | پارت 5 | پارت 6 | پارت 7 | پارت 8 | پارت 9 | پارت 10 | پارت 11 | پارت 12 | پارت 13 | پارت 14 | پارت 15 | پارت 16 | پارت 17 | پارت 18 | پارت 19 | پارت 20 | پارت 21

🗂 دقت کنید باید همه پارت ها دانلود بشوند و بعد همه پارت ها را انتخاب کنید و Extract کنید


ما رو به دوستان خودتان معرفی کنید 😉🌹

#course #udemy #csharp #dotnet #dotnetpath #dotnetmastery

🆔 @dotnetcode
9👍2
آیا میتوانید سوال بالا را بدون استفاده از توابع بازگشتی حل نمایید؟

در #C قابلیتی وجود دارد به نام LINQ که با آن میشود بدون استفاده از حلقه و تابع بازگشتی، چنین مسائلی را حل نمود.
راه حل فلوئنت:
https://dotnetfiddle.net/Ossu01
راه حل خالص:
https://dotnetfiddle.net/4V9kPl

#csharp #dotnet #problemsolving #linq #laylazi
📽مسیر کامل یادگیری Graphql

حدود 12 ساعت دوره از مبتدی تا پیشرفته

📁به همراه تمام فایل ها و زیرنویس ها

برای کسانی که میخواهند Graphql را شروع کنند و در آن حرفه ای شوند.

—دانلود 📥 :

پارت اول

🗂 دقت کنید باید همه پارت ها دانلود بشوند و بعد همه پارت ها را انتخاب کنید و Extract کنید


ما رو به دوستان خودتان معرفی کنید 😉🌹

#course #pluralsight #csharp #api #graphql #asp #dotnet

🆔 @dotnetcode
3👍1
سلام سلام
قرار هست امشب ساعت 7:30 باهم مایکروسافت بیلد رو به صورت دورهمی در تیمز ببنیم
به این دورهمی بیاین تا بتونیم در کنار هم با تکنولوژی های جدید آشنا بشیم
لینک دورهمی : https://teams.microsoft.com/l/meetup-join/19:91cc6eeb886d4f0eb167546a1ce3fd2f@thread.tacv2/1653403049063?context=%7B%22Tid%22:%2224fbf492-43a9-4a8f-ba7b-6f12fa9b8d87%22,%22Oid%22:%22b7a23ba2-09f7-4abc-9303-bc4ae688206a%22%7D
#cs_internship #MSBuild #dotnet
🎯 Senior .Net Developer

💵 حقوق سالانه: قابل مذاکره

📍محل کار: تهران - حضوری

⚙️ صنعت: تکنولوژی

🌟 مهارت‌های کلیدی:
• مسلط بر توسعه نرم‌افزار با .Net
• تجربه در زمینه ساختار نرم‌افزار
• مهارت حل مسئله

📩 برای ارسال رزومه می‌توانید از طریق این لینک و یا آیدی تلگرام @HRBamboosHeadHunter اقدام نمایید.
-------------
برای اطلاع از آخرین موقعیت‌های شغلی ما را در لینکدین و واتساپ دنبال کنید.

#Senior_DotNET_Developer #DotNET #موقعیت_شغلی #استخدام
🎯 Senior .NET Engineer

💵 حقوق سالانه: ۰.۸ تا ۱ میلیارد تومان


📍محل کار: تهران - نیمه حضوری

⚙️ صنعت: فین‌تک

🌟 مهارت‌های کلیدی:
• مسلط بر توسعه نرم‌افزار با .Net
• مهارت رهبری و مدیریت تیم
• مهارت حل مسئله

📩 برای ارسال رزومه می‌توانید از طریق این لینک و یا آیدی تلگرام @HRBamboosHeadHunter اقدام نمایید.
-------------
برای اطلاع از آخرین موقعیت‌های شغلی ما را در لینکدین و واتساپ دنبال کنید.

#Senior_DotNet_Engineer #DotNet #موقعیت_شغلی #استخدام
👍1
سیستم Logging در NET.: از اشتباهات رایج تا بهترین روش‌ها

مقدمه
سلام دوستان! اینجا می‌خوایم در مورد Logging داخل برنامه‌های NET. صحبت کنیم. نکاتی که نیک چاپساس میگه رو به زبون ساده مرور می‌کنیم تا بتونید به راحتی سیستم‌های خودتون رو بهبود بدید.

اهمیت Logging
سیستم Logging به شما کمک می‌کنه تا:
- خطاها رو راحت‌تر پیدا کنید.
- رفتار برنامه رو زیر نظر داشته باشید.
- اطلاعات لازم برای رفع مشکلات رو جمع‌آوری کنید.

اما اگه درست انجام نشه، ممکنه:
- گزارش‌ها خیلی بزرگ و پیچیده بشن.
- نتونید مشکلات رو به درستی بفهمید.
- عملکرد برنامه تحت تاثیر قرار بگیره.

۸ قانون ساده Logging

قانون ۱: پیام یعنی الگوی پیام
به جای یه رشته ساده، پیام باید الگو باشه. اینجوری پیام‌ها مرتب‌تر و قابل فهم‌تر می‌شن.

قانون ۲: از درون‌یابی یا الحاق رشته دوری کن
این روش‌ها می‌تونن باعث کاهش سرعت برنامه بشن و اطلاعات مفید رو از بین ببرن.

قانون ۳: Logging ساختاریافته رو انتخاب کن
با استفاده از الگوهای پیام با پارامترهای مشخص:
- سرعت و کارایی بهتر می‌گیری.
- داده‌ها به صورت ساختاریافته ثبت می‌شن.
- خوانایی گزارش‌ها افزایش پیدا می‌کنه.

قانون ۴: از جعبه‌سازی غیرضروری دوری کن
قبل از اینکه هر مقداری رو ارسال کنی، ببین سطح گزارش فعاله یا نه تا از مشکلات عملکردی جلو گیری کنی.

قانون ۵: از Source Generator استفاده کن
این ابزار توی NET. بهت کمک می‌کنه تا:
- کد بهینه تولید بشه.
- از نوشتن کد اضافی جلوگیری بشه.
- گزارش‌های یکنواخت و ساختاریافته داشته باشی.

قانون ۶: پیچیدگی‌های غیرضروری رو کنار بگذار
همیشه سعی کن راه‌حل‌های ساده و قابل فهم انتخاب کنی تا همه راحت کار کنن.

قانون ۷: هشدار رو به عنوان سطح پیش‌فرض انتخاب کن
این کار باعث می‌شه:
- حجم گزارش‌ها کمتر بشه.
- تمرکز روی موارد مهم حفظ بشه.
(البته برای موارد خاص می‌تونی گزارش‌های اطلاعاتی هم فعال کنی.)

قانون ۸: فقط اطلاعات ضروری رو ثبت کن
تنها اون اطلاعاتی رو ثبت کن که واقعاً برای فهم داستان برنامه نیاز داری. اینجوری گزارش‌ها مرتب و مفید می‌مونن.

نتیجه‌گیری
سیستم Logging درست کلید موفقیت توی برنامه‌نویسه. با رعایت این ۸ قانون ساده، می‌تونی گزارش‌هایی داشته باشی که هم کارآمد باشن و هم بهت کمک کنن داستان برنامه‌ات رو بهتر بفهمی. فقط اطلاعات ضروری رو ثبت کن تا همه چیز مرتب و بهینه بمونه.


منابع
- ویدیوی اصلی
- مستندات NET. برای Logging

🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید!

📚💻 @dotnetcode 🖥👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
خداحافظی با انتظارهای چندساله، ویژوال استودیو هم سالانه شد!

یه خبر مهم و استراتژیک برای همه دات‌نتی‌ها و کاربرای ویژوال استودیو! مایکروسافت بالاخره تصمیم گرفت مدل انتشار IDE محبوبش رو تغییر بده و یه نظم اساسی بهش ببخشه.

اگه یادتون باشه قبلاً روال کار اینجوری بود که باید ۲ یا ۳ سال صبر می‌کردیم تا یه نسخه ماژور جدید بیاد (مثل پرش از ۲۰۱۹ به ۲۰۲۲). اما طبق داکیومنت‌های جدیدی که برای نسخه ۲۰۲۶ منتشر شده، بازی عوض شده!

👇 توی تصویر پست دقیق نگاه کنید:

1️⃣ ریلیزهای منظم سالانه: از این به بعد قراره مثل ساعت دقیق، هر سال یک نسخه اصلی جدید داشته باشیم. یعنی بلافاصله بعد از ویژوال استودیو ۲۰۲۶، باید منتظر ۲۰۲۷، ۲۰۲۸ و ۲۰۲۹ باشیم. این یعنی ویژگی‌های جدید خیلی سریع‌تر به دستمون می‌رسه و دیگه خبری از "بیگ‌بنگ"های چند ساله نیست. این حرکت دقیقا هم‌راستا با چرخه انتشار سالانه .NET هست.

2️⃣ خیال‌راحت با کانال‌های LTSC: شاید با خودتون بگید «ای بابا! کی حال داره هر سال نسخه عوض کنه و درگیر باگ‌های احتمالی بشه؟»

نگران نباشید! مایکروسافت برای تیم‌های Enterprise و کسایی که دنبال ثباتن، نسخه‌های LTSC (Long-Term Servicing Channel) رو همزمان ارائه میده. این یعنی می‌تونید روی یه نسخه پایدار بمونید که تا ۱۸ ماه ساپورت میشه و فقط پچ‌های امنیتی رو می‌گیره، بدون اینکه محیط توسعه‌تون بهم بریزه.

🔥 خلاصه ماجرا:
مایکروسافت داره اکوسیستم توسعه‌ش رو مدرن‌تر و سریع‌تر می‌کنه. پاییز هر سال، هم منتظر دات‌نت جدید باشید، هم ویژوال استودیو جدید!

🔗 جزئیات کامل و فنی این تغییرات رو توی لینک رسمی زیر بخونید:
https://learn.microsoft.com/en-us/visualstudio/releases/2026/release-rhythm

#برنامه_نویسی #مایکروسافت #ویژوال_استودیو #دات_نت #تکنولوژی #VisualStudio #DotNet #Microsoft

🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید!

📚💻 @dotnetcode 🖥👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥7🎉3
آینده تست‌نویسی در .NET؛ وقتی هوش مصنوعی خودش را قضاوت می‌کند!

اگر در اکوسیستم دات‌نت فعالیت می‌کنید، حتماً می‌دانید که ورود AI به اپلیکیشن‌ها، مدل‌های سنتی تست‌نویسی را به چالش کشیده است. دیگر صرفاً چک کردن یک خروجی ثابت کافی نیست؛ ما با مدل‌های زبانی (LLM) سر و کار داریم که پاسخ‌هایشان متغیر است.
مایکروسافت با معرفی کتابخانه‌های Microsoft.Extensions.AI.Evaluation و ابزارهای جدید در Visual Studio 2026، پازل تست‌نویسی هوشمند را کامل کرده است.

💡 نکات کلیدی ویدیو (AI-Powered Testing in VS):

در ویدیوی جدید کانال دات‌نت، مک‌کنا بارلو (PM تیم ابزارهای دات‌نت) نکات بسیار مهمی را مطرح کرد:
1️⃣ تست‌نویسی خودکار با Copilot: حالا GitHub Copilot می‌تواند برای کل Solution شما به‌صورت یکجا Unit Testهای باکیفیت بنویسد. این یعنی دیگر لازم نیست ساعت‌ها وقت صرف نوشتن کدهای تکراری تست کنید.

2️⃣ ترکیب Code Coverage و AI: ابزار Code Coverage در ویژوال استودیو حالا هوشمندتر شده؛ نقاطی از کد که تست نشده‌اند را شناسایی کرده و مستقیماً به Copilot پیشنهاد می‌دهد تا برای همان بخش‌های پرریسک، تست تولید کند.

3️⃣ گزارش‌های بصری (AI Eval Reporting): با ابزار جدید dotnet aieval می‌توانید گزارش‌های گرافیکی دقیقی در مرورگر ببینید که نشان می‌دهد مدل هوش مصنوعی شما در چه بخش‌هایی (مثلاً در Groundedness یا صحت اطلاعات) ضعف داشته است.

4️⃣ فراتر از Black Box: هدف این ابزارها این است که خروجی AI دیگر یک "جعبه سیاه" نباشد. شما می‌توانید دقیقاً بفهمید چرا یک مدل امتیاز پایینی گرفته و با چه منطقی پاسخ داده است.

🛠 کتابخانه Microsoft.Extensions.AI.Evaluation شامل چیست؟
این پکیج‌ها فرآیند ارزیابی را به چهار لایه تقسیم می‌کنند:
ارزیابی کیفی (Quality): سنجش میزان مرتبط بودن (Relevance) و انسجام (Coherence) پاسخ‌ها.

ارزیابی ایمنی (Safety): شناسایی خودکار محتوای سمی، نفرت‌پراکنی یا کد‌های مخرب تولید شده توسط AI.

ارزیابی مستند بودن (Groundedness): حیاتی‌ترین بخش برای جلوگیری از توهم (Hallucination)؛ چک می‌کند که آیا AI بر اساس دیتای واقعی شما حرف می‌زند یا از خودش داستان می‌سازد!

ارزیابی کلاسیک (NLP): استفاده از معیارهای BLEU و F1 برای سنجش شباهت متنی با پاسخ‌های مرجع.

چرا این موضوع مهم است؟
در دنیای واقعی، ما نمی‌توانیم به خروجی مدل‌های هوش مصنوعی اعتماد صددرصدی داشته باشیم. این کتابخانه‌ها به ما "اعتماد سیستماتیک" می‌دهند. یعنی قبل از اینکه کاربر نهایی با یک پاسخ اشتباه روبرو شود، سیستم تست شما آن را شکار می‌کند.

📌 ویژگی طلایی: تمام این فرآیندها دارای سیستم Caching هستند؛ یعنی اگر یک تست را دوباره اجرا کنید و ورودی تغییری نکرده باشد، هزینه‌ای برای API پرداخت نمی‌کنید و نتیجه بلافاصله نمایش داده می‌شود.

📺 مشاهده ویدیو کامل در یوتیوب:
🔗 https://youtu.be/Bkn78klGhtc?si=c5dBLw1y7ituLTFH
📖 مطالعه مستندات رسمی:
🔗 https://learn.microsoft.com/en-us/dotnet/ai/evaluation/libraries

#dotnet #csharp #VisualStudio2026 #AI #Testing #GitHubCopilot #Programming #SoftwareEngineering #هوش_مصنوعی #برنامه_نویسی

🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید!

📚💻 @dotnetcode 🖥👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
6👏4🔥1
🛠 نجات توسعه‌دهنده‌ها در شرایط «نت ملی»؛ تجربیات عملی ما برای زنده نگه داشتن چرخه تولید

توی این چند وقت که دسترسی‌ها محدود شد و اینترنت به حالت داخلی (Intranet) رفت، ما هم مثل خیلی از تیم‌های دیگه با چالش‌های جدی روبرو شدیم. اما به جای متوقف شدن، سعی کردیم با ابزارهای جایگزین و تغییر استراتژی، جریان کار رو حفظ کنیم.

خواستم تجربیات واقعی و سولوشن‌هایی که تو این مدت پیاده‌سازی کردیم رو باهاتون به اشتراک بذارم تا شاید گره‌ای از کار شما هم باز کنه:

1️⃣ عبور از تحریم و محدودیت پکیج‌ها (Frontend & Backend)
برای پروژه‌هایی مثل Next.js که وابستگی زیادی به پکیج‌ها دارن، اولین حرکت ما استفاده از Mirror Serverهای داخلی بود.

🔹 پیشنهاد: سرویس Runflare تقریباً اکثر ابزارها رو Mirror کرده، سرورهاش داخلیه و سرعتش عالیه.
🔗 https://runflare.com/mirrors/

🔥 خبر ویژه: همون روز اول با تیم فنی ران‌فلر صحبت کردم و دمشون گرم، خیلی سریع درخواست رو پیگیری کردن و Nuget رو هم به لیست سرویس‌هاشون اضافه کردن. الان دیگه دات‌نتی‌ها هم می‌تونن راحت پکیج‌ها رو دریافت کنن.

2️⃣ مدیریت داکر ایمیج‌ها (Docker Images)

برای پول (Pull) کردن ایمیج‌ها، پلتفرم docker.ir گزینه کارراه‌اندازی هست.

⚠️ نکته حیاتی برای دات‌نتی‌ها:
از اونجایی که ایمیج‌های دات‌نت روی Docker Hub نیستن و روی رجیستری مایکروسافت (MCR) قرار دارن، حتماً ایمیج‌های SDK و ASP Core رو:
۱. یا روی سیستم لوکال داشته باشید.
۲. یا (روش اصولی‌تر) روی رجیستری داخلی خودتون Push کنید تا در صورت قطعی، بیلدها فیل نشن.

3️⃣ خداحافظی با وابستگی به کش لوکال (The Nexus Solution)
اوایل کار متکی به کشِ لوکال سیستم‌ها (فولدر .nuget) بودیم، اما این روش ریسک بالایی داشت.

راهکار پایدار: ما Nexus رو بالا آوردیم. با این کار تمام پکیج‌های فرانت و بک‌‌اند یک‌بار در نکسوس کش میشن و اگه اینترنت کلاً قطع بشه، تیم فنی بدون هیچ توقفی به کارش ادامه میده.

4️⃣ ابزارهای مدیریت سورس، CI/CD و ارتباطات
برای اینکه تیم ریموت و پایپ‌لاین‌ها از کار نیفتن، از سرویس‌های داخلی و Self-Hosted استفاده کردیم:
* گیت و رانر: سرویس Hamgit (محصول هم‌روش) هم مخازن رو میزبانی می‌کنه و هم Runner برای پایپ‌لاین‌ها میده.
* جلسات آنلاین: جایگزین Google Meet، از Jitsi استفاده کردیم (هم توی بازارچه هم‌روش هست، هم می‌تونید روی سرور خودتون بالا بیارید).
* چت سازمانی: ما خودمون Mattermost رو روی سرور شخصی بالا آوردیم که عالیه. اگر دنبال سرویس آماده‌اید، Rocket.Chat در بازارچه ابری هم‌روش موجوده.

🔗 یک گزینه کمکی دیگر:
سرویس چابکان هم Mirrorهای خوبی ارائه میده که داشتن لینککش به عنوان پلن B ضرری نداره:
🔗 https://iran.chabokan.net/#services

💡 هدفم از این پست فقط انتقال تجربه و کمک به کامیونیتی بود. امیدوارم به کارتون بیاد. هر جا سوالی بود یا کمکی از دستم برمیومد، حتماً بگید.

🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید!

📚💻 @dotnetcode 🖥👨‍💻

#DevOps #DotNet #Network #Programming #Intranet #ExperienceSharing #SoftwareEngineering
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍4👏4
🚨 تغییر مهم در MassTransit: لایسنس تجاری از نسخه ۹.۰.۰

اگر در پروژه‌های دات‌نتی از کتابخانه MassTransit استفاده می‌کنید، مراقب آپدیت‌های جدید باشید. از نسخه 9.0.0 به بعد، این کتابخانه مدل لایسنس خود را به Commercial تغییر داده است.

خلاصه وضعیت جدید:
🔹 نسخه‌های ۸ و قدیمی‌تر: همچنان رایگان و Open Source (Apache 2.0) باقی می‌مانند.
🔹 نسخه ۹ و بالاتر: برای شرکت‌هایی با درآمد بالای ۱ میلیون دلار در سال پولی است.
🔹 استارتاپ‌ها و توسعه‌دهندگان مستقل: اگر درآمد سالانه زیر ۱ میلیون دلار باشد، همچنان می‌توانید با تخفیف ۱۰۰ درصدی (رایگان) استفاده کنید.

---

🛠 راهکار فنی: جلوگیری از آپدیت خودکار به نسخه پولی

برای اینکه ابزارهایی مثل NuGet یا Dependabot به صورت خودکار پروژه شما را به نسخه ۹ (پولی) ارتقا ندهند، باید ورژن را در فایل .csproj قفل کنید. استفاده از براکت `[]` به معنای اجبار روی یک نسخه دقیق است:

<PackageReference Include="MassTransit" Version="[8.5.7]" />


چرا این کار مهم است؟

* نوشتن Version="8.5.7" به NuGet اجازه می‌دهد نسخه‌های بالاتر (مثل 9.0.1) را هم نصب کند.
* اما Version="[8.5.7]" یعنی فقط و فقط همین نسخه نصب شود و جلوی ارتقای ناخواسته به نسخه پولی را می‌گیرد.

اگر پروژه‌ی بزرگی دارید که فعلاً بودجه خرید لایسنس ندارد، حتماً این تغییر را در پکیج‌های خود اعمال کنید.

🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید!

📚💻 @dotnetcode 🖥👨‍💻

#DotNet #MassTransit #CSharp #Programming_Tips #Microservices
Please open Telegram to view this post
VIEW IN TELEGRAM
4👏3👍2🔥1
🔥 نکته حیاتی در Hangfire: جنگ با ساعت و تایم‌زون‌ها! 🌍

اگر تا حالا براتون پیش اومده که جابی رو برای ساعت ۸ صبح تنظیم کردید ولی ساعت ۱۱:۳۰ اجرا شده، این پست برای شماست!

⚠️ ماجرا چیه؟
هنگ‌فایر (Hangfire) به صورت پیش‌فرض (Default) همه جاب‌های تکرارشونده (Recurring Jobs) رو بر مبنای ساعت UTC اجرا می‌کنه. یعنی اگر تنظیمات تایم‌زون رو بهش ندید، باید اختلاف ساعت ایران با گرینویچ رو دستی حساب کنید که اصلا جالب نیست.

حالا اگر بخوایم بگیم "به وقت ایران اجرا شو"، با یه چالش جدید روبرو می‌شیم:

🔸 ویندوز می‌گه: "Iran Standard Time"

🔸 لینوکس/داکر می‌گه: "Asia/Tehran"
اگر این تفاوت هندل نشه، روی سرور لینوکسی یا کانتینر داکر به خطای TimeZoneNotFoundException می‌خورید! 🤯

راه حل نهایی (Cross-Platform):
با این تیکه کد، هم مشکل UTC رو حل کنید و هم کدی بنویسید که روی ویندوز، لینوکس و مک بدون تغییر کار کنه:
using System.Runtime.InteropServices;

// 1. تشخیص خودکار شناسه تایم‌زون بر اساس سیستم‌عامل
// Windows -> "Iran Standard Time"
// Linux/Docker -> "Asia/Tehran"
var tehranId = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
? "Iran Standard Time"
: "Asia/Tehran";

// 2. تنظیم ساعت به وقت ایران
RecurringJob.AddOrUpdate(
type.FullName,
() => job.ExecuteAsync(),
attribute.CronExpression,
new RecurringJobOptions
{
// خداحافظ UTC، سلام تهران! 👋
TimeZone = TimeZoneInfo.FindSystemTimeZoneById(tehranId)
}
);

💡 با این روش، دیگه نگران جلو/عقب کشیدن ساعت‌ها یا تفاوت محیط لوکال و سرور نباشید.

🔗 بحث مرتبط در کامیونیتی هنگ‌فایر:
https://discuss.hangfire.io/t/need-local-time-instead-of-utc/279/7


🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید!

📚💻 @dotnetcode 🖥

#CSharp #DotNet #Hangfire #Docker #Backend #TimeZone #Tips
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍7🔥3