بعد از ایجاد پروژه در Net. لازم بود برای من تا بتوانم از دستورات commandline برای مدیریت پروژه razor page استفاده کنم، اگر قرار باشد دستورات ترمینال یا همان CLI را برای پروژه ها را اجرا کنیم نوع دستور خواهم داشت دستوراتی که فقط لازم است یک بار اجرا کنم و دستوراتی که در هر پروژه اجرا میکنم
برای ایجاد پروژه در VS code من برای کل پروژه از کد های لینک صفحه زیر استفاده میکنم.
دو دستور زیر به صورت عمومی دو پکیج را نصب میکند این دو پکیج برای ارجای دستورات scaffold الزامی هستند
dotnet tool install -g dotnet-aspnet-codegenerator
dotnet tool install --global dotnet-ef
و در صورتی که یک بار نصب کنید برای دیگر پروژه ها نیاز نیست تا دوباره نصب کنبد.
البته برای به روز رسانی و یا اپدیتپکیج بالا لازم است دستور زیر را اجرا کنید
create project
برای ایجاد پروژه ها repo و models که از نوع class library هستند از دستور زیر استفاده میکنیم
Dotnet new classlib
برای ایجاد پروژه وب :
dotnet new webapp
dotnet restore
در پروژه model این پکیجها را نصب میکنم
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
البته یاد آوری کنم در پروژه ها از sqlserver استفاده میکنم به همین دلیل پکیج Sqlserver اضافه کردم اگر شما از بانک های اطلاعاتی دیگر استفاده میکنید مانند My SQL و یا sqlite استفاده میکنید میتوانید پکیجهای مربوط به آنها را نصب نمایید
پروژه ها را به sln پروژه معرفی میکنیم و برای معرفی پروژه ها به هم به صورت سری یا متوالی model را یه repo و repo را به web وصل میکنیم
برای اضافه کردن همه پروژه ها به sln کد زیر استفاده کردم
برای لینوکس:
dotnet sln todo.sln add **/*.csproj
برای ویندوز
dotnet sln todo.sln add (ls -r **/*.csproj)
برای اضافه کردن پروژه ها به صورت سری به هم از کد زیر استفاده میکنم
dotnet add reference ../Todo_Models/Todo_Models.csproj
در کد بالا من در پروژه repo هستم و پروژه model را به آن رفرنس دادم
و اگر در root پروژه باشم برای ارجاع از کد بالا با تغییر کوچکی استفاده خواهم کرد به صورت زیر خواهد بود
dotnet add Todo_Repo/todo_Repo.scproj reference ../Todo_Models/Todo_Models.csproj
و اگر در root پروژه هستید ازاین نمونه استفاده کنید(نمونه کد سایت ماکروسافت)
dotnet add app/app.csproj reference lib/lib.csproj
الیته میتوانید این کد را به صورت دستی به فایل پروژه های که قرار هست رفرنس را دریافت کند اضافه کنید
<ItemGroup>
<ProjectReference Include="..\Todo.Models\Todo.Model.csproj" />
</ItemGroup>
اگر دوست دارید در پروژه خود از Identity دات نت استفاده کنید، با استفاده از دستور کد زیر لیست تمام فایلهایی که میتوانید جهت Identity استفاده کنید را میبیند
dotnet aspnet-codegenerator identity -lf
Account._StatusMessage
Account.AccessDenied
Account.ConfirmEmail
Account.ConfirmEmailChange
Account.ExternalLogin
Account.ForgotPassword
Account.ForgotPasswordConfirmation
Account.Lockout
Account.Login
Account.LoginWith2fa
Account.LoginWithRecoveryCode
Account.Logout
Account.Manage._Layout
Account.Manage._ManageNav
Account.Manage._StatusMessage
Account.Manage.ChangePassword
Account.Manage.DeletePersonalData
Account.Manage.Disable2fa
Account.Manage.DownloadPersonalData
Account.Manage.Email
Account.Manage.EnableAuthenticator
Account.Manage.ExternalLogins
Account.Manage.GenerateRecoveryCodes
Account.Manage.Index
Account.Manage.PersonalData
Account.Manage.ResetAuthenticator
Account.Manage.SetPassword
Account.Manage.ShowRecoveryCodes
Account.Manage.TwoFactorAuthentication
Account.Register
Account.RegisterConfirmation
Account.ResendEmailConfirmation
Account.ResetPassword
Account.ResetPasswordConfirmation
و برای استفاده در پروژه پکیج آن را به صورت زیر نصب میکنیم
dotnet add package Microsoft.AspNetCore.Identity.UI
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
و برای اضافه کردن فایلهای مربوطه به پروژه
dotnet aspnet-codegenerator identity -dc MyProject.Models.MyProjectContext --files "Account.Register;Account.Login;Account.Logout;Account.RegisterConfirmation"
در زمانی که از پروژه publish میگیریم مشکلی که پیش میاد اینه است که همراه با پوشه های برناه پوشه های دیگر مربوط به مدیریت زبان به آن اضافه میشود ، برای جلوگیری از اضافه شدن آن زبانها میتوانید این کد را به فایل csproj اضافه کنید
این فایلها مربوط به
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="*.*.*" />
که این فایل را من معمولا به پروژه Model اضافه میکنم
برای همین کد زیر را در پروژه Todo.Model/Todo.Model.csproj اضافه میکنم
<PropertyGroup>
<SatelliteResourceLanguages>en-US;en</SatelliteResourceLanguages>
</PropertyGroup>
add razor file in admin area with CRUD
ما قبل از آن
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add package Microsoft.EntityFrameworkCore.Tools
را به پروژه وب خود اضافه نمایید هرچند در بالا آن را به پروژه MODEL اضافه کرده ایم
dotnet aspnet-codegenerator razorpage -m Post -dc Devex.Model.DevexContext -udl -outDir Areas/Admin/Pages/posts --referenceScriptLibraries
برای ایجاد یک صفحه در زیر مجموعه area میکروسافت این کد هست
dotnet new page -n Index -na myapp.Pages.Area -o Pages/Area
با تغییرتبدیل کردم به این کد
dotnet new page -n Index -na myapp.Area.Admin.Pages -o Areas/Admin/Pages
اما کد بالا صفحه جدید ایجاد میکند با نام myapp.Area.Admin.Pages.cshtml اما صفحه Index نیاز داریم کد رو به صورت زیر تغغیر دادم تا درست شد.
dotnet new page -n Index -na Index --namespace Myproj.Raz.Area.Admin.Pages -o Areas/Admin/Pages
با استفاده از کد بالا page جدید به قسمت ادمین اضاافه میگردد، و اگر بخواهیم یه Page جدید به صفخات سایت اضافه کنیم کد زیر قابل استفاده است
dotnet new page -n Index -na Index --namespace MyProject.Raz.Pages -o Pages
با استفاده از کد بالا میتوانید یک صفحه Index به پوشه Pages که در روت پروژه قرار دارد اضافه کنید.
در کد بالا به جای myproject نام پروژه خود را بنویسید و به جای Index نام صفحه ای که تصمیم دارید ایجاد کنید , و اگر تصمصم دارید پوشه جدید مانند News به پروژه اصاضفه کنید تا صفحات اخبار در آن نمایش داده شود میتوانید از کد زیر استفاده کنید
dotnet new page -n Index -na Index --namespace MyProject.Raz.Pages.News -o Pages/News