معمولا آنچه برای مدیریت بهتر پروژه ها در حال حاضر انجام میشود استفاده از چند پروژه ای است به طور مثال
- project.sln
- Project.Commpn //کلاسهای عمومی که در هر پروژه استفاده میکنم
- project.Model // کلاسهایی که برای ایجاد بانک اطلاعاتی استفاده میکنیم و Context پروژه
- Project.Repo // کلاسهای ریپازیتوری Repository با دو زیر مجموعه
- Contract // برای نگهداری اینترفیسها (interfaces)
- IRepository //برای پیاده سازی اینترفیسها
- Project.Razor // به عنوان پروژه اصلی که میتواند یک پروژه mvc باید و یا یک Razor Project
برای اینکه این پروژه ها را هر بار ایجاد نکنم و هر باز تنظیمات امنیتی و تنظیمات بانک اطلاعاتی و تنظیمات رفرنسها را انجام ندهم یک temolate برایاین پروژه ها ایجاد کردم
ابتدا یک فایل sln برای پروژه ایجاد میکنم
و همون چهار پروژه بالا را به آن اضافه میکنم
هر کدام از پروژه ها را با استفاده از منو project> ExportProject به صورت template استخراج مکینم این پروژه ها به صورت پیشفرض در
C:\Users\{User}\Documents\Visual Studio 2019\Templates\ProjectTemplates
به صورت فایل Zip ایجاد میشوند دفت کنید هر پروژه به تنهای ایجاد میشود مثلا برای من که چهار پروژه ایجاد میکنم چهار فایل Zip ایجاد شد
فایلها را از حالت فشورده خارج میکنیم میتوانید به یک پويه ذیگر انتقال بدین که شلوغی پوشه باعث بهتر کار کردن شما نشود (اگر این کار را نجام دادین میتوانید دوباره به همین پوشه )
یک فایل مثلا txt ایجاد کنید حال میتوانید این فایل را با استفاده از ویژال استادیو ایجاد کنید و یا بااستفاده از یک فابل notepad ایجاد, و اطلاعات ان را به صورت زیر تغییر دهید
,و یک فایل عکی هم به عنوان ایکون در کنار این فایل قرار دهید تا زمانی که در ویژال استفادیو میخواهید پروژه را پیدا کنید با همان تصویر قابل دیدن باشد.
<VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>MultiProject</Name>
<Description>This project for Multi project in mvc core.</Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>Project default name</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<Icon>sun.png</Icon>
</TemplateData>
<TemplateContent>
<ProjectCollection>
<ProjectTemplateLink ProjectName="$projectname$.Common" CopyParameters="true">
Project.Common\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$projectname$.Model" CopyParameters="true">
Project.Model\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$projectname$.Raz" CopyParameters="true">
Project.Raz\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$projectname$.Repo" CopyParameters="true">
Project.Repo\MyTemplate.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
در توضیح کد های بالا:
- <Name> نام قالب پروژه است که در ویژال استادیو نمایش داده خواهد شد.
- <Description> توضیحی ایت که در زیر نام در ویژال استادیو نمایش داده خواهد شد.
- <ProjectType> نوع پروژه
- <DefaultName> نام پیشفرضی که در رمان ایجاد پروژه به صورت پیشفرض نمایش داده خواهد شد که میتوانید آن را در طکان ایجاد پروژه تغییر دهید
- <Icon> اشاره به همان تصویری است که در کنار فایل گذاشته اید
<TemplateContent>
<ProjectCollection>
<ProjectTemplateLink ProjectName="$projectname$.Common" CopyParameters="true">
Sun.Common\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$projectname$.Model" CopyParameters="true">
Sun.Model\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$projectname$.Raz" CopyParameters="true">
Sun.Raz\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$projectname$.Repo" CopyParameters="true">
Sun.Repo\MyTemplate.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>
این خط کد ها هم ارجاع به چهار پروژه است
در توضیه نکات تکمیلی اینکه در هر پوشه ایجاد شده که مربوط به پروژه هست شامل فایلی به نام MyTemplate.vstemplate است که تغییر نمی بیابد و پروژه بااستفاده از ان ساخته میشود.
- "$projectname$ نام از پیش تعیین شده ای ست که به صورت قرار دادی در ویژال استادیو تعریف شده و اشاره به نام پروژه دارد
- اگر دقت کرده باشید بهد از نام "$projectname$ سه حرف دیگر نمایش داده شده که این نامها انتخابی است و زمانی پروژه ایجاد شود به نام پیشفرضی که ایجاد کرده اید اضافه خواهد شد.
- نکته مهم اینکه اگر نمیخواهید اطلاعات پروژه ها با استفاده از نامی که در زمان ایجاد پروژه ایجاد میکنید تغییر یابد CopyParameters="true" را حذف نمایید.
اطالاعات بیشتر https://docs.microsoft.com