آغاز کار با git در ویژوال استدیو
In this episode, Robert is joined by Paul Litwin, who shows us how to get started with Git in under an hour. Git is a free, open source and quite popular distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Starting with the command line and ending up in both VS Code and Visual Studio, Paul takes us on a tour of the how you can use Git to manage your source code.
یافتن لیست اسمبلیهای ارجاعی
وقتی هم که روی یک button کلیک میکنیم این error رو میده : Soure file f:\solution\project1 does not belong to the project being debogged.
وقتی هم میخاییم solution رو commit کنیم error میده که :
Unable to open an ra_local url.unable to open repository.
البیته خیلی من رو ببخشید که اندازه یه تاپیک پست دادم.
فعالسازی توزیع فایلهای 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" }
یک: ASP.NET Core مستقل از Platform است
دو: Open Source است
سه: جدا بودن از Web Server
using System; using Microsoft.AspNetCore.Hosting; namespace aspnetcoreapp { public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseStartup<Startup>() .Build(); host.Run(); } } }
چهار: تزریق وابستگی (Dependency Injection) تو کار
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices (IServiceCollection services) { // Add framework services. services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddIdentity<ApplicationUser, IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); services.AddMvc(); // Add application services. services.AddTransient<IEmailSender, AuthMessageSender>(); services.AddTransient<ISmsSender, AuthMessageSender>(); }
پنج: یکپارچگی با frameworkهای مدرن سمت کلاینت
- bundle و minify کردن فایلهای جاوا اسکریپت و همینطور CSS
- اجرای ابزارهایی برای bundle و minify کردن قبل از هر build
- کامپایل کردن فایلهای LESS و SASS در CSS
- کامپیال کردن فایلهای CoffeeScript و TypeScript در JavaScript
انجمن رسمی گزارش مشکلات GitHub
GitHub Community is built to support all GitHub users on their educational journey, via Discussions. It is a resource hub, learning portal, and inspiration station, all in one. Regardless of how big or small your challenge is, all resources and information will be accessible in a true open source fashion.
پروژه SimpleIdServer
SimpleIdServer is an open source framework enabling the support of OPENID, OAUTH2.0, SCIM2.0, UMA2.0, FAPI and CIBA. It streamlines development, configuration and deployment of custom access control servers. Thanks to its modularity and extensibility, SimpleIdServer can be customized to the specific needs of your organization for authentication, authorization and more.
Elemental.JsonResource
Json Resource file support in C# projects.
This provides an alternative to using resx files to defined resources in C# projects. The benefits over resx are:
- human readable file format (try writing resx xml from scratch without documentation)
- generated C# code doesn't get included in project/source control
- Doesn't require modifying the .csproj (adding a single resx file will add ~12 lines to your csproj file)
- Doesn't require Visual Studio to function. (resx files don't work in VS Code for example)
In this post, I want to compare “DNTFrameworkCore” with “ABP Framework”.
ABP is one of most popular and well documented frameworks with high level abstraction that I learned a lot from it. It has many other features that I don’t list them in this post, because, DNTFrameworkCore has not them actually. Behind of ABP, there is a team. It has 123 contributors in GitHub. Also, all of features have related unit-tests.
In other side, DNTFrameworkCore is lightweight with low level abstraction. It is personal open-source project without any contributor and has unit-tests for small part.
I wrote this post to prove that thinking behind of DNTFrameworkCore completely different from ABP (at least in most sections)