ایجاد قالب (template) جدید برای پروژه خود (چند پروژه ای)

4/12/2019 MVC
156

 

معمولا  آنچه برای مدیریت بهتر پروژه ها در حال حاضر انجام میشود استفاده از چند پروژه ای است به طور مثال 

  • 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