। নেট কোর 3.0: রেজার ভিউগুলি পরিবর্তনের সময় স্বয়ংক্রিয়ভাবে পুনরায় সংকলন করে না


94

ডকুমেন্টেশন অনুসারে , রেজার দর্শনগুলি ডিফল্টরূপে, এএসপি.নেট কোর 3.0 এর জন্য স্থানীয় পরিবেশের পরিবর্তনের জন্য পুনরায় কম্পাইল করা উচিত।

তবে আমার প্রকল্পটি স্থানীয়ভাবে এটি করে না। আমি যদি স্থানীয়ভাবে ডিবাগ করি তখন আমি যদি একটি দর্শন পরিবর্তন করি এবং রিফ্রেশ করি, পরিবর্তনটি প্রতিফলিত হয় না। আমাকে সমাধানটি থামাতে হবে, আবার চালাতে হবে এবং তারপরে পরিবর্তনটি দেখতে হবে।

আমি এএসপি.নেট কোর 3.0.0 পূর্বরূপ 2 সহ রেজার পৃষ্ঠাগুলি ব্যবহার করে ভিজ্যুয়াল স্টুডিও 2019 এর একটি ডিফল্ট এএসপি.নেট কোর ওয়েব অ্যাপ্লিকেশন টেমপ্লেটে এটি করছি। এই বৈশিষ্ট্যটি সক্ষম করতে আমার যদি সেটিংস পরিবর্তন করতে হবে তবে কোনও ধারণা?

3.0 রিলিজের জন্য নভেম্বরের 2019 আপডেট করুন:

এই প্রশ্নটি এখনও অনেক ভিউ পেয়েছে। কয়েকটি উত্তর যুক্ত করার জন্য উদ্ধৃত করা হয়েছে

services.AddControllersWithViews().AddRazorRuntimeCompilation(); 

নিউগেট প্যাকেজ যুক্ত করার পরে আপনার ConfigureServices()ফাংশনে । আমার ক্ষেত্রে, আমি কেবল রাজো পেজ ব্যবহার করছি, তাই আমি কল না । পরিবর্তে, এটি আমার পক্ষে কাজ করেছে:Startup.csMicrosoft.AspNetCore.Mvc.Razor.RuntimeCompilationAddControllersWithViews()

services.AddRazorPages().AddRazorRuntimeCompilation();

.cshtml রেজার ভিউগুলি পুনরায় সংমিশ্রিত হবে। আপনি কি ডাবল চেক করতে পারেন? একটি <h1> পরীক্ষা </ h1> যুক্ত করার চেষ্টা করুন। অ্যাপ্লিকেশনটি শুরু করুন, পৃষ্ঠাটি লোড করুন। আপনার "পরীক্ষা" দেখা উচিত। তারপরে এটিকে <h1> ফু </ h1> এ পরিবর্তন করুন। আপনার "ফু" দেখা উচিত।
জন-লুক লাউ

কাজ করে না! আমাকে থামিয়ে সমাধান শুরু করতে হবে start এটি এখানে ক্যাপচার করেছে: drive.google.com/file/d/1xOWQK2SvE2dskSYRdLz9X7iEmAv7BcTN/… - স্টোর রেজার পেজ টেম্পলেট সহ একাধিক মেশিনে চেষ্টা করেছেন Have
তারুন 713

আপনি কি ম্যাক বা পিসি বা লিনাক্সে চালাচ্ছেন? এছাড়াও, এটি পূর্বরূপ সহ কোনও সমস্যা হতে পারে। আপনি কি asp.net কোর 2.x ব্যবহার করার চেষ্টা করতে পারেন?
জন-লুক লাউ

পিসি, ভিজ্যুয়াল স্টুডিও 2019 পূর্বরূপ। আমি ২.২ দিয়ে চেষ্টা করেছি এবং এটি কাজ করে! সুতরাং কিছু আছে যা 3.0 এ পরিবর্তিত হয়েছে।
তারুন 713

আমি একটি সম্পূর্ণ আপডেট। নেট কোর 3 / ভিএস এ আছি এবং আপনাকে যুক্ত করতে হয়েছিল .AddRazorRuntimeCompilation();ধন্যবাদ!
হাঁসফিরুন

উত্তর:


60

ঠিক আছে দেখে মনে হচ্ছে এটি এখনও সমর্থিত নয় :(

রানটাইম সংকলন সরানো হয়েছে এএসপি.নেট কোর ভাগ করা কাঠামো পরিষ্কারের ফলস্বরূপ রোজলিনের উপর নির্ভর না করার জন্য, পৃষ্ঠাগুলি এবং দর্শনগুলির রানটাইম সংকলনের জন্য সমর্থনও এই পূর্বরূপ প্রকাশে সরানো হয়েছে। পরিবর্তে পৃষ্ঠাগুলি এবং দর্শনগুলির সংকলন নির্মাণের সময় সঞ্চালিত হয়। ভবিষ্যতের পূর্বরূপ আপডেটে আমরা কোনও অ্যাপ্লিকেশনটিতে রানটাইম সংকলন সমর্থন সক্ষম করার জন্য একটি নিউগেট প্যাকেজ সরবরাহ করব।

আপনি এখানে সমস্যাটি সম্পর্কে আরও পড়তে পারেন 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
DB ব্যবহার ফ্রেড

56

এএসপি.নেট কোর 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
    }

। নেট কোর সংস্করণ সম্পর্কিত নুগেট প্যাকেজের সংস্করণ সম্পর্কে টিপ। আপনি যদি নেট কোর 3.0 ব্যবহার করেন তবে আপনি এই নুগেট প্যাকেজের পরবর্তী সংস্করণগুলি নির্বাচন করতে পারবেন না। তবে নুগেট লাইবের সংস্করণ 3.0.0। নেট কোর 3.0 এর সাথে কাজ করে। আপনি যদি নেট কোর 3.1 ব্যবহার করেন তবে আপনি নতুন সংস্করণ নির্বাচন করতে পারেন।
টোর অরস্তাদ

36

রানটাইম ভিউ সংকলন ফিরে পেতে ASP.NET Core3 এ

  1. রেফারেন্স Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
  2. ফোন করুন services.AddMvc().AddRazorRuntimeCompilation()
  3. প্যাকেজে Microsoft.VisualStudio.Web.CodeGeneration.Designকোনও সংস্করণ মিলছে না তা সরিয়ে ফেলুনMicrosoft.CodeAnalysis.Common

4
অন্যের জন্য কেবল একটি ইঙ্গিত: নুগেট ব্যবহার করার সময় "প্রাক-প্রকাশ" বাক্সটি টিক / চেক করুন।
জেফএম

সম্পদের উত্পাদনে নিয়োজিত হতে বাধা দেওয়ার কোনও উপায় আছে কি? আমি প্যাকেজ-রেফারেন্সে প্রাইভেটএসেটসগুলির কয়েকটি সংমিশ্রণ চেষ্টা করেছি তবে মনে হয় এটি কার্যকর হয় না।
চেত

কোর মধ্যে ২.২ রেজার অপশনগুলিতে ফাইলপ্রোভাইডার রয়েছে এবং এটি কোনও পুনঃসংশোধন ছাড়াই কাজ করে। কেবল cshtml এবং voila সম্পাদনা করুন। মূল 3 এ এই সম্পত্তিটি সরানো হয়েছে। :( github.com/aspnet/AspNetCore/issues/14572
dariol

4
+1 কারণ মাইক্রোসফ্ট.ভিউজুয়ালস্টুডিও.উইব.কোডজেনারেশন.ডিজাইন প্যাকেজটি সিক্রেট সস যা অন্য কোথাও উল্লেখ করেনি removing
tkburbidge

@tkburbidge আমিও প্যাকেজটি নিয়ে এই সমস্যাটি নিয়ে এসেছি। অদ্ভুতভাবে যথেষ্ট, আমার দুটি লাইন ছিল একই, পিছনে থেকে পিছনে। আমি উভয় অপসারণ, এবং সংকলন করতে পারে। আরও অদ্ভুতভাবে , আমি তারপরে লাইনগুলি আবার জায়গায় রেখেছি এবং এখনও সংকলন করতে সক্ষম হয়েছি।
লিন ক্রম্বেল

26

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationপ্যাকেজটি ব্যবহার করে রানটাইম সংকলন সক্ষম করা হয়েছে । রানটাইম সংকলন সক্ষম করতে, অ্যাপ্লিকেশনগুলিকে অবশ্যই:

  1. Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationনিউগেট প্যাকেজ ইনস্টল করুন ।

  2. Startup.ConfigureServicesএতে কল অন্তর্ভুক্ত করার জন্য প্রকল্পের পদ্ধতিটি আপডেট করুন AddRazorRuntimeCompilation:

services
    .AddControllersWithViews()
    .AddRazorRuntimeCompilation();

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


13

রানটাইম রেজার দর্শন সংকলনটি এএসপি.নেট কোর 3.1 এ ফিরে পেতে:

  1. Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationনিউগেট প্যাকেজ ইনস্টল করুন ।
  2. Startup.ConfigureServicesকলটিতে অন্তর্ভুক্ত করতে প্রকল্পের পদ্ধতিটি আপডেট করুন AddRazorRuntimeCompilation
  3. services.AddRazorPages().AddRazorRuntimeCompilation();

    এএসপি.নেট কোর 3.1 তে রেজার ফাইল সংকলন


11

পদক্ষেপ 1: সমাধানের জন্য নিউগেট প্যাকেজ ম্যানেজার থেকে নীচের প্যাকেজটি ইনস্টল করুন।

মাইক্রোসফট.এএসপনেটকোর.এমভিসি.রাজর.রুনটাইম সংকলন

পদক্ষেপ 2: স্টার্টআপ.cs ফাইলের কনফিগার সার্ভিসগুলিতে নীচের কোডটি যুক্ত করুন

পরিষেবাদি.এডডকন্ট্রোলার উইথভিউস ()। অ্যাডরাজোরআরটাইমকমপ্লেশন ();

পৃষ্ঠাটি সংরক্ষণ করুন এবং তারপরে ক্লায়েন্ট ব্রাউজারটি রিফ্রেশ করুন।

আপনি যদি রেজার ব্যবহার করছেন তবে পরিষেবাগুলির জন্য কোড যুক্ত করুন A অ্যাডআরজার্পেজগুলি () যুক্ত করুন Add


6

কেবলমাত্র একটি যুক্ত নোট - আপনি কেবল শর্তসাপেক্ষে এই রানটাইম সংকলনটি সক্ষম করতে চাইতে পারেন, যাতে প্রকাশিত আউটপুট:

  • সংকলিত দর্শন ব্যবহার করে।
  • আকারে ছোট।
  • উত্পাদনে ফাইল পর্যবেক্ষকদের সক্ষম করে না।

শর্তসাপেক্ষে রানটাইম সংকলন সক্ষম করুন


5

.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. সমাধানের জন্য নিউগেট প্যাকেজ ম্যানেজার থেকে নীচের প্যাকেজটি ইনস্টল করুন।

    Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
    
  3. ConfigureServicesআপনার Startup.csফাইলের পদ্ধতিতে নীচের কোডটি যুক্ত করুন:

    services.AddMvc().AddRazorRuntimeCompilation();
    

    বা

    services.AddControllersWithViews().AddRazorRuntimeCompilation();
    

    বা

    services.AddRazorPages().AddRazorRuntimeCompilation();
    

এর পরে, আবার প্রকাশ করুন এবং এটি চালান। এটা কাজ করবে।


0

স্থানীয় উন্নয়নের জন্য রানটাইম সংকলনটি কনফিগার করার সহজ উপায় হ'ল লঞ্চ প্রোফাইলগুলি আপডেট করা launchSettings.json। স্থানীয়ভাবে চলমান প্রকল্পটি কনফিগার করতে এই পদ্ধতিটির কোনও কোড পরিবর্তন দরকার না (এটি আপনার উত্পাদনকে প্রভাবিত করবে না)।

দেখুন কর্মকর্তা ডকুমেন্টেশন :

  1. Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet প্যাকেজটি ইনস্টল করুন ।
  2. লঞ্চসেটেটিং.জসনে লঞ্চ প্রোফাইল পরিবেশে পরিবর্তনশীল বিভাগটি সংশোধন করুন:
    • যাচাইকরণ ASPNETCORE_ENVIRONMENT"বিকাশ" এ সেট করা আছে।
    • ASPNETCORE_HOSTINGSTARTUPASSEMBLIES"মাইক্রোসফ্ট.এএসপনেটকোর.এমভিসি.রাজর.রুনটাইম সংকলন" এ সেট করুন ।

উদাহরণ:

{
  "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"
      }
    }
  }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.