.NET कोर 3.0: रेजर विचार स्वचालित रूप से परिवर्तन पर नहीं बदलते हैं


100

प्रलेखन के अनुसार , ASP.NET Core 3.0 के लिए स्थानीय वातावरण में परिवर्तन पर रेजर को डिफ़ॉल्ट रूप से देखा जाना चाहिए।

हालाँकि, मेरा प्रोजेक्ट स्थानीय स्तर पर ऐसा नहीं करता है। अगर मैं स्थानीय रूप से डिबगिंग कर रहा हूं, तो मैं दृश्य बदल सकता हूं और रिफ्रेश कर सकता हूं, परिवर्तन प्रतिबिंबित नहीं होता है। मुझे समाधान रोकना होगा, फिर से चलाना होगा और फिर परिवर्तन देखना होगा।

मैं ASP.NET Core 3.0.0 पूर्वावलोकन 2 रेजर पृष्ठों का उपयोग करके Visual Studio 2019 पर एक डिफ़ॉल्ट ASP.NET कोर वेब एप्लीकेशन टेम्पलेट पर यह कर रहा हूं। किसी भी विचार अगर मुझे इस सुविधा को सक्षम करने के लिए सेटिंग्स बदलने की आवश्यकता है?

3.0 पूर्ण अद्यतन के लिए अद्यतन नंबर 2019:

इस सवाल को अभी भी बहुत सारे विचार मिलते हैं। कुछ उत्तर जोड़ने का हवाला दिया है

services.AddControllersWithViews().AddRazorRuntimeCompilation(); 

NuGet पैकेज जोड़ने के बाद अपने ConfigureServices()फ़ंक्शन के लिए । मेरे मामले में, मैं केवल रेजर पेज का उपयोग कर रहा हूं, इसलिए मैं फोन नहीं करता । इसके बजाय, यह मेरे लिए काम किया:Startup.csMicrosoft.AspNetCore.Mvc.Razor.RuntimeCompilationAddControllersWithViews()

services.AddRazorPages().AddRazorRuntimeCompilation();

.cshtml रेजर के दृश्य पुन: व्यवस्थित हो जाते हैं। क्या आप दोबारा जांच कर सकते हैं? <H1> टेस्ट </ h1> जोड़ने का प्रयास करें। एप्लिकेशन प्रारंभ करें, पृष्ठ लोड करें। आपको "टेस्ट" देखना चाहिए। फिर इसे <h1> Foo </ h1> में बदलें। आपको "फू" देखना चाहिए।
जॉन-ल्यूक Laue

काम नहीं करता है! मुझे समाधान बंद करना और शुरू करना है। इसे यहाँ कैप्चर किया गया: drive.google.com/file/d/1xOWQK2SvE2dskSYRdLz9X7iEmAv7BcTN/… - स्टॉक रेजर टेम्पलेट के साथ कई मशीनों पर प्रयास किया।
तारिणी tar१३

क्या आप मैक या पीसी या लिनक्स पर चल रहे हैं? इसके अलावा, यह पूर्वावलोकन के साथ एक मुद्दा हो सकता है। आप asp.net कोर 2.x का उपयोग करने की कोशिश कर सकते हैं?
जॉन-ल्यूक लाए

पीसी, विजुअल स्टूडियो 2019 पूर्वावलोकन। मैंने 2.2 के साथ कोशिश की और यह काम करता है! तो कुछ ऐसा है जो 3.0 में बदल गया है।
tarun713

मैं पूरी तरह से अद्यतन .net कोर 3 / वीएस पर हूं और .AddRazorRuntimeCompilation();आपको धन्यवाद जोड़ना होगा!
duckwizzle

जवाबों:


61

ठीक है, ऐसा लगता है कि यह अभी तक समर्थित नहीं है :(

रनटाइम संकलन को हटा दिया गया। रोजलिन पर निर्भर न होने के लिए ASP.NET कोर साझा ढांचे की सफाई के परिणामस्वरूप, पृष्ठों और विचारों के रनटाइम संकलन का समर्थन भी इस पूर्वावलोकन रिलीज में हटा दिया गया है। इसके बजाय पृष्ठों और विचारों के संकलन का निर्माण समय पर किया जाता है। भविष्य के पूर्वावलोकन अपडेट में हम एक ऐप में वैकल्पिक रूप से रनटाइम संकलन समर्थन को सक्षम करने के लिए एक NuGet पैकेज प्रदान करेंगे।

आप इस मुद्दे के बारे में अधिक जानकारी यहां पढ़ सकते हैं https://github.com/aspnet/Announcements/issues/343

रेज़र संकलन या रेज़र फ़ाइलों के पुन: संकलन के लिए जिन अनुप्रयोगों की आवश्यकता होती है:

  • Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationपैकेज के लिए एक संदर्भ जोड़ें । यह 3.0.0-पूर्वावलोकन 3 रिलीज़ के भाग के रूप में उपलब्ध होगा ।
  • ConfigureServicesकॉल में शामिल करने के लिए एप्लिकेशन के अपडेट करें AddMvcRazorRuntimeCompilation:

11
AddMvcRazorRuntimeCompilationहै AddRazorRuntimeCompilationASP.Net कोर 3.0 पूर्वावलोकन 4 के साथ
डीबी फ्रेड

57

ASP.NET कोर 3 रिलीज़ संस्करण के लिए:

   services.AddControllersWithViews().AddRazorRuntimeCompilation();

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0

यह केवल स्थानीय विकास के लिए सशर्त रूप से सक्षम किया जा सकता है, लिंक से उद्धृत:

रनटाइम संकलन को ऐसे सक्षम किया जा सकता है कि यह केवल स्थानीय विकास के लिए उपलब्ध हो। इस तरीके से सक्रिय रूप से सक्षम करना यह सुनिश्चित करता है कि प्रकाशित आउटपुट:

संकलित विचारों का उपयोग करता है।
आकार में छोटा होता है।
उत्पादन में फ़ाइल देखने वालों को सक्षम नहीं करता है।

   public Startup(IConfiguration configuration, IWebHostEnvironment env)
    {
        Configuration = configuration;
        Env = env;
    }

    public IWebHostEnvironment Env { get; set; }
    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        IMvcBuilder builder = services.AddRazorPages();

#if DEBUG
            if (Env.IsDevelopment())
            {
                builder.AddRazorRuntimeCompilation();
            }
#endif
    }

। नेट कोर संस्करण से संबंधित नगेट पैकेज के संस्करणों के बारे में टिप। यदि आप .Net Core 3.0 का उपयोग करते हैं, तो आप इस Nuget पैकेज के बाद के संस्करणों का चयन नहीं कर सकते। लेकिन। नेट कोर 3.0 के साथ Nuget के काम का संस्करण 3.0.0 है। यदि आप .Net Core 3.1 का उपयोग करते हैं, तो आप नए संस्करणों का चयन कर सकते हैं।
तोरेंस्टेड

38

ASP.NET Core3 में रनटाइम व्यू संकलन प्राप्त करने के लिए

  1. संदर्भ Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
  2. कॉल services.AddMvc().AddRazorRuntimeCompilation()
  3. निकालें Microsoft.VisualStudio.Web.CodeGeneration.Designयदि Microsoft.CodeAnalysis.Commonपैकेज पर कोई संस्करण बेमेल है

2
बस दूसरों के लिए एक संकेत: नूगेट का उपयोग करते समय, "पूर्व-रिलीज़" बॉक्स पर टिक करें / जांचें।
ज्योफएम

क्या परिसंपत्तियों को उत्पादन में तैनात होने से रोकने का कोई तरीका है? मैंने PackageReference पर PrivateAssets के कुछ संयोजनों की कोशिश की, लेकिन यह काम नहीं करता है।
चेत

Core 2.2 में रेजर के विकल्प में FileProviders हैं और यह बिना किसी रीकैपिलेशन के भी काम करता है। बस cshtml और वॉइला संपादित करें। कोर 3 में इस संपत्ति को हटा दिया जाता है। :( github.com/aspnet/AspNetCore/issues/14572
दरियाल

2
+1 क्योंकि Microsoft.VisualStudio.Web.CodeGeneration.Design पैकेज को हटाना गुप्त सॉस था जिसमें कहीं और उल्लेख नहीं है।
tkburbidge

@tkburbidge मैं सिर्फ पैकेज के साथ उस मुद्दे में भाग गया, भी। अजीब तरह से, मेरे पास दो लाइनें थीं जो बिल्कुल समान थीं, बैक-टू-बैक। मैंने दोनों को हटा दिया, और संकलन कर सकता था। और भी अजीब तरह से , मैंने तब लाइनों को वापस जगह में डाल दिया, और अभी भी संकलन करने में सक्षम था।
लिन क्रम्बलिंग

26

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationपैकेज का उपयोग करके रनटाइम संकलन सक्षम किया गया है। रनटाइम संकलन को सक्षम करने के लिए, ऐप्स को होना चाहिए:

  1. Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationNuGet पैकेज स्थापित करें ।

  2. Startup.ConfigureServicesकॉल करने के लिए प्रोजेक्ट की विधि को अपडेट करें AddRazorRuntimeCompilation:

services
    .AddControllersWithViews()
    .AddRazorRuntimeCompilation();

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0


14

रेज़र व्यू व्यू संकलन को ASP.NET Core 3.1 में वापस लाने के लिए:

  1. Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationNuGet पैकेज स्थापित करें ।
  2. Startup.ConfigureServicesकॉल करने के लिए प्रोजेक्ट की विधि को अपडेट करें AddRazorRuntimeCompilation
  3. services.AddRazorPages().AddRazorRuntimeCompilation();

    ASP.NET Core 3.1 में रेजर फ़ाइल संकलन


12

चरण 1: समाधान के लिए NuGet पैकेज प्रबंधक से नीचे का पैकेज स्थापित करें।

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

चरण 2: Startup.cs फ़ाइल के कॉन्फ़िगर सर्वर में नीचे कोड जोड़ें

। Services.AddControllersWithViews () AddRazorRuntimeCompilation ();

पेज को सेव करें और फिर क्लाइंट ब्राउजर को रिफ्रेश करें।

यदि आप रेज़र का उपयोग कर रहे हैं, तो सेवाओं के लिए कोड जोड़ें ।ddRazorPages ()। AddRazorRuntimeCompilation ();


7

.NET कोर 3.1 में, आपको views.dllफ़ाइल की अक्षम पीढ़ी की आवश्यकता है ।

  1. अपनी .csprojफ़ाइल में नीचे कोड जोड़ें (अपनी परियोजना की जड़ में):

    <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <UserSecretsId>...</UserSecretsId>
    
        <!-- add from this line: -->
        <CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory>
        <CopyRefAssembliesToPublishDirectory>false</CopyRefAssembliesToPublishDirectory>
        <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
        <RazorCompileOnBuild>false</RazorCompileOnBuild>
        <!-- to this line. -->
    
    </PropertyGroup>
    
  2. समाधान के लिए NuGet पैकेज मैनेजर से नीचे का पैकेज स्थापित करें।

    Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
    
  3. ConfigureServicesअपनी Startup.csफ़ाइल की विधि के लिए नीचे कोड जोड़ें :

    services.AddMvc().AddRazorRuntimeCompilation();
    

    या

    services.AddControllersWithViews().AddRazorRuntimeCompilation();
    

    या

    services.AddRazorPages().AddRazorRuntimeCompilation();
    

इसके बाद, फिर से प्रकाशित करें और इसे चलाएं। यह काम करेगा।


6

केवल एक जोड़ा नोट - आप केवल सशर्त रूप से इस रनटाइम संकलन को सक्षम करना चाहते हैं, ताकि प्रकाशित आउटपुट:

  • संकलित विचारों का उपयोग करता है।
  • आकार में छोटा होता है।
  • उत्पादन में फ़ाइल देखने वालों को सक्षम नहीं करता है।

सशर्त रूप से रनटाइम संकलन सक्षम करें


2

स्थानीय विकास के लिए रनटाइम संकलन को कॉन्फ़िगर करने का सबसे सरल तरीका केवल लॉन्च प्रोफाइल को अपडेट करना है launchSettings.json। इस विधि को स्थानीय रूप से चल रहे प्रोजेक्ट को कॉन्फ़िगर करने के लिए कोई कोड परिवर्तन की आवश्यकता नहीं है (यह आपके उत्पादन को प्रभावित नहीं करेगा)।

आधिकारिक दस्तावेज देखें :

  1. Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet पैकेज स्थापित करें ।
  2. लॉन्च प्रोफ़ाइल पर्यावरण को बदलें।
    • सत्यापित करें ASPNETCORE_ENVIRONMENT"विकास" पर सेट है।
    • ASPNETCORE_HOSTINGSTARTUPASSEMBLIES"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" पर सेट करें ।

उदाहरण:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:57676",
      "sslPort": 44364
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
      }
    },
    "RazorPagesApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
      }
    }
  }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.