এটির বিকাশ শুরু করার জন্য আমি কেবলমাত্র একটি বিদ্যমান প্রকল্পটি অনুলিপি তৈরি করে একটি নতুন মেশিনে অনুলিপি করেছি এবং আমার রেফারেন্সড অ্যাসেমব্লিজগুলির একটির সংস্করণ (এটি ঘটে যাওয়ার সাথে সাথে একটি টেলিগ্রাফিক ডিএলএল) নিয়ে সমস্যা হয়েছে।
প্রকল্পটি মূলত সমাবেশের একটি পুরানো সংস্করণ রেফারেন্স করেছে (এটি v1.0.0.0 হিসাবে কল করতে দেয়)। আমার নতুন মেশিনে অ্যাসেমব্লির সর্বশেষতম সংস্করণ ইনস্টল আছে, তাই আমি ভেবেছিলাম যে আমি এটি আপডেট করেছি (আসুন নতুন সংস্করণকে v2.0.0.0 কল করতে পারি)।
এখন এখানে সমস্যাটি রয়েছে: আমি যদি প্রজেক্টের ফোল্ডারে পুরানো v1.0.0.0 dll অনুলিপি করে এবং এটি একটি রেফারেন্স হিসাবে যুক্ত করি তবে কোনও সমস্যা ছাড়াই ওয়েব সাইট লঞ্চ করে। যদি আমি সেই উল্লেখটি মুছুন (এবং আমার সিস্টেম থেকে পুরানো ডিএলএলও মুছুন) এবং নতুন সংস্করণ (v2.0.0.0) যুক্ত করুন, পৃষ্ঠাটি নিম্নলিখিত ব্যতিক্রমগুলি দেখায়:
ফাইল বা সমাবেশ 'এক্সএক্সএক্সএক্সএক্সএক্স, সংস্করণ = 1.0.0.0, সংস্কৃতি = নিরপেক্ষ, পাবলিককি টোকেন = 121fae78165ba3d4' বা এর অন্যতম নির্ভরতা লোড করা যায়নি। অবস্থিত সমাবেশের প্রকাশ্য সংজ্ঞাটি সমাবেশের রেফারেন্সের সাথে মেলে না। (এইচআরসিলেট থেকে ব্যতিক্রম: 0x80131040)
স্পষ্টতই, কোডটি পুরানো সংস্করণের সন্ধান করছে এবং এটি খুঁজে পাচ্ছে না। কিন্তু কেন?
আমি সেই সংস্করণ নম্বরটির জন্য সমাধান ফোল্ডারটি গ্রেপ করেছিলাম এবং একটি একক রেফারেন্সও পাইনি। আমি .csproj ফাইলটির পাঠ্যটি দু'বার পরীক্ষা করে দেখেছি যে সংস্করণটি সঠিকভাবে সর্বশেষতম সংস্করণটি দেখায় এবং হিন্টপথ সঠিকভাবে নতুন ডিএলএল-এর পথ দেখায়। তদতিরিক্ত, যেহেতু আমি সিস্টেমে পুরানো ডিএলএল ইনস্টল করি নি এটি আমার জিএসি তে প্রদর্শিত হয় না (যদিও ভি 2.0.0.0 প্রত্যাশা অনুযায়ী করে))
তারপরে আমি কেন সেই পুরানো সংস্করণটি খুঁজছি তা জানার চেষ্টা করার জন্য ফিউশন লগ ভিউয়ারটিকে সক্ষম করেছিলাম, তবে ভাগ্য নেই:
Assembly Load Trace: The following information can be helpful to determine why the assembly 'XXXXXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=121fae78165ba3d4' could not be loaded.
=== Pre-bind state information ===
LOG: User = MyComp\me
LOG: DisplayName = XXXXXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=121fae78165ba3d4
(Fully-specified)
LOG: Appbase = file:///d:/My Documents/Visual Studio 2010/Projects/CoolProj/WebApp/
LOG: Initial PrivatePath = d:\My Documents\Visual Studio 2010\Projects\CoolProj\WebApp\bin
Calling assembly : WebApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: d:\My Documents\Visual Studio 2010\Projects\CoolProj\WebApp\web.config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: XXXXXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=121fae78165ba3d4
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/90233b18/10d54998/XXXXXX.DLL.
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/90233b18/10d54998/XXXXXX/XXXXXX.DLL.
LOG: Attempting download of new URL file:///d:/My Documents/Visual Studio 2010/Projects/CoolProj/WebApp/bin/XXXXXX.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
এটি সমস্তই বলে যে এটি সেই পুরানো সমাবেশটি সন্ধান করে শুরু হয়। আমি অনলাইনে একটি সমাধান অনুসন্ধান করার চেষ্টা করেছি এবং এই জাতীয় একই প্রশ্নটি দেখেছি তবে এটি আমার সমস্যার ঠিক বিপরীত বলে মনে হচ্ছে। এই প্রশ্নকারীর প্রোগ্রামটি রেফারেন্সযুক্তটির পরিবর্তে ভুল ডিএলএল সন্ধান করছিল। আমার সমস্যাটি হ'ল প্রোগ্রামটি রহস্যজনকভাবে ভুল ডিএলএল অনুসন্ধান করছে এবং এটি যখন বিন ফোল্ডারে এবং জিএসি তে স্থানীয়ভাবে পাওয়া যাবে তখন এটি খুঁজে পেতে অক্ষম।
আমার পুরানো সংস্করণটি কেন খুঁজছে? এই খারাপ রেফারেন্সটি খুঁজতে আমি আর কোথা থেকে অনুসন্ধান করতে পারি?