প্রোডাকশন উইন্ডোজ সার্ভারে .NET এর কোন সংস্করণ (গুলি) ইনস্টল করা আছে তা বলার বোকা উপায় কী?


99

এই প্রশ্নটি এত বেশি প্রোগ্রামিং সম্পর্কিত নয় কারণ এটি মোতায়েন সম্পর্কিত।

আমি নিজেকে আমার সংস্থার গ্রুপের সাথে অনেক কথোপকথন করতে দেখি যার কাজ এটি হ'ল আমাদের প্রোডাকশন উইন্ডোজ সার্ভারগুলি বজায় রাখা এবং তাদের উপর আমাদের কোড স্থাপন করা। আইনী এবং আনুগত্যের কারণে, আমার কাছে সরাসরি দৃশ্যমানতা বা সার্ভারগুলির উপর কোনও নিয়ন্ত্রণ নেই তাই কেবলমাত্র আমি বলতে পারি যে .NET এর কোন সংস্করণ (গুলি) এর যে কোনওটিতে ইনস্টল করা আছে আমি সেই গোষ্ঠীকে যে দিকনির্দেশ দিয়েছি is

এখনও অবধি, যে সংস্করণটি ইনস্টল করা হয়েছে তা জানাতে আমি যে সমস্ত পদ্ধতিতে চিন্তা করতে পারি ((.১ বা ২.০ এর সাথে মেলে প্রশাসনিক সরঞ্জামগুলি পরীক্ষা করুন, "প্রোগ্রামগুলি যোগ করুন / সরান" তালিকার প্রবেশদ্বারগুলি পরীক্ষা করুন, অস্তিত্বের জন্য পরীক্ষা করুন সি এর অধীনে ডিরেক্টরিগুলি: \ উইন্ডোজ \ মাইক্রোসফট.এনইটি) ত্রুটিযুক্ত (আমি প্রশাসনিক সরঞ্জামগুলির অধীনে কমপক্ষে একটি মেশিনটি 2.0 এর সাথে দেখেছি তবে 2.0 এন্ট্রি নেই - এবং এই পদ্ধতিটি আপনাকে 3.0+, "প্রোগ্রামগুলি যুক্ত / সরান" তালিকা সম্পর্কে কিছুই বলবে না বাস্তবতার সাথে সিঙ্ক থেকে বেরিয়ে আসতে পারে এবং ডিরেক্টরিগুলির অস্তিত্ব অগত্যা কোনও অর্থ দেয় না)।

প্রদত্ত যে আমার সাধারণত এই জিনিসগুলি আগে থেকেই ছিল তা জানতে হবে (এটি আবিষ্কার করে যে "ওফস, এটির যে সমস্ত সংস্করণ এবং পরিষেবা প্যাকগুলি আপনার প্রয়োজন নেই" সংক্ষিপ্ত রক্ষণাবেক্ষণ উইন্ডোতে সত্যই ভাল কাজ করে না) এবং আমাকে করতে হবে যেহেতু আমি সরাসরি সার্ভারগুলিতে উঠতে পারি না, "প্রক্সির মাধ্যমে" চেকিং করা কি না, কোনও প্রোডাকশন উইন্ডোজ সার্ভারে .NET এর কোন সংস্করণ (গুলি) ইনস্টল করা আছে তা বলার বোকা উপায় কী? ফ্রেমওয়ার্কটি ইনস্টল করে তা ব্যবহার করার জন্য কিছু অভ্যন্তরীণ উপায় তত দ্রুত হবে এবং লোড করার জন্য কোনও ধরণের ইউটিলিটি প্রয়োজন হবে না এবং ফ্রেমওয়ার্কগুলি সঠিকভাবে ইনস্টল না করা থাকলেও স্থানে ফাইল রয়েছে তবে এমন একটি পদ্ধতি অবশ্যই ব্যর্থ হবে (যেমন , সেখানে একটি ডিরেক্টরি আছে এবং gacutil.exe সেখানে যুক্ত করা হয়েছে তবে কাঠামোর সেই সংস্করণটি সত্যই "ইনস্টলড" নয়)

সম্পাদনা: ফ্রেমওয়ার্ক (গুলি) এ অন্তর্নির্মিত করার জন্য ভাল বোকা প্রতিরোধের অন্তর্নিহিত উপায়ের অভাবে, কেউ কি কোনও ভাল, লাইটওয়েট, নন-ইনস্টল-প্রয়োজনীয় প্রোগ্রাম সম্পর্কে জানতে পারে যা এটি খুঁজে পেতে পারে? আমি ভাবতে পারি যে কেউ সহজেই একটি লিখতে পারে তবে যদি ইতিমধ্যে এটি উপস্থিত থাকে তবে এটি আরও ভাল।


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

উত্তর:


54

আপনি যে সার্ভারটির জন্য এই তথ্যটি সন্ধান করছেন তাতে আপনার IE খুলতে হবে এবং এই সাইটে যেতে হবে: http://www.hanselman.com/smallestdotnet/

এটি সবই নেয়।

সাইটটিতে এমন একটি স্ক্রিপ্ট রয়েছে যা আপনার ব্রাউজারের "ইউজারএজেন্ট" দেখায় এবং আপনার নেট নেট ফ্রেমওয়ার্কটি (অথবা নেই) ইনস্টল করে কোন সংস্করণ (যদি থাকে) নির্ধারণ করে এবং এটি স্বয়ংক্রিয়ভাবে প্রদর্শিত হয় (তবে আপনি যদি চয়ন করেন তবে মোট আকার গণনা করে) .NET ফ্রেমওয়ার্ক ডাউনলোড করতে)।


19
- যদি এটি প্রোডাকশন সার্ভার হয় তবে তার কাছে এটি অ্যাক্সেস নাও থাকতে পারে - প্রোড সার্ভারে এলোমেলো সাইটগুলি ব্রাউজ করা বড় হ'ল - সেই সাইটটি কেবলমাত্র সর্বোচ্চ। নেট সংস্করণ দেয়; তিনি তাদের সবাইকে চান
ফ্রেঞ্চি পেনভ

4
সমস্যাটি, দেখতে দেখতে, সেই পদ্ধতির সাথে এটি কেবল আপনাকে জানায় যে আপনার কাছে সর্বশেষতম সংস্করণটি কী। আমি 2.0, 3.0, 3.5 এবং (দুঃখের সাথে) এমনকি 1.1 তে কোড স্থাপন করি। যদিও লক্ষ্যটি হচ্ছে অবশেষে সবকিছু আপগ্রেড করা, তবে আপাতত দুঃখজনক সত্যটি হ'ল আমার সমস্ত বিভিন্ন সমান্তরাল সংস্করণ প্রয়োজন।
টম কিড

4
যদিও আমি সম্মত হই যে এই সমাধানটি উত্পাদন সার্ভারগুলির জন্য উপযুক্ত নাও হতে পারে, তবে আমি এটিকে উন্নত করেছিলাম কারণ এটি অবশ্যই উন্নয়ন মেশিনের জন্য সহজতম এবং দ্রুততম পদ্ধতি (যার উপর আমি এটি প্রায়শই ব্যবহার করেছি)। স্ক্রিপ্টের বর্তমান সংস্করণটি আমি ইনস্টল করা .NET- র বিভিন্ন সংস্করণে সফলভাবে সনাক্ত করে।
কিমিওট

প্রদত্ত ইউআরএল থেকে ব্যবহারকারী এজেন্ট স্ট্রিং: মজিলা / 5.0 (সামঞ্জস্যপূর্ণ; এমএসআইই 10.0; উইন্ডোজ এনটি 6.1; ডাব্লুডাব্লুও 64; ট্রিডেন্ট / 6.0) । বু-গা-গা, তাই, কী। নেট ফ্রেমওয়ার্ক সংস্করণ ইনস্টল করা আছে? প্রত্যাশিত ফলাফল অর্জনের জন্য আইইটিকে সামঞ্জস্যপূর্ণ মোডে স্যুইচ করতে হবে।
মাস্ক

4
স্কট হ্যানসেলম্যান অবশ্যই তাঁর উদ্দীপনা প্রতিষ্ঠা করেছেন তাই আমি এটিকে "র্যান্ডম সাইট" বলব না। (প্লাস তিনি সোর্স কোডটি উপলভ্য করে দেন But) তবে এই অ্যাপ্লিকেশনটির জন্য একটি ইন্টারনেট সংযোগ প্রয়োজন, যা লক-ইন-ফ্যারাডে-খাঁচার হোস্টগুলিতে প্রায়শই অভাব থাকে।
রবার্ট ক্যালহাউন

24

আপনি এই ব্লগের এন্ট্রি অনুসারে প্রোগ্রামারিভাবে রেজিস্ট্রি এবং কয়েকটি অন্যান্য জিনিস পরীক্ষা করতে পারেন ।

দেখার জন্য রেজিস্ট্রি কী

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\...]

আমি বলতে পারি না - এটি কি 1.1 কভার করে?
টম কিড

4
আমি আমার সিস্টেমে এই রেজিস্ট্রি কী এর অধীনে 1.1 বিশদ দেখতে পাচ্ছি, তাই আমি বলব এটি এতে 1.1 টি কভার করে
নিলাল কান্নাটন

হ্যাঁ, under এনডিপি \ v4 \ সম্পূর্ণ under এর অধীনে খুঁজছেন, তারপরে সংস্করণে আমি দেখতে পেয়েছিলাম আমার v 4.5.5 ছিল ... টার্গেট ভার্সনটি 4.0.0 এ সেট করা হয়েছে
দ্য গোল্ডটি অফ

19

এখান থেকে উত্তর পাওয়া গেছে :

কোন .NET ফ্রেমওয়ার্ক সংস্করণ ইনস্টল করা আছে তা পরীক্ষা করুন

কমান্ড প্রম্পটটি খুলুন এবং নীচের কমান্ড লাইনের একটি অনুলিপি করুন

dir %WINDIR%\Microsoft.Net\Framework\v*

বা

dir %WINDIR%\Microsoft.Net\Framework\v* /O:-N /B


13
4.5 এর জায়গায় 4.5 এবং 4.5.1 ইনস্টল করা আছে, সুতরাং এই সমাধানটি বিভ্রান্তিকর হতে পারে। msdn.microsoft.com/en-us/library/5a4x27ek%28v=vs.110%29.aspx
নিক Patsaris

15

অনুযায়ী CodeTrawler এর উত্তর , সমাধান একটি অনুসন্ধানকারী উইন্ডোয় নিম্নলিখিত প্রবেশ করতে হয়:

% সিস্টেমরোট% \ মাইক্রোসফট.নেট \ ফ্রেমওয়ার্ক

তারপরে অনুসন্ধান করুন:

Mscorlib.dll

... এবং প্রতিটি ফলাফলের জন্য ডান ক্লিক করুন / সংস্করণ ট্যাবে যান।


সংস্করণ 4 / 4.5-এর মধ্যে পার্থক্যটির সবচেয়ে সহজ উপায় বলে মনে হয় অন্যথায়, কী ইনস্টল করা হয়েছে তার একটি পর্যালোচনার জন্য, @ কে.ডায়াস উত্তরটি আমার পক্ষে কাজ করেছে: দির% উইন্ডির% \ মাইক্রোসফট.নেট \ ফ্রেমওয়ার্ক \ v * / O : -এন / বি
টিমোথি লি রাসেল

15

মাইক্রোসফ্ট উপায়টি হ'ল:

এমএসডিএন: কোনটি নেট ফ্রেমওয়ার্ক সংস্করণ ইনস্টল করা আছে তা নির্ধারণ করবেন (যা আপনাকে নিম্নলিখিত রেজিস্ট্রি কীতে নির্দেশ দেয় HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\...:)

আপনি যদি নির্বোধ চান তবে এটি অন্য জিনিস। আমি ফ্রেমওয়ার্ক ফোল্ডারের একটি এক্সকপি সম্পর্কে চিন্তা করব না। কেউ যদি এমনটি করে তবে আমি কম্পিউটারটিকে ভাঙ্গা বিবেচনা করব।

সবচেয়ে বুদ্ধিমান উপায় হ'ল একটি ছোট্ট প্রোগ্রাম লিখুন যা .NET এর প্রতিটি সংস্করণ এবং আপনি যে লাইব্রেরিগুলির যত্ন নেবেন এবং সেগুলি চালান সেগুলি ব্যবহার করে।

কোনও ইনস্টল পদ্ধতির জন্য, পাওয়ারব্যাসিক একটি দুর্দান্ত সরঞ্জাম। এটি ছোট কোনও রানটাইমের প্রয়োজন নেই exe এটি উপরের এমএস কেবি নিবন্ধে বর্ণিত চেকগুলি স্বয়ংক্রিয় করতে পারে।


এই পদ্ধতিটি এখন আর 4.5.1 এবং পরবর্তী সংস্করণগুলির জন্য কাজ করে না
স্কট সলমার

@ ওকুমা.স্কোট - আমি অফিসিয়াল এমএসডিএন নির্দেশাবলীতে লিঙ্কটি আপডেট করেছি।
কিমিওট


3

আপনি যে মেশিনটি যাচাই করতে চান তা যদি .NET SDK ইনস্টল থাকে তবে আপনি একটি SDK কমান্ড প্রম্পট ব্যবহার করতে পারেন এবং প্রোগ্রামটি চালাতে পারেন CLRVer.exe


4
নিখরচায় কেবল কার্যকর করার মতো কোনও (লাইসেন্সিং) সমস্যা আছে কি? এটির কথা বলার কোনও নির্ভরতা নেই।

4
ক্লিভারটি অকেজো, কারণ এটি মিথ্যা। এটি ৪.৪ / ৪.6 এর জন্য
..০


1

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


1

.NET 3.0 সনাক্ত করার সরকারী উপায়টি এখানে বর্ণিত হয়েছে

http://msdn.microsoft.com/en-us/library/aa480198.aspx

ত্রুটিযুক্ত, কারণ কলারটির জন্য রেজিস্ট্রি অ্যাক্সেসের অনুমতি থাকতে হবে।

এমএসডিএন ব্যবহারকারী এজেন্ট স্ট্রিংটি পরীক্ষা করে .NET 3.5 সনাক্ত করার জন্য একটি কৌশলও উল্লেখ করেছে:

http://msdn.microsoft.com/en-us/library/bb909885.aspx

আমি মনে করি মাইক্রোসফ্ট এর চেয়ে ভাল কাজ করা উচিত ছিল।


1

এছাড়াও, স্ট্যাক ওভারফ্লো প্রশ্ন দেখুন কীভাবে। নেট ফ্রেমওয়ার্ক সংস্করণ এবং পরিষেবা প্যাকগুলি ইনস্টল করা আছে তা কীভাবে সনাক্ত করবেন? যা আরও উল্লেখ করেছে:

জ্ঞান ভিত্তি নিবন্ধে এই প্রশ্নের একটি সরকারী মাইক্রোসফ্ট উত্তর রয়েছে [মাইক্রোসফ্টের কোন সংস্করণ এবং পরিষেবা প্যাক স্তর নির্ধারণ করা যায় কীভাবে। নেট ফ্রেমওয়ার্ক ইনস্টল করা আছে] [২]

আর্টিকেল আইডি: 318785 - শেষ পর্যালোচনা: নভেম্বর 7, 2008 - সংশোধন: 20.1 .NET ফ্রেমওয়ার্কের কোন সংস্করণ ইনস্টল করা আছে এবং পরিষেবা প্যাকগুলি প্রয়োগ করা হয়েছে কিনা তা নির্ধারণ করবেন।

দুর্ভাগ্যক্রমে, এটি কাজ করে বলে মনে হচ্ছে না, কারণ mscorlib.dll2.0 ডিরেক্টরিতে সংস্করণটির একটি 2.0 সংস্করণ রয়েছে এবং mscorlib.dll3.5 এসপি 1 ইনস্টল থাকা সত্ত্বেও 3.0 বা 3.5 ডিরেক্টরিতে কোনও সংস্করণ নেই ... সরকারী মাইক্রোসফ্ট উত্তরটি কেন হবে? এত ভুল তথ্য?


1

.NET ফ্রেমওয়ার্ক 4.5 এবং তারপরের সংস্করণগুলির জন্য আপনার সার্ভারের সমর্থন নির্ধারণ করতে (৪.২.২ এর মাধ্যমে পরীক্ষিত): যদি আপনার সার্ভারে রেজিস্ট্রি অ্যাক্সেস না থাকে তবে সেই সার্ভারটিতে অ্যাপ প্রকাশের অধিকার রয়েছে, তুচ্ছ একটি এমভিসি 5 অ্যাপ্লিকেশন তৈরি করুন নিয়ামক, এটির মতো:

using System.Web.Mvc;

namespace DotnetVersionTest.Controllers
{
    public class DefaultController : Controller
    {
        public string Index()
        {
            return "simple .NET version test...";
        }
    }
}

তারপরে আপনার ওয়েব কনফিগে, নিম্নলিখিত বিভাগে পছন্দসই .NET ফ্রেমওয়ার্ক সংস্করণগুলি অনুসরণ করুন, targetFrameworkমানগুলি পছন্দসই হিসাবে পরিবর্তন করুন :

<system.web>
    <customErrors mode="Off"/>
    <compilation debug="true" targetFramework="4.5.2"/>
    <httpRuntime targetFramework="4.5.2"/>
</system.web>

আপনার সার্ভারে প্রতিটি লক্ষ্য প্রকাশ করুন, তারপরে ব্রাউজ করুন <app deploy URL>/Default। যদি আপনার সার্ভার লক্ষ্য কাঠামো সমর্থন করে, তবে সাধারণ স্ট্রিংটি আপনার তুচ্ছ নিয়ন্ত্রণকারী থেকে প্রদর্শিত হবে। যদি তা না হয় তবে আপনি নিম্নলিখিতগুলির মতো একটি ত্রুটি পাবেন:

সার্ভারে অসমর্থিত .NET 4.5.2 এর উদাহরণ

সুতরাং এই ক্ষেত্রে, আমার টার্গেট সার্ভারটি এখনও। নেট ফ্রেমওয়ার্ক 4.5 সমর্থন করে না।


1

ইনস্টল করা ডটনেট সংস্করণটি পেতে
কনসোল অ্যাপ্লিকেশন তৈরি করুন। এই ক্লাস যোগ করুন

using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    public class GetDotNetVersion
    {
        public static void Get45PlusFromRegistry()
        {
            const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
            using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
            {
                if (ndpKey != null && ndpKey.GetValue("Release") != null)
                {
                    Console.WriteLine(".NET Framework Version: " + CheckFor45PlusVersion((int)ndpKey.GetValue("Release")));
                }
                else
                {
                    Console.WriteLine(".NET Framework Version 4.5 or later is not detected.");
                }
            }
        }

        // Checking the version using >= will enable forward compatibility.
        private static string CheckFor45PlusVersion(int releaseKey)
        {
            if (releaseKey >= 394802)
                return "4.6.2 or later";
            if (releaseKey >= 394254)
            {
                return "4.6.1";
            }
            if (releaseKey >= 393295)
            {
                return "4.6";
            }
            if ((releaseKey >= 379893))
            {
                return "4.5.2";
            }
            if ((releaseKey >= 378675))
            {
                return "4.5.1";
            }
            if ((releaseKey >= 378389))
            {
                return "4.5";
            }
            // This code should never execute. A non-null release key shoul
            // that 4.5 or later is installed.
            return "No 4.5 or later version detected";
        }
    }
    // Calling the GetDotNetVersion.Get45PlusFromRegistry method produces 
    // output like the following:
    //       .NET Framework Version: 4.6.1
}

সর্বশেষ সংস্করণ 4.7.2?
কিকিনেট

0

আশ্চর্যের দিক থেকে যথেষ্ট, আমি যখন আবার ১.১ প্রকাশ পেয়েছিলাম তখন এই কোডটি করার জন্য কিছু কোড লিখেছিলাম (২ বছর আগে কী ছিল?) এবং ২.০ প্রকাশের সময় এটিকে কিছুটা টুইট করেছিলাম। আমরা আমাদের সার্ভারগুলি আর পরিচালনা না করায় বছরগুলিতে এটির দিকে নজর নেই।

এটি নির্বোধ নয়, তবে আমি এটি যাইহোক পোস্ট করছি কারণ আমি এটিকে হাস্যকর বলে মনে করি; এটি .NET এ করা সহজ এবং পাওয়ার শেলটিতে এখনও সহজ।

bool GetFileVersion(LPCTSTR filename,WORD *majorPart,WORD *minorPart,WORD *buildPart,WORD *privatePart)
{
    DWORD dwHandle;
    DWORD dwLen = GetFileVersionInfoSize(filename,&dwHandle);
    if (dwLen) {
        LPBYTE lpData = new BYTE[dwLen];
        if (lpData) {
            if (GetFileVersionInfo(filename,0,dwLen,lpData)) {
                UINT uLen;  
                VS_FIXEDFILEINFO *lpBuffer;  
                VerQueryValue(lpData,_T("\\"),(LPVOID*)&lpBuffer,&uLen);  
                *majorPart = HIWORD(lpBuffer->dwFileVersionMS);
                *minorPart = LOWORD(lpBuffer->dwFileVersionMS);
                *buildPart = HIWORD(lpBuffer->dwFileVersionLS);
                *privatePart = LOWORD(lpBuffer->dwFileVersionLS);
                delete[] lpData;
                return true;
            }
        }
    }
    return false;
}

int _tmain(int argc,_TCHAR* argv[])
{
    _TCHAR filename[MAX_PATH];
    _TCHAR frameworkroot[MAX_PATH];
    if (!GetEnvironmentVariable(_T("systemroot"),frameworkroot,MAX_PATH))
        return 1;
    _tcscat_s(frameworkroot,_T("\\Microsoft.NET\\Framework\\*"));
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind = FindFirstFile(frameworkroot,&FindFileData);
    if (hFind == INVALID_HANDLE_VALUE)
        return 2;
    do {
        if ((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
            _tcslen(FindFileData.cAlternateFileName) != 0) {
            _tcsncpy_s(filename,frameworkroot,_tcslen(frameworkroot)-1);
            filename[_tcslen(frameworkroot)] = 0;
            _tcscat_s(filename,FindFileData.cFileName);
            _tcscat_s(filename,_T("\\mscorlib.dll"));
            WORD majorPart,minorPart,buildPart,privatePart;
            if (GetFileVersion(filename,&majorPart,&minorPart,&buildPart,&privatePart )) {
                _tprintf(_T("%d.%d.%d.%d\r\n"),majorPart,minorPart,buildPart,privatePart);
            }
        }
    } while (FindNextFile(hFind,&FindFileData) != 0);
    FindClose(hFind);
    return 0;
}

0

ঠিক আছে, যেমন ডিন বলেছিলেন, আপনি রেজিস্ট্রিটি দেখতে পারেন এবং তিনি যা করেছিলেন তা করতে পারেন। তার কাছে আসলেই সিএলআর। নেট ফ্রেমওয়ার্ক ইনস্টল রয়েছে কিনা তা যাচাই করতে MSCorEE.dllআপনার %SystemRoot%\System32ডিরেক্টরিটি ফাইলটি অনুসন্ধান করা উচিত ।


0

সংস্করণগুলি খুঁজে বের করার এটি সম্ভবত একটি বাজে উপায়, তবে আমি সর্বদা এই ধারণাটির মধ্যে ছিলাম যে সমস্ত সংস্করণ ইনস্টল হয়ে গেছে <root>:\WINDOWS\Microsoft.NET\Framework

এটি ফোল্ডারগুলির সাথে এমন নাম সরবরাহ করে v2.0.50727যা আমি বিশ্বাস করি যে বিশদ সংস্করণ তথ্য দেয়।


4
এবং এটি সঠিক উপায় হতে পারে তবে "যদি তবে"? আমার মাথায় বলছে "যদি ফাইলগুলি থাকে তবে ফ্রেমওয়ার্কটি আসলে 'ইনস্টলড' না হয়ে থাকে এবং কিছু নির্বোধ অ্যাডমিন ভেবেছিল যে ফাইলগুলি অনুলিপি করা কি এটি করার উপায় ছিল?"
টম কিড

0

.NET 4.5 এর পূর্বে আপনি যদি সংস্করণগুলি সন্ধান করতে চান তবে কনসোল অ্যাপ্লিকেশনটির জন্য কোড ব্যবহার করুন। এটার মত:

using System;
using System.Security.Permissions;
using Microsoft.Win32;

namespace findNetVersion
{
    class Program
    {
        static void Main(string[] args)
        {
            using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,
                     RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
            {
                foreach (string versionKeyName in ndpKey.GetSubKeyNames())
                {
                    if (versionKeyName.StartsWith("v"))
                    {

                        RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);
                        string name = (string)versionKey.GetValue("Version", "");
                        string sp = versionKey.GetValue("SP", "").ToString();
                        string install = versionKey.GetValue("Install", "").ToString();
                        if (install == "") //no install info, must be later version
                            Console.WriteLine(versionKeyName + "  " + name);
                        else
                        {
                            if (sp != "" && install == "1")
                            {
                                Console.WriteLine(versionKeyName + "  " + name + "  SP" + sp);
                            }
                        }
                        if (name != "")
                        {
                            continue;
                        }
                        foreach (string subKeyName in versionKey.GetSubKeyNames())
                        {
                            RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
                            name = (string)subKey.GetValue("Version", "");
                            if (name != "")
                                sp = subKey.GetValue("SP", "").ToString();
                                install = subKey.GetValue("Install", "").ToString();
                            if (install == "") //no install info, ust be later
                                Console.WriteLine(versionKeyName + "  " + name);
                            else
                            {
                                if (sp != "" && install == "1")
                                {
                                    Console.WriteLine("  " + subKeyName + "  " + name + "  SP" + sp);
                                }
                                else if (install == "1")
                                {
                                    Console.WriteLine("  " + subKeyName + "  " + name);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

অন্যথায় আপনি .NET 4.5 বা তার পরে এর জাতীয় অনুসন্ধান করে খুঁজে পেতে পারেন:

private static void Get45or451FromRegistry()
{
    using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,
       RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"))
    {
        int releaseKey = (int)ndpKey.GetValue("Release");
        {
            if (releaseKey == 378389)

                Console.WriteLine("The .NET Framework version 4.5 is installed");

            if (releaseKey == 378758)

                Console.WriteLine("The .NET Framework version 4.5.1  is installed");

        }
    }
}

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


উপায় দ্বারা আপনি মেইনকে এই জাতীয় ব্যক্তিগত হিসাবে সেট করতে চাইতে পারেন: প্রাইভেট স্ট্যাটিক শূন্যস্থানীয় মেইন (স্ট্রিং [] আরগস) {}
রনি পেটি

মাইক্রোসফ্ট এমএসডিএন-এর উপর এটি কীভাবে রেখেছে তা বেশ সুন্দর। msdn.microsoft.com/en-us/library/hh925568%28v=vs.110%29.aspx
রনি পেটি

0

আমি উইন্ডোজ আপডেটে গিয়ে আপডেটের ইতিহাসের দিকে চেয়েছিলাম, সার্ভার প্যাচিংটি আপ টু ডেট রাখে knowing আমি .NET আপডেটগুলির জন্য স্ক্যান করেছিলাম এবং এটি আমাকে দেখায় ঠিক কোন সংস্করণে আপডেট ছিল, যা কোন সংস্করণগুলি ইনস্টল করা হয়েছে তা আমাকে সিদ্ধান্ত নিতে দেয়।


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