در این مقاله سعی دارم تا شما را با فایلهای پیکربندی یک پروژه آشنا کنم ولی قبل از آن باید با قالب فایلهای JSON آشنایی کمی پیدا کنید. در ASP.NET Core فایلهای JSON دو نقش اساسی را ایفا می کنند.وظیفه اول این فایلها مهیا کردن فرمت مورد نیاز برای حرکت داده و تبادل آن بین برنامه کاربردی MVC و کلاینت ها می باشد.این وظیفه وقتی مورد استفاده قرار می گیرد که یک کنترلر قصد دارد داده های مورد نیاز یک کلاینت را که از طریق درخواست غیر همزمان HTTP (asynchronous) انجام شده را با فرمت JSON به جای HTML برای او بفرستد. به این مکانیز درخواست ajax نیز گفته می شود.

وظیفه دیگر این فایلها پیکربندی برنامه کاربردی است. در زیر به کاربرد هیر یک از آنها می پردازیم:

Global.json:

این فایل برای تنظیمات کلی solution مورد استفاده قرار می گیرد. کد زیر به صورت پیش فرض به این فایل اضافه می شود.

{
   "projects": [ "src", "test" ],
   "sdk": {
     "version": "1.0.0-preview2-003121" 
   } 
 }

گزینه projects پوشه ای که در آن کد منبع پروژه های موجود در solution قرار دارد را مشخص می کند. عبارت اول مسیر solution و عبارت دوم معادل پروژه MVC می باشد. به طور مثال در قطعه کد بالا src مسیر solution و test مسیر پروژه mvc با همین نام است. این فقط یک قرارداد است و شما می توانید هر نامی را که می خواهید برای پوشه های حاوی کد منبع با تغییر در این فایل داشته باشید.گزینه Sdk بیانگر این موضوع است که visual studio چه ورژنی از .NET را برای اجرای پروژه مورد استفاده قرار می دهد.ورژن تعریف شده در این گزینه برای تمامی پروژه های موجود در solution مورد استفاده قرار می گیرد.

اگر شما برای اولین بار است که با فایلهای JSON کار می کنید بهتر است به سایت www.json.org رجوع کنید تا با قوانین و فرمت های مربوط به این نوع فایلها بهتر آشنا شوید.برای کمک به شما در اینجا چند مورد پرکاربرد را در این فایلها بیان می کنیم: یکی از قوانین این فایلها این است که تمامی عبارات به غیر از اعداد و عباراتBoolean در نقل قول (“”) می آید. به طور مثال اگر بخواهیم یک تنظیم جدید به فایل global.json اضافه کنیم به شیوه زیر عمل می نماییم.

{
   "projects": [ "src", "test" ],
   "sdk": {
     "version": "1.0.0-preview2-003121"
   }
    "mysetting" : [ "fast", "slow"] 
 }

مورد دوم که باید در فایلهای json رعایت شود این است که در زمانی که شما قصد دارید یک ویژگی جدید را به شرح json یک شیء  در فایل اضافه کنید باید حتما از کاما برای جداسازی آن استفاده نمایید. به طور نمونه در قطعه کد بالا به دلیل اینکه mysetting یک ویژگی جدید و متمایز نسبت به دو مورد قبلی آن است، در نتیجه فایل حاوی آن دارای یک خطا بوده و باید به صورت زیر نوشته شود:

{
   "projects": [ "src", "test" ],
   "sdk": {
     "version": "1.0.0-preview2-003121"
    }, 
   "mysetting" : [ "fast", "slow"]
 } 

Project.json

برای پیکربندی یک پروژه از solution مورد استفاده قرار می گیرد.در زیر کد پیش فرض مربوط به این فایل در یک برنامه کاربردی MVC آمده است:

{
   "dependencies": {
     "Microsoft.NETCore.App": {
       "version": "1.0.0",
       "type": "platform"
     },
     "Microsoft.AspNetCore.Diagnostics": "1.0.0",
     "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
     "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
     "Microsoft.Extensions.Logging.Console": "1.0.0"
   }, 
     "tools": {
     "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
   }, 
     "frameworks": {
     "netcoreapp1.0": {
       "imports": ["dotnet5.6", "portable-net45+win8"]
     }
   }, 
     "buildOptions": { "emitEntryPoint": true, "preserveCompilationContext": true }, 
     "runtimeOptions": {
     "configProperties": {
       "System.GC.Server": true
     }
   }, 
     "publishOptions": {
     "include": ["wwwroot", "web.config"]
   }, 
     "scripts": {
     "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework
%publish:FullTargetFramework%" ]
   }
 } 

قسمت dependencies:

برای اضافه کردن package های مورد نیاز پروژه مورد استفاده قرار می گیرد. البته این یک روش برای انجام اینکار است و می توان این کار را با کمک رابط کنسولی package manager cosole و یا رابط گرافیکی manage NuGetpackages for solution از منوی tools و زیر منوی NuGet package manager انجام داد. همان طور که در قطعه کد بالا می بینید دو نوع syntax برای اضافه کردن بسته ها به این قسمت وجود دارد. نوع اول ساده است و شامل نام بسته و ورژن آن است. مانند:     , "Microsoft.AspNetCore.Mvc": "1.0.0"

نوع دیگر بسط یافته است (expanded syntax) که در زیر نمونه آن آمده است:

"Microsoft.NETCore.App": {
     "version": "1.0.0",
     "type": "platform"
 },

این نوع علاوه بر نام بسته و ورژن آن گزینه ای به نام type دارد که برای تعیین نحوه استفاده از بسته بکار می رود و شامل مقادیر زیر می تواند باشد.

قسمت Tools:

تعدادی از بسته هایی که شما به قسمت dependencies اضافه نمودید ابزارهایی را که در فرایند توسعه و ساخت برنامه کاربردی کاربرد دارند را برای آن فراهم می آورند که برای استفاده از آنها باید در این قسمت ثبت شوند.برای مثال بسته Microsoft.AspNetCore.Razor.Tools.package که ابزار پشتیبانی IntelliSense برای نوشتن و استفاده از tag helper ها در Razor view را فراهم می نماید در این قسمت جهت استفاده باید درج شود. tag helper در قسمت مربوط به Razor view شرح داده خواهد شد.