پیشتر مطلب «توزیع پروژههای ASP.NET MVC بدون ارائه فایلهای View آن» را در مورد ASP.NET MVC 5.x مطالعه کرده بودید. این روش پشتیبانی رسمی و توکاری نداشته و توسط افزونههای ثالث انجام میشود؛ به همراه تنظیمات و نکات خاص خودش. در ASP.NET Core 1.1، یک چنین امکانی به صورت توکار و صرفا با چند تنظیم ساده، در دسترس میباشد که در ادامه نحوهی فعال سازی آنرا بررسی خواهیم کرد.
فعال سازی پیش کامپایل Viewهای Razor در ASP.NET Core 1.1
در ادامه تغییرات فایل project.json و بستههای مورد نیاز جهت فعال سازی پیش کامپایل Viewهای Razor را در برنامههای ASP.NET Core 1.1 ملاحظه میکنید:
در اینجا کار فراخوانی عملیات پیش کامپایل، توسط فرمان dotnet razor-precompile در زمان publish پروژه انجام میشود.
بررسی ساختار خروجی نهایی پروژه پس از publish
پس از publish پروژه، اگر به خروجی آن دقت کنیم، فایل اسمبلی جدیدی، به نام xyz.PrecompiledViews.dll در آن اضافه شدهاست (که در اینجا xyz نام فضای نام اصلی برنامه است) و حاوی تمام Viewهای برنامه، به صورت کامپایل شدهاست:
اصلاح تنظیمات publishOptions فایل project.json
در اینحالت دیگر نیازی به ذکر پوشهی Views یا الحاق تمام فایلهای cshtml در حین publish نیست و میتوان این قسمت را حذف کرد:
فعال سازی پیش کامپایل Viewهای Razor در ASP.NET Core 1.1
در ادامه تغییرات فایل project.json و بستههای مورد نیاز جهت فعال سازی پیش کامپایل Viewهای Razor را در برنامههای ASP.NET Core 1.1 ملاحظه میکنید:
{ "dependencies": { "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design": { "version": "1.1.0-preview4-final", "type": "build" } }, "tools": { "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tools": { "version": "1.1.0-preview4-final" } }, "scripts": { "postpublish": [ "dotnet razor-precompile --configuration %publish:Configuration% --framework %publish:TargetFramework% --output-path %publish:OutputPath% %publish:ProjectPath%", "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] } }
بررسی ساختار خروجی نهایی پروژه پس از publish
پس از publish پروژه، اگر به خروجی آن دقت کنیم، فایل اسمبلی جدیدی، به نام xyz.PrecompiledViews.dll در آن اضافه شدهاست (که در اینجا xyz نام فضای نام اصلی برنامه است) و حاوی تمام Viewهای برنامه، به صورت کامپایل شدهاست:
اصلاح تنظیمات publishOptions فایل project.json
در اینحالت دیگر نیازی به ذکر پوشهی Views یا الحاق تمام فایلهای cshtml در حین publish نیست و میتوان این قسمت را حذف کرد:
"publishOptions": { "include": [ "wwwroot", //"**/*.cshtml", "appsettings.json", "web.config" ] },