سلام فقط امکان استفاده از دات نت کور هستش؟ نمیشه برای برنامههای دات نت فریمورک هم استفاده کنیم؟
نظرات مطالب
بررسی تغییرات Reflection در NET Core.
GetTypeInfo از زمان دات نت 4.5 اضافه شده. یعنی آنچنان هم قابل انتقال نیست به تمام نگارشهای دات نت کامل.
یک نکته تکمیلی:
عبارت ClassLibrary.Test\bin\Debug\ClassLibrary.Test.dll به مسیر و نام dll تست شما اشاره میکنه.
برای Build پروژههای NET Framework Full. (مانند پروژههای ASP.NET MVC قدیم) باید به شکل زیر عمل کنید.
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v1.0.0
- name: Setup NuGet
uses: nuget/setup-nuget@v1.0.2
- name: Restore NuGet Packages
run: nuget restore src/WebApplication1.sln
- name: Build (Release)
run: msbuild src/WebApplication1.sln /p:Configuration=Release
- دستور runs-on: windows-latest این workflow را بر روی ویندوز اجرا میکنه (بدیهیه که پروژههای دات نت Full بر روی غیر از ویندوز قابل build شدن نیست)
- در step دوم MSBuild رو توسط اکشن microsoft/setup-msbuild نصب میکنیم.
- در step سوم Nuget رو توسطاکشن nuget/setup-nuget نصب میکنیم.
- در step چهارم وابستگی (پکیج)های پروژه رو restore میکنیم.
- در step چهارم پروژه رو توسط msbuild و در مود Release بیلد میکنیم.
- عبارت src/WebApplication1.sln به پوشه و نام فایل سلوشن شما اشاره میکنه.
و برای Test پروژههای خود میتونین از اکشن Malcolmnixon/Setup-VSTest به نحو زیر استفاده کنین
- name: Setup VSTest uses: Malcolmnixon/Setup-VSTest@v2 - name: VSTest run: vstest.console ClassLibrary.Test\bin\Debug\ClassLibrary.Test.dll
بحث اصلی مطلب جاری این است که NET Core. (پیاده سازی) با NET Standard. (قرارداد) یکی نیست. NET Core. یکی از پیاده سازیهای NET Standard. است؛ مانند دات نت 4.6.1 که آن هم پیاده سازی کنندهی دات نت استاندارد 2 است. هر دوی اینها دارای یک سری API خاص خودشان هم هستند که در NET Standard. وجود ندارند. سطح API دات نت Core هم بیشتر است از NET Standard. و در یکسری از موارد هم کاملا ناسازگار با دات نت کامل. بنابراین توافقی که در اینجا وجود دارد، صرفا پیاده سازی قرارداد NET Standard. است و بیشتر از آن هم مربوط است به توسعه دهندگان آن سکوی کاری خاص که الزامی به یکی بودن آنها نیست.
کاری که پیشتر میخواستند انجام دهند، محدود کردن ASP.NET Core به سطح API موجود در NET Core. بود (NET Core 2.0 only. یا تصویر زیر) و نه صرفا به NET Standard. . این مساله برای توسعه دهندگان ASP.NET Core میتوانست فوق العاده باشد؛ چون سطح API بیشتر و بهروزتری را در اختیارشان قرار میداد و اگر قابلیتی در NET Standard. وجود نداشت، نمیبایستی درخواست میدادند تا اضافه شود تا بعد بتوانند استفاده کنند.
اما چون این مساله و سطح API بیشتر و گاهی از اوقات کاملا متفاوت، سازگاری با کتابخانههایی را که در میدان دید این API قرار نمیگرفتند، زیر سؤال میبرد، ارتقاء برنامههای قبلی را با مشکل مواجه میکرد. به همین جهت تصمیم گرفتهاند که ASP.NET Core را سازگار با دات نت فریم ورک کامل نیز ارائه دهند و بنابراین «محدودش کنند» به NET Standard 2.0. و نه حالت NET Core only. قبلی: اطلاعات بیشتر
به علاوه باید درنظر داشت که امکان اضافه کردن یک بستهی نیوگت از یک کتابخانهی نوشته شدهی برای دات نت کامل در برنامههای دات نت Core به معنای تضمینی برای کار کردن آن در زمان اجرا نخواهد بود. از این جهت که دات نت کامل، به همراه قسمتهایی است که در NET Standard. وجود خارجی ندارند. بنابراین اگر کتابخانهی استفاده شده صرفا این API مشترک را هدف قرار دادهاست، هم قابلیت اتصال و هم قابلیت اجرا را خواهد داشت؛ اما اگر برای مثال کسی بستهی NServiceBus را به پروژهی ASP.NET Core 2.0 اضافه کند، بدون مشکل کامپایل خواهد شد. اما از آنجائیکه این کتابخانه از MSMQ استفاده میکند که خارج از میدان دید این استاندارد است، در زمان اجرا با شکست مواجه خواهد شد.
کاری که پیشتر میخواستند انجام دهند، محدود کردن ASP.NET Core به سطح API موجود در NET Core. بود (NET Core 2.0 only. یا تصویر زیر) و نه صرفا به NET Standard. . این مساله برای توسعه دهندگان ASP.NET Core میتوانست فوق العاده باشد؛ چون سطح API بیشتر و بهروزتری را در اختیارشان قرار میداد و اگر قابلیتی در NET Standard. وجود نداشت، نمیبایستی درخواست میدادند تا اضافه شود تا بعد بتوانند استفاده کنند.
اما چون این مساله و سطح API بیشتر و گاهی از اوقات کاملا متفاوت، سازگاری با کتابخانههایی را که در میدان دید این API قرار نمیگرفتند، زیر سؤال میبرد، ارتقاء برنامههای قبلی را با مشکل مواجه میکرد. به همین جهت تصمیم گرفتهاند که ASP.NET Core را سازگار با دات نت فریم ورک کامل نیز ارائه دهند و بنابراین «محدودش کنند» به NET Standard 2.0. و نه حالت NET Core only. قبلی: اطلاعات بیشتر
به علاوه باید درنظر داشت که امکان اضافه کردن یک بستهی نیوگت از یک کتابخانهی نوشته شدهی برای دات نت کامل در برنامههای دات نت Core به معنای تضمینی برای کار کردن آن در زمان اجرا نخواهد بود. از این جهت که دات نت کامل، به همراه قسمتهایی است که در NET Standard. وجود خارجی ندارند. بنابراین اگر کتابخانهی استفاده شده صرفا این API مشترک را هدف قرار دادهاست، هم قابلیت اتصال و هم قابلیت اجرا را خواهد داشت؛ اما اگر برای مثال کسی بستهی NServiceBus را به پروژهی ASP.NET Core 2.0 اضافه کند، بدون مشکل کامپایل خواهد شد. اما از آنجائیکه این کتابخانه از MSMQ استفاده میکند که خارج از میدان دید این استاندارد است، در زمان اجرا با شکست مواجه خواهد شد.
اشتراکها
Console Application ها در NET Core.
اشتراکها
پروژه PdfiumViewer
اشتراکها