আমি অটোফ্যাক এবং প্রচুর গতিশীল সমাবেশের লোড ব্যবহার করছি এমন প্রসঙ্গে আমি এই ত্রুটির মুখোমুখি হয়েছি।
অটোফ্যাক রেজোলিউশন অপারেশন করার সময়, রানটাইম কোনও অ্যাসেমব্লিকে লোড করতে ব্যর্থ হয়। ত্রুটি বার্তাটি অভিযোগ করেছে Method 'MyMethod' in type 'MyType' from assembly 'ImplementationAssembly' does not have an implementation
। উপসর্গ ঘটে উইন্ডোজ সার্ভার 2012 R2 হলো VM- র চালু রাখার জন্য, কিন্তু হয়নি না উইন্ডোজ 10 বা উইন্ডোজ সার্ভার 2016 ভার্চুয়াল মেশিনের উপর ঘটবে।
ImplementationAssembly
System.Collections.Immutable
1.1.37 রেফারেন্স করা হয়েছে এবং এতে একটি IMyInterface<T1,T2>
ইন্টারফেসের প্রয়োগ রয়েছে , যা পৃথকভাবে সংজ্ঞায়িত করা হয়েছিল DefinitionAssembly
। DefinitionAssembly
রেফারেন্স করা হয়েছে System.Collections.Immutable
1.1.36।
যে পদ্ধতিগুলি থেকে IMyInterface<T1,T2>
"প্রয়োগ করা হয়নি" টাইপের পরামিতি রয়েছে IImmutableDictionary<TKey, TRow>
, যা সংজ্ঞায়িত হয়েছে System.Collections.Immutable
।
System.Collections.Immutable
প্রোগ্রাম ডিরেক্টরিটিতে পাওয়া আসল অনুলিপিটি ছিল সংস্করণ 1.1.37। আমার উইন্ডোজ সার্ভার 2012 আর 2 ভিএম-এ, জিএসি-তে System.Collections.Immutable
1.1.36 এর একটি অনুলিপি রয়েছে । উইন্ডোজ 10 এবং উইন্ডোজ সার্ভার 2016 এ, System.Collections.Immutable
জিএসিতে 1.1.37 এর একটি অনুলিপি রয়েছে । লোডিংয়ের ত্রুটি কেবল তখনই ঘটেছিল যখন জিএসিটিতে ডিএলএল এর পুরানো সংস্করণ থাকে।
সুতরাং, সমাবেশ লোড ব্যর্থতার মূল কারণটি ছিল মেলে না System.Collections.Immutable
। ইন্টারফেস সংজ্ঞা এবং বাস্তবায়নের জন্য অভিন্ন চেহারা পদ্ধতি স্বাক্ষরগুলি ছিল, তবে আসলে এর বিভিন্ন সংস্করণের উপর নির্ভরশীল System.Collections.Immutable
, যার অর্থ রানটাইম ইন্টারফেস সংজ্ঞাটির সাথে মেলে বাস্তবায়ন শ্রেণিকে বিবেচনা করে না।
আমার অ্যাপ্লিকেশন কনফিগার ফাইলে নিম্নলিখিত বাঁধাই পুনঃনির্দেশ যুক্ত করা সমস্যার সমাধান করেছে:
<dependentAssembly>
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.1.37.0" newVersion="1.1.37.0" />
</dependentAssembly>