রেজার / এমভিসি 3 ব্যবহার করে একটি ওয়েব পৃষ্ঠায় অ্যাসেম্বলি ভার্সন পেতে সমস্যা


104

আমি আমার এমভিসি 3 সাইটের প্রতিটি পৃষ্ঠার ফুটারে এসেম্বলিআইএনফো সংস্করণ ডেটা রাখার জন্য আমার _লআউটআর.পি.এসটিএমএল ফাইলের একটি ফুটারে নিম্নলিখিত কোডটি ব্যবহার করছি। যাহোক:

@System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()

পাদলেখটিতে কেবল প্রিন্ট করুন:

Revision 0.0.0.0

যখন আমি নিম্নলিখিতটি ব্যবহার করে "এক্সিকিউটিং অ্যাসেম্বলি" এর জন্য সমস্ত বিধানসভা তথ্য প্রদর্শন করার জন্য ভিউটি সংশোধন করি

@System.Reflection.Assembly.GetExecutingAssembly().GetName().ToString()

যা নিম্নলিখিতগুলি মুদ্রণ করে:

Revision App_Web__layout.cshtml.639c3968.hlogy75x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

এটি দেখায় যে "এক্সিকিউটিং এসেম্বলি" আমার মূল অ্যাপ নয়, এটি নিজেই দৃশ্য view

আমি কেবলমাত্র পৃথক মতামত না করে কীভাবে অ্যাকটিউয়াল অ্যাপ্লিকেশনটির জন্য সমাবেশ সম্পর্কিত তথ্য পাব ??

উত্তর:


218

cshtml / vbhtml সমাবেশের গতিশীল সংকলন।

@typeof(YourApplicationNamespace.MvcApplication).Assembly.GetName().Version

এ কেমন?


15
এবং @GetType(YourApplicationNamespace.MvcApplication).Assembly.GetName.Versionসমস্ত VB.NETers জন্য। আমরা দুজনেই.
এডহবেল

আমাকে অবশ্যই আমার প্রশংসা ভাগ করতে হবে - [এসেম্বলি: এসেম্বলি ভার্সন ("১.০। *")] এর সাথে গল্পের পাশাপাশি "" অ্যাপ্লিকেশনটিতে qa এর রিভিশন নম্বরটি দেখান "এর এই শীর্ষগুলি] দুর্দান্ত কাজ করে।
নিখরচায়

4
WebAPI সাইটের জন্য: @typeof(YourDefaultNamespace.WebApiApplication).Assembly.GetName().Version। এটি ডিফল্ট নেমস্পেস ছাড়াও কাজ করতে পারে:@typeof(WebApiApplication).Assembly.GetName().Version
ক্রিশ্চিয়ান ডায়াকোনস্কু

@typeof(YourApplicationNamespace.MvcApplication).Assembly.GetName().Version.ToString(3)যদি কেউ কৌতূহলী হন তবে অ্যাসেম্বলি সংস্করণটির 4 টি অংশের 3 টি প্রদান করে। আপনি 0 থেকে 4 এর মধ্যে পরিবর্তিত হতে পারেন
মাফাই

1
ডটনেট কোর ২.১ এ এটি আমার জন্য কাজ করে: @{Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;}তারপরে<h1>Ver. @version</h1>
লিওনার্ড এ বি

16

এই সহায়কটি ব্যবহার করা আমার পক্ষে কাজ করে:

    public static HtmlString ApplicationVersion(this HtmlHelper helper)
    {
        var asm = System.Reflection.Assembly.GetExecutingAssembly();
        var version = asm.GetName().Version;
        var product = asm.GetCustomAttributes(typeof(System.Reflection.AssemblyProductAttribute), true).FirstOrDefault() as System.Reflection.AssemblyProductAttribute;

        if (version != null && product != null)
        {
            return new HtmlString(string.Format("<span>{0} v{1}.{2}.{3} ({4})</span>", product.Product, version.Major, version.Minor, version.Build, version.Revision));
        }
        else
        {
            return new HtmlString("");
        }

    }

13

এটি আমার পক্ষে কাজ করে। স্পষ্টভাবে টাইপ উল্লেখ করার প্রয়োজন ছাড়া।

@ViewContext.Controller.GetType().Assembly.GetName().Version

5

আপনাকে প্রকল্পের কোনও ধরণের সমাবেশ করতে হবে:

typeof(MyType).Assembly.Whatever

কোথায় MyTypeMVC প্রকল্প নিজেই যে কোন ধরনের (যেমন, একটি নিয়ামক বা মডেল, অথবা MvcApplicationবর্গ)


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

4

টেকপাড়ার উত্তরটি প্রসারিত করা, আপনি যদি এমভিসি রেজারের কাছ থেকে এসেম্বলি ইনফরমেশনাল ভার্সনঅ্যাট্রিবিউট পেতে একটি লাইনার চান তবে দেখুন:

@System.Diagnostics.FileVersionInfo.GetVersionInfo(typeof(Zeroarc.Candid.Web.MvcApplication).Assembly.Location).ProductVersion

1

আপনি getCallingAs आशीर्वाद () ব্যবহার করার চেষ্টা করতে পারেন। আমি নিশ্চিত নই যে এটি কল স্ট্যাকের তুলনায় যথেষ্ট পরিমাণে আছে বা না, তবে যেহেতু রেজার আসলে প্রতিটি দৃশ্যের জন্য একটি সংসদ তৈরি করে, তাই এটি যুক্তিযুক্ত যে আপনার অ্যাপ্লিকেশনটি ভিউ অ্যাসেমব্লির জন্য কলিং অ্যাসেম্বলি হবে।


কলিং অ্যাসেমব্লি গাছের মধ্যে মাত্র এক স্তর উপরে চলেছে ... এখনও ভাল নয়।
জে স্টিভেনস

0

আমার সমস্যাটি হ'ল আমি পরে নামটির নামকরণ করেছি এবং উপরে ত্রুটি পেয়েছি। সমস্যাটি ছিল ভিউ-ওয়েবকনফাইগের পুরানো নেমস্পেসের রেফারেন্স। আমাকে এটি থেকে বদলাতে Project.WebAPI17হয়েছিলCompany.Project.WebAPI17

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />
        <add namespace="Company.Project.WebAPI17" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

0

এপিআই নিয়ন্ত্রকের জন্য আমি অন্যান্য উত্তরের ভিত্তিতে এটি ব্যবহার করেছি

Version = GetType().Assembly.GetName().Version.ToString()

-1

আপনি নীচে হিসাবে নাম সম্পত্তি ব্যবহার করে এটি পেতে পারেন:

  @System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;

যে আপনার জন্য খুঁজছেন?


-1

হোম কন্ট্রোলারে যান এবং কেবল এই কোডটি অনুলিপি করুন:

স্ট্রিংয়ের নাম পরিবর্তন ActionResultকরুন

public string Index()

   return typeof(Controller).Assembly.GetName().Version.ToString() ;

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