এমভিসি -3-রূপান্তরিত -4-অ্যাপ্লিকেশনটির জন্য System.Web.Optimization- এ রেফারেন্স কীভাবে যুক্ত করবেন


458

আমি সম্প্রতি এমন একটি প্রকল্পে নতুন বান্ডিলিং বৈশিষ্ট্যটি ব্যবহার করার চেষ্টা করছি যা আমি সম্প্রতি এমভিসি 3 থেকে এমভিসি 4 বিটাতে রূপান্তর করেছি। এটির জন্য Global.asax এ কোডের একটি লাইন প্রয়োজন BundleTable.Bundles.RegisterTemplateBundles();, যা using System.Web.Optimization;শীর্ষে প্রয়োজন।

আমি যখন এটি করি, তখন আমি লাল স্কুইগলি লাইনগুলি পাই যা বলে যে "আপনি কি কোনও সমাবেশের রেফারেন্স মিস করছেন?" যখন আমি চেষ্টা করে রেফারেন্স যুক্ত করি এবং ডায়ালগের .NET ট্যাবে ক্লিক করি, এজেড থেকে সাজান, আমি দেখতে পাচ্ছি না System.Web.Optimization

আমি কীভাবে এই প্রকল্পটি আমার প্রকল্পে যুক্ত করব?


6
আমার ইতিমধ্যে অপ্টিমাইজেশন ছিল তবে এটি স্ক্রিপ্টবান্ডেল নিয়ে একটি সমস্যা সৃষ্টি করছিল যা আমি কেবল অপটিটি আনইনস্টল করার পরে সমাধান করতে পারি ... তারপরে এটি পুনরায় ইনস্টল করুন।
মিজিফার

1
@ মাইজিফার উত্তর হিসাবে আপনার মন্তব্য জমা দেওয়া উচিত। System.Web.Optimizationআমার রেফারেন্সগুলিতে নোডটি ফিরিয়ে আনতে এটিই আমার পক্ষে কাজ করেছিল ।
স্নেকস

2
@ মাইজিফার আপনার উত্তরটি এই অদ্ভুত আচরণের জন্য সঠিক। শুধুমাত্র জিনিস যে এটি সমস্যাটির সমাধান হবে আমাকে nuget cmd কমান্ড লাইন চলমান জন্য: আনইনস্টল-প্যাকেজ Microsoft.AspNet.Web.Optimization এবং তারপর পরে যা ইনস্টল চলমান: ইনস্টল-প্যাকেজ Microsoft.AspNet.Web.Optimization। ভিস্টুডিও 2013 এর সাথে আমার হোম কম্পিউটারে সপ্তাহের জন্য এটির জন্য চেষ্টা করার চেষ্টা করেছিল এবং এটি কখনই পেতে পারেনি। অনেক ধন্যবাদ.
রাদদেবস

@ মাইজিফার - আমার পক্ষেও কাজ করেছেন - ভিএসঅনলাইন থেকে একটি প্রকল্প "চেক আউট" করেছে এবং এই ত্রুটিটি ছিল - পুনরায় ইনস্টল করুন - 20 সেকেন্ডের চাকরি - ধন্যবাদ - এই বোকা সমস্যাগুলির মধ্যে একটি যা আপনি সহজেই একটি দিন হারাতে পারেন!
পার্সি

উত্তর:


728

আপডেট
সংস্করণ 1.1.x উপলভ্য, প্রকাশের নোটগুলি পড়ুন: https://www.nuget.org/packages/Mic Microsoft.AspNet.Web.Optimization


মাইক্রোসফট. ওয়েবে.অપ્টিমাইজেশন প্যাকেজটি এখন অপ্রচলিত। ASP.NET (MVC) 4 এবং উচ্চতর সহ আপনার মাইক্রোসফ্ট ASP.NET ওয়েব অপ্টিমাইজেশন ফ্রেমওয়ার্কটি ইনস্টল করা উচিত:

  • ন্যুগেট থেকে প্যাকেজটি ইনস্টল করুন :

    Install-Package Microsoft.AspNet.Web.Optimization
  • App_Start \ BundleConfig.cs এ বান্ডিল (গুলি) তৈরি এবং কনফিগার করুন:

    public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles) {
            bundles.Add(new ScriptBundle("~/Scripts/jquery").Include(
                "~/Scripts/Lib/jquery/jquery-{version}.js",
                "~/Scripts/Lib/jquery/jquery.*",
                "~/Scripts/Lib/jquery/jquery-ui-{version}.js")
            );
    
            bundles.Add(new ScriptBundle("~/Scripts/knockout").Include(
                 "~/Scripts/Lib/knockout/knockout-{version}.js",
                 "~/Scripts/Lib/knockout/knockout-deferred-updates.js")
            );
        }
    }
  • আপনার Global.asax.cs এ অ্যাপ্লিকেশন_স্টার্ট () থেকে রেজিস্টারবান্ডেলস () ফাংশনটি কল করুন:

    using System.Web.Optimization;
    
    protected void Application_Start() {
         ...
         BundleConfig.RegisterBundles(BundleTable.Bundles);
         ...
    }
  • আপনার ভিউ.সিএইচটিএমএলে অপ্টিমাইজেশন নেমস্পেস অন্তর্ভুক্ত করুন এবং বান্ডিল (গুলি) রেন্ডার করুন:

    @using System.Web.Optimization
    
    @Scripts.Render("~/Scripts/jquery")
    @Scripts.Render("~/Scripts/knockout")

আরও তথ্যের জন্য http://www.asp.net/mvc/overview/performance/bundling- এবং- সংশোধন দেখুন


2
এটি ব্যবহার করার জন্য আপনার কি এমভিসি 4 দরকার?
ফ্লোটলিফট

5
এটি পুরানো নয়। ভিজ্যুয়াল স্টুডিও 2012 এবং
এএসপি.এনইটি

29
আপনার উত্তরে "System.Web.Optimization;" ব্যবহার করা অন্তর্ভুক্ত রয়েছে, যা ঠিক প্রশ্নটি জিজ্ঞাসাকারী যা জিজ্ঞাসা করছেন।
ডেভিডপ্রিডেদেভ

9
@ ডেভ: এটা ভাল না খারাপ? "মিসিং অ্যাসেম্বলি রেফারেন্স" সমাধানের জন্য মাইক্রোসফ্ট.আসপনেট.ওয়েব.অ্যাপটিমাইজেশন উত্তরে উল্লিখিত হিসাবে ইনস্টল করা উচিত।
mhu

6
ডিফল্ট এমভিসি টেম্পলেটটিতে আমি পৃষ্ঠার শীর্ষে সিস্টেম.ওয়েব.অপটিমাইজেশন নেমস্পেস যুক্ত না করে স্ক্রিপ্ট ক্লাস ব্যবহার করতে পারি। তবে আমার প্রজেক্টে আমি ত্রুটি পেয়েছি "নাম স্ক্রিপ্টস বিদ্যমান নেই"। আমি কীভাবে এটি সমাধান করতে পারি? ওয়েবকনফিগে এই নেমস্পেস যুক্ত করা কোনও লাভ হয়নি। সম্পাদনা করুন: পুনরায় লোডিং সমাধান সাহায্য করেছে, দুঃখিত :)
ওয়াচবার্ন

83

এএসপি. নেট এমভিসি 4 এর চূড়ান্ত প্রকাশিত সংস্করণ সহ পদ্ধতিটি নীচে দেওয়া হল:

  • মাইক্রোসফ্ট.এস্পনেট.ওয়েব.উপটিমাইজেশন নুগেটের মাধ্যমে ইনস্টল করুন (এটি ফ্রেমওয়ার্কের মাধ্যমে ইনস্টল করা হয়নি)

    install-package Microsoft.AspNet.Web.Optimization
  • Global.asax অ্যাপ্লিকেশন_স্টার্টে বান্ডিল তৈরি করুন:

    var scripts = new ScriptBundle("~/MyBundle");
    scripts.IncludeDirectory("~/Scripts/MyDirectory", "*.js");
    BundleTable.Bundles.Add(scripts);
  • "সিস্টেম" ওয়েবে.অપ્টিমাইজেশন "নাম স্থান" দর্শন "ওয়েবকনফাইগে যুক্ত করুন:

     <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Optimization" />
        </namespaces>
    </pages>
  • আপনার view.cshtml এ শেষ ধাপে তৈরি হওয়া বান্ডিলটিতে একটি অন্তর্ভুক্ত করুন:

    @Scripts.Render("~/MyBundle")

ডিবাগ মোডে, আপনার ডিরেক্টরিতে থাকা সমস্ত স্ক্রিপ্ট ফাইল পৃথকভাবে রেন্ডার হবে; রিলিজ মোডে এগুলি বান্ডিল করা হবে এবং মাইনাইফ করা হবে।


সঠিক, এই সংস্করণে এটি অন্তর্ভুক্ত রয়েছে। অন্য সংস্করণ না।
লুক বেলবিনা

1
আমি বুঝতে পারি না কেন এটি আমার পক্ষে কাজ করে না। আমি এইভাবে এবং বান্ডিলকনফিগ.সি.এস. এ বান্ডিল তৈরির জন্য উভয় চেষ্টা করেছি কিন্তু যখন আমি @ স্টাইলগুলি যুক্ত করি my আমার দৃষ্টিভঙ্গিতে রেন্ডার ("~ / সিএসএসবান্ডেল") আমি পাই সমস্ত কিছু <লিঙ্ক href = "/ সিএসএসবান্ডেল" rel = "স্টাইলশিট "/> যা আমাকে 404 দেয় Any কোনও ধারণা কেন?
বনদেব

@vsdev আমি জানি যে এটি 4 বছর অনেক দেরি হয়ে গেছে, তবে আপনি এটি সঠিকভাবে যুক্ত করছেন তা নিশ্চিত করার জন্য আপনার বান্ডেলকনফিগ.সি.কে পরীক্ষা করতে হবে - এই উত্তরের লাইনটি কেবল ".js"ফাইলগুলিই উল্লেখ করছে । ভিতরে public static void RegisterBundles(BundleCollection bundles) { ... }আপনি যেমন কিছু করতে সক্ষম হন bundles.Add(new StyleBundle("~/CssBundle"));এবং এটি আপনার CssBundleফোল্ডারে সমস্ত সিএসএস ফাইল দখল করতে পারে । ScriptBundleসিএসএস ফাইলের উদাহরণে এটির মতো আপনি চান না ।
vapcguy

17

ন্যুগেট থেকে প্যাকেজটি আপডেট করুন (পুনরায় ইনস্টল করুন), আপনি কমান্ডটি ব্যবহার করতে পারেন:

update-Package Microsoft.AspNet.Web.Optimization -reinstall


14

আমার ক্ষেত্রে এটি টিএফএস ইস্যু ছিল, যেহেতু টিএফএস বাইনারিগুলি বাদ দেয়, তাই নুগেটের প্রধানমন্ত্রী ন্যুগেটটি ইনস্টল করেছেন এবং লাইব্রেরিটি আপডেট করবেন না যদি আপনার অনুরূপ সমস্যা থাকে:

  • উত্স নিয়ন্ত্রণে যান
  • .. \ প্যাকেজগুলি \ মাইক্রোসফ্ট.ওয়েব.অ্যাপটিমাইজেশন নেভিগেট করুন
  • Lib ফোল্ডার যুক্ত করুন (বাইনারি এক্সটেনশানগুলি বাদ দিন চেক করুন)
  • আপনার সমাধানটি আপডেট করুন এবং পথ থেকে dll রেফারেন্স যুক্ত করুন

এনবি: প্যাকেজ ফোল্ডারটি yousolution.sln ফাইলের একই স্তরে


11

সিস্টেম আনইনস্টল করতে নিউগেট ব্যবহার করে e ওয়েবে O প্যাকেজ ম্যানেজার কনসোলটিতে অপ্টিমাইজেশন:

আনইনস্টল-প্যাকেজ মাইক্রোসফ্ট.এস্পনেট.ওয়েব.অ্যাপটিমাইজেশন

তারপরে পুনরায় ইনস্টল করে:

ইনস্টল-প্যাকেজ মাইক্রোসফ্ট.এস্পনেট.ওয়েব.অ্যাপটিমাইজেশন

আপনার জন্য এই সমস্যা সমাধান করতে পারে।


1
নিশ্চিত না কীভাবে এই প্রশ্নের উত্তর?
টাইলারড 87

@ টাইলারড ৮87 সরল এটি পরিস্থিতিগুলির একটি নির্দিষ্ট সেট সমাধান করে এবং আমিই একমাত্র এই ঘটনাটি খুঁজে পেলাম না, যদি আপনি এই প্রশ্নের মন্তব্যগুলি পড়ে দেখেন যে স্নেকস ২৯ শে এপ্রিল '14 এ 16:39 এ বলেছিলেন যে তাদের যে নির্দিষ্ট নির্দেশাবলী আমি দিয়েছিলাম তা অনুসরণ করতে হবে এবং নীচে অন্য কেউ একই পোস্ট করেছিল এবং পরে তা অগ্রাহ্য হয়েছিল।
মিজিফার

সম্ভবত আপনার উত্তরটি সম্পাদনা করুন যাতে এটি আরও উত্তর বলে মনে হয়? আপনি বুঝতে পারছিলেন না যে আপনি প্রশ্নের উত্তর দিচ্ছেন বা আপনি কী পরামর্শ দিচ্ছেন।
TylerD87

@ টাইলারড 8787 প্রশ্নটি অনুকূলিতকরণ সম্পর্কে ছিল এবং আমার উত্তরটি অনুকূলিতকরণ সম্পর্কে ছিল, এটি প্রশ্নের বিশদে সমস্যাটি সমাধান করে এবং কমপক্ষে ২ জন দ্বারা স্বীকৃত হয়েছে, আপনি যদি আমার উত্তরটিকে ভুলভাবে বুঝতে পেরেছেন এবং কীভাবে সেরা হিসাবে আপনি বিশদ সরবরাহ করেন তবে আরও বিস্তৃত শ্রোতাদের একটি পরিষ্কার উত্তর দেওয়ার জন্য আমি এটিকে পরিবর্তন / সংশোধন করতে পারলাম তবে আমি এই ধরনের পরিবর্তন করতে পেরে খুশি হব তবে গঠনমূলক সমালোচনা না করে আমি কীভাবে উন্নতি করতে পারি তা নির্ধারণ করতে আমি অক্ষম।
মিজিফার

হাই, আমি একটি সম্পাদনার পরামর্শ দিয়েছি যা আমি উল্লেখ করছি তা আরও পরিষ্কার করে দেয়। উপরের মন্তব্যে পড়ার পরে আমি দেখতে পাচ্ছি যে এটি আসলে প্রস্তাবটি যা কাজ করেছিল তবে আপনার উত্তরটি যেভাবে উপস্থাপন করা হয়েছিল তা আপনি কী পরামর্শ দিচ্ছেন তা সম্পর্কে অস্পষ্ট।
টাইলারড 87

6

এনজিগেট থেকে এটিকে ভিজ্যুয়াল স্টুডিও ওপেন ভিজ্যুয়াল স্টুডিও 2010 এর মাধ্যমে ইনস্টল করুন, সরঞ্জামগুলি > গ্রন্থাগার প্যাকেজ ম্যানেজার-> প্যাকেজ ম্যানেজার কনসোল নির্বাচন করুন

এটি কনস্লভ খুলবে, পেস্ট করুন

Install-Package Microsoft.AspNet.Web.Optimization 

এবং প্রবেশ করুন। এবং আপনি সম্পন্ন হয়েছে


2

Global.asax অ্যাপ্লিকেশন_স্টার্টে সেট করুন (রিলেস মোডে ইত্যাদি):

BundleTable.EnableOptimizations = **true**;

সমস্ত স্ক্রিপ্ট এবং শৈলীর ফাইলগুলি পৃথকভাবে রেন্ডার করতে DEBUG মোডে মিনিফিকেশন এবং মিথ্যাতে পরিবর্তন সক্ষম করতে ।


5
ওয়েবকনফিগের মাধ্যমে এটি নিয়ন্ত্রণ করা আরও সহজ। যদি <compilation debug="true" />সেট করা থাকে (একটি ডিবাগ সংস্করণ তৈরি করার সময় যা বেশ মানসম্পন্ন), কোনও অপ্টিমাইজেশন হয় না। সাধারণত এই সেটিংটি একটি রিলিজ বিল্ডে স্বয়ংক্রিয়ভাবে সরানো হবে। BundleTable.EnableOptimizationsকেবলমাত্র ওয়েবকনফিগকে ওভারলুল করার জন্য ব্যবহার করা উচিত। আরও তথ্যের জন্য: asp.net/mvc/tutorials/mvc-4/bundling-and-minification ( "নিয়ন্ত্রণ Bundling এবং Minification" এর জন্য অনুসন্ধান)
mhu

এটি আমাকে অনেক সাহায্য করেছে, আপনাকে ধন্যবাদ। আমাকে এটিকে অক্ষম করতে হয়েছিল কারণ ডটলেস + রিকুয়েস্টরেডুসের সাথে কাজ করা বান্ডিলগুলি গারবেলযুক্ত মেস তৈরি করছিল।
siva.k

এই সেটিংটি নির্ভর করে যদি আপনি আপনার বান্ডিলগুলিতে প্রাক-মিনিফাইড ফাইলগুলি ব্যবহার করছেন, বা আপনি যদি নন-মিনফাইডগুলি ব্যবহার করেন - তবে প্রতিটি মোডের সেরা অনুশীলন বাদে আপনি ডিবাগ বা রিলিজে থাকলে এতটা নয় ex প্রাক্তন। , আপনি এমন একটি প্রকল্প রাখতে পারেন যা আপনি ডিবাগ মোডে সংকলন করছেন, তবে যেখানে BundleTable.EnableOptimizations = false;আপনার বান্ডেলকনফিগ। সিগুলিতে রয়েছে, আপনি সমস্ত প্রাক-মিনাইফাইড ফাইল নির্দিষ্ট করে দিচ্ছেন এবং আপনি চান না যে এটি তাদের উপর অন্য কোনও ছোট করা হোক do
vapcguy

কারও ইস্যুতে এটি কেবল তখনই উত্তর হতে পারে যদি তারা তাদের বান্ডেলকনফিগ। যদি তারা .min ফাইলগুলি ব্যবহার করে এবং এটি সত্যতে সেট করে, এতে সমস্যা হবে।
vapcguy
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.