.NET 4 কনফিগারেশনে 'UseLegacyV2 রুনটাইম অ্যাক্টিভেশনপলিসি' কী করে?


214

স্লিমডিএক্স ব্যবহার করে এমন একটি প্রকল্প রূপান্তর করার সময় এবং তাই পরিচালনা ব্যবস্থাবিহীন কোডটি .NET 4.0 এ রূপান্তর করার সময় আমি নিম্নলিখিত ত্রুটিতে চলে এসেছি:

মিশ্র মোড সমাবেশটি রানটাইমের সংস্করণ 'v2.0.50727' এর বিপরীতে নির্মিত এবং অতিরিক্ত কনফিগারেশন তথ্য ছাড়া 4.0 রানটাইমে লোড করা যায় না।

চারপাশে গুগলিং আমাকে সমাধান দিয়েছে, যা এটি অ্যাপ্লিকেশন কনফিগারেশনে যুক্ত করতে পারে:

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

আমার প্রশ্ন, কি useLegacyV2RuntimeActivationPolicyকরছে? আমি এটি সম্পর্কে কোনও দলিল খুঁজে পাচ্ছি না।

উত্তর:


165

কিছুক্ষণ পরে (এবং আরও অনুসন্ধান), আমি জোমো ফিশারের এই ব্লগ এন্ট্রিটি পেয়েছি ।

আমরা দেখেছি সাম্প্রতিক সমস্যাগুলির মধ্যে একটি হ'ল পাশের পাশের রানটাইমগুলির পক্ষে সমর্থন করার কারণে, নেট নেট older.০ পুরানো মিশ্র-মোড অ্যাসেমব্লির সাথে আবদ্ধ হওয়ার পদ্ধতিটি পরিবর্তিত হয়েছে। এই সমাবেশগুলি উদাহরণস্বরূপ, সেগুলি সি ++ \ সিএলআই থেকে সংকলিত। বর্তমানে উপলব্ধ ডাইরেক্টএক্স সমাবেশগুলি মিশ্র মোড mode আপনি যদি এই জাতীয় বার্তা দেখতে পান তবে আপনি জানেন যে আপনি ইস্যুটি চালিয়ে গেছেন:

মিশ্র মোড সমাবেশটি রানটাইমের সংস্করণ 'v1.1.4322' এর বিপরীতে নির্মিত এবং অতিরিক্ত কনফিগারেশন তথ্য ছাড়া 4.0 রানটাইমে লোড করা যায় না।

[স্নিপ]

অ্যাপ্লিকেশনগুলির জন্য সুসংবাদটি হ'ল আপনার কাছে এই জাতীয় অ্যাপ্লিকেশনগুলির জন্য একটি নেট.প্যাঙ্কফিগ পতাকা সেট করে .NET 2.0 এয়ার বাঁধাইয়ের বিকল্প রয়েছে:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0"/>
</startup>

সুতরাং দেখে মনে হচ্ছে যে রানটাইম লোডগুলি মিশ্র-মোড সমাবেশগুলি পরিবর্তন করেছে। আমি এই পরিবর্তন সম্পর্কে বা কেন এটি করা হয়েছিল তার কোনও বিবরণ পাই না। তবে useLegacyV2RuntimeActivationPolicyবৈশিষ্ট্যটি সিএলআর 2.0 লোডিংয়ে ফিরে আসে।


28
এটা তোলে এখানে লক্ষ করেন, এদিকে marklios উত্তর (মূল্য stackoverflow.com/questions/1604663/... ) এই পরিবর্তন সংক্রান্ত তার পুঙ্খানুপুঙ্খ ব্যাখ্যা একটি লিঙ্ক প্রদান করে।
স্টিফেন ওপেল

1
: এই একটি পুঙ্খানুপুঙ্খ ব্যাখ্যা দুটিই MSDN পাওয়া যাবে (যদিও স্পষ্টভাবে সমাধান উপরে উল্লিখিত উল্লেখ না) msdn.microsoft.com/en-us/magazine/ee819091.aspx
Mouhammed Soueidane

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

126

এই বৈশিষ্ট্যের তথ্য অকার্যকর করতে সহায়তা করার জন্য আমি সম্প্রতি একটি ব্যাখ্যা এখানে লিখেছি। http://www.marklio.com/marklio/PermaLink,guid,ecc34c3c-be44-4422-86b7-900900e451f9.aspx (ইন্টারনেট সংরক্ষণাগার ওয়েব্যাক মেশিনের লিঙ্ক)

সর্বাধিক প্রাসঙ্গিক বিট উদ্ধৃতি:

[.NET] ইনস্টল করা v4 হ'ল "প্রভাবশালী"। এটি ইনস্টল থাকা অবস্থায় বিদ্যমান উপাদানগুলির আচরণ পরিবর্তন করা উচিত নয়।

ব্যবহারের লেগ্যাসিভি 2 রুনটাইমঅ্যাক্টিভেশনপলিসি অ্যাট্রিবিউটটি মূলত আপনাকে বলতে দেয়, "আমার উত্তরাধিকার শিম এপিআইয়ের উপর কিছুটা নির্ভরশীলতা রয়েছে। নির্বাচিত রানটাইমের প্রতি শ্রদ্ধার সাথে তাদের যেভাবে ব্যবহার করা হয়েছে দয়া করে সেগুলি করুন ”"

কেন আমরা এটিকে ডিফল্ট আচরণ করব না? আপনি তর্ক করতে পারেন যে এই আচরণটি আরও সামঞ্জস্যপূর্ণ এবং পূর্ববর্তী সংস্করণগুলি থেকে পোর্টিং কোডটি আরও সহজ করে তোলে। আপনি যদি প্রত্যাহার করে থাকেন তবে এটি ডিফল্ট আচরণ হতে পারে না কারণ এটি ভি 4 ইনস্টলেশনটি কার্যকর করে তোলে যা আপনার মেশিনে ইনস্টল থাকা বিদ্যমান অ্যাপ্লিকেশনগুলিকে ভেঙে দিতে পারে।

সম্পূর্ণ পোস্ট এটিকে আরও বিশদে ব্যাখ্যা করে। আরটিএম এ, এই বিষয়ে এমএসডিএন ডক্স আরও ভাল হওয়া উচিত।


ব্যবহারকারী 20493, আপনি কি পরিবেশগত পরিবর্তনশীল COMPlus_CLRLoadLogDir এর সাথে অ্যাপ্লিকেশনটি একটি ফাঁকা ডিরেক্টরিতে সেট করতে পারেন যাতে ফলটি লগগুলিতে অ্যাক্সেস লিখতে এবং ভাগ করতে পারে (ভাগ করার আগে কোনও পিআইআই জন্য স্ক্রাব করুন)। এটি কী ঘটছে তা ব্যাখ্যা করতে সহায়তা করতে পারে। কনফিগার বৈশিষ্ট্যটি প্রসঙ্গটিতে প্রয়োগ করা যেতে পারে না যেখানে আপনার অ্যাপ চলছে।
মার্ক মিলার

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