নতুন এএসপি.নেট এমভিসি 5 প্রকল্পে নুগেট প্যাকেজ রেফারেন্স আপডেট করার পরে আমি কীভাবে JSON.NET এর সাথে সমাবেশ সংস্করণ বিরোধগুলি ঠিক করতে পারি?


89

আমি ভিএস 2013 এ একটি নতুন এএসপি.নেট এমভিসি 5 ওয়েব প্রকল্প তৈরি করেছি (আপডেট 1) তারপরে সমস্ত নুগেট প্যাকেজ আপডেট হয়েছে। আমি যখন প্রকল্পটি তৈরি করি, তখন আমি নিম্নলিখিত সতর্কতাটি পাই:

সতর্কতা এমএসবি ৩৪৩৩: "নিউটোনসফট.জসন, সংস্করণ = .0.০.০.০, সংস্কৃতি = নিরপেক্ষ, পাবলিককিটোকেন = ৩০ এডি ৪ এফ বি বি এএইড" এবং "নিউটনসফট.জসন, সংস্করণ = 4.5.0.0, সংস্কৃতি = নিরপেক্ষ, পাবলিককিটোকেন = 30 এডি 4 এফ 2 বি 6 এড"।

আমি যখন ওয়েবকনফিগটি পরীক্ষা করি তবে আমি দেখতে পাই যে একটি বাধ্যতামূলক পুনর্নির্দেশটি ঠিক জায়গায় রয়েছে:

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
  </dependentAssembly>

যা হুশিয়ার পরামর্শ দেয় ঠিক তেমনই।

আমি কীভাবে এই সতর্কতাটি ঠিক করতে পারি?


হ্যাঁ, আমি একটি সম্পূর্ণ পুনর্নির্মাণ করেছি। আমি নিউগেটকে সর্বশেষে আপডেটও করেছি, একটি নতুন সমাধান তৈরি করেছি এবং একই সমস্যাটি পুনরুত্পাদন করেছি।
জিম ল্যাম্ব

উত্তর:


106

সতর্কতা ঠিক করতে আমি যে পদক্ষেপগুলি ব্যবহার করেছি তা এখানে:

  • ভিএস-তে আনলোড প্রকল্প
  • .Csproj ফাইলটি সম্পাদনা করুন
  • নিউটোনসফট.জসন অ্যাসেমব্লির সমস্ত রেফারেন্স অনুসন্ধান করুন
    • দুটি পাওয়া গেছে, একটিতে v6 এবং একটিতে v5
    • V5 এর সাথে রেফারেন্সটি v6 এর সাথে প্রতিস্থাপন করুন
  • প্রকল্পটি পুনরায় লোড করুন
  • বিলম্ব করুন এবং সমাবেশ উল্লেখ ব্যর্থতার বিজ্ঞপ্তি
  • তথ্যসূত্রগুলি দেখুন এবং দেখুন যে এখন নিউটনসফট.জসনের দুটি আছে। সমাধান করতে ব্যর্থ হওয়াটিকে মুছে ফেলুন।
  • পুনর্নির্মাণ - কোনও সতর্কতা নেই

12
আমি দুটি রেফারেন্স পেয়েছি, একটি v6 এর জন্য এবং একটি v5 এর জন্য তবে আমি ভি 5 টি মুছে ফেলেছি (প্রতিস্থাপন করা হয়নি)। এর পরে ইউআই-তে আমার "অ্যাসেম্বলি রেফারেন্স ব্যর্থতা" বা নিউটোনসফট.জসনের দুটি রেফারেন্সের মতো কোনও সমস্যা হয়নি। আমি অনুমান করছি যে কেউ স্টাফড করেছেinstall.ps1
ta.speot.is

সমাধানের জন্য ধন্যবাদ। আমিও প্রজেক্ট ফাইল থেকে পুরানো রেফারেন্স মুছলাম এবং কোনও সমস্যা ছিল না।
চার্লস প্রকাশ দাশারি

31
+1 - আমাকে যখন এই জাতীয় জিনিসগুলি করতে হয় তখন সত্যই এটি আমাকে পাগল করে তোলে। এজন্য আমি সর্বদা নুগেট প্যাকেজ ম্যানেজারের আপগ্রেড ক্লিক করতে দ্বিধা বোধ করি।
hylander0

4
আমার এই সমস্যাটি ছিল এবং আমি যে অতিরিক্ত রেফারেন্সটি বুঝতে পারি নি সেগুলি সরিয়ে এটি ঠিক করে ফেলেছি there এটি মাইক্রোসফ্ট সংযোগ বাগের লিঙ্কটি যা সেখানে অতিরিক্ত রেফারেন্সের মূল কারণ: সংযুক্ত.মাইক্রোসফট / ভিজুয়ালস্টুডিও / ফেডব্যাক / বিবরণী / ৮১2525২৫/২
মার্টিন কোস্টেলো

4
আমার ক্ষেত্রে নিউটনসফট.জসন ১১.০.১ এবং ১১.০.২ এর দুটি ভিন্ন সংস্করণের উল্লেখ ছিল, যদিও এটি version.০ সংস্করণ সম্পর্কে অভিযোগ করেছিল।
ড্যানিয়েল লোবো

31

আমার এই সমস্যাটি হয়েছিল কারণ আমি প্যাকেজগুলি আপডেট করেছি, যার মধ্যে মাইক্রোসফ্ট রয়েছে spঅ্যাসনেট.ওয়েবএপি যা নিউটোনসফট.জসন 4.5.৪..6 এর রেফারেন্সযুক্ত এবং আমি ইতিমধ্যে সংস্করণ installed ইনস্টল করেছি। 6 সংস্করণটি ব্যবহার করার পক্ষে এটি যথেষ্ট চালাক ছিল না।

এটি সমাধানের জন্য, ওয়েবএপি আপডেটের পরে আমি সরঞ্জামগুলি> নিউগেট প্যাকেজ ম্যানেজার> প্যাকাকেজ ম্যানেজার কনসোলটি খুললাম এবং দৌড়েছি:

 Update-Package Newtonsoft.Json

লগটি দেখিয়েছিল যে 6.0.x এবং 4.5.6 সংস্করণগুলি সর্বশেষতমটিতে আপডেট হয়েছিল এবং সবকিছু ঠিক আছে।

আমার মনে হচ্ছে এটি আবার প্রকাশিত হবে up


4
আমার সমাধানে একাধিক বিভিন্ন সংস্করণে আমার সমস্যা ছিল যা একাধিক প্রকল্প রয়েছে এটি সম্পূর্ণরূপে এটি ঠিক করে এবং সর্বশেষ জেএসওএন.নেটে আপডেট করেছে। সুন্দর!
c0d3p03t

4
এটি ছিল আমার সবচেয়ে সহজ সমাধান, সবচেয়ে সোজা-সামনের সমাধান that ধন্যবাদ!
যুবকrrr

21

আমি প্রকল্প ফাইল থেকে এই বিভাগটি মুছে ফেলতে গিয়ে সমস্যার সমাধান করেছি।

<ItemGroup>
<Reference Include="Newtonsoft.Json">
  <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>


এই হল. আমি মনে করি নিউটোনসফট.জসন .0.০.১ / .0.০.৩ / .0.০.৫ ম্যাচের সাথে বাঁধাই পুনঃনির্দেশ '' ওল্ড ভার্সন = "0.0.0.0-6.0.0.0" "'" তবে আমি কীভাবে সঠিক একটি লিখতে জানি না
কল্পনাশক্তি

এটি আমার সমস্যাটিও ছিল, আমি নিশ্চিত নই এটি কী যুক্ত করেছে।
অ্যামনেসিয়া

আমার জন্য কাজ করেছেন। V6.0 এবং v12.0 এর মধ্যে দ্বন্দ্ব সম্পর্কিত ত্রুটি। আইটেম গ্রুপ রেফারেন্স v11.0 ছিল। কী হচ্ছে তা নিশ্চিত নন তবে কম্পাইল ত্রুটি অপসারণ করার পরে আইটেম গোষ্ঠীটি সরিয়ে ফেলা এটি সমাধান করেছে বলে মনে হচ্ছে।
ব্রায়ান.এস

13

উপরের কোনওটি যদি কাজ না করে তবে ওয়েবকনফিগ বা অ্যাপকনফাইগ এ এটি ব্যবহার করে দেখুন:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

আপনি যখন উচ্চতর সংস্করণ ব্যবহার করে একটি বিদ্যমান প্রকল্প তৈরি করেন তখন এটি পরিস্থিতির পক্ষে সবচেয়ে উপযুক্ত।
ইসমাইল হাওয়েল

13

আমি নিউটনসফট.জসন 11.0.1 থেকে 12.0.2 এ আপগ্রেড করেছি। নোটপ্যাডে প্রকল্পের ফাইলটি খুলতে ++ আমি উভয়ই আবিষ্কার করেছি

<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
    </Reference>

এবং

<ItemGroup>
    <Reference Include="Newtonsoft.Json">
      <HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
    </Reference>
  </ItemGroup>

আমি সংস্করণ 11.0.1 এর ইঙ্গিত পাথের সাথে রেফারেন্সটি মোড়ানো আইটেমগ্রুপটি মুছে ফেলেছি।

এই বিষয়গুলি খুঁজে বের করার জন্য অত্যন্ত হতাশ হতে পারে। আরও কী, বিকাশকারীরা প্রায়শই পূর্ববর্তী প্রকল্প সেটআপগুলির মতো একই পদক্ষেপগুলি অনুসরণ করেন। পূর্ববর্তী সেটআপগুলি সমস্যাটির মুখোমুখি হয়নি। যে কারণেই হোক না কেন প্রকল্প ফাইলটি মাঝে মধ্যে ভুলভাবে আপডেট হয়।

আমি মরিয়া হয়ে চাই যে মাইক্রোসফ্ট এই ভিজ্যুয়াল স্টুডিও ডিএলএল নরকের সমস্যাগুলি পপিংয়ের থেকে সমাধান করবে। এটি প্রায়শই ঘটে এবং এটি স্থির না হওয়া অবধি প্রায়শই পরীক্ষা এবং ত্রুটির দ্বারা অগ্রগতি ঘটায়।


4
ঠিক এই সমস্যা ছিল। ধন্যবাদ!
জর্জ ফাবিশ

8

আপনার সমাবেশের চূড়ান্ত সমাধান ত্রুটিগুলি পুনর্নির্দেশ করে

ঠিক আছে, আশা করি এটি কোনও (বুদ্ধিমান) সমাবেশের রেফারেন্সের ত্রুটিগুলি সমাধান করতে সহায়তা করবে ...

  1. ত্রুটিটি পরীক্ষা করুন।

ওয়েবসাইটে সার্ফ করুন

  1. অ্যাসেম্বলি পুনঃনির্দেশের পরে ওয়েবকনফিগ পরীক্ষা করুন। যদি না থাকে তবে একটি তৈরি করুন।

বিদ্যমান ওয়েব.কমফিগ সমাবেশ পুনঃনির্দেশ

  1. সমাবেশের জন্য রেফারেন্সটিতে ডান ক্লিক করুন এবং বৈশিষ্ট্যগুলি নির্বাচন করুন।

প্রাসঙ্গিক প্রকল্পে রেফারেন্স তালিকার সমাবেশ

  1. বৈশিষ্ট্য সারণীতে সংস্করণ (রানটাইম সংস্করণ নয়) পরীক্ষা করুন। নকল কর ওটাকে.

বৈশিষ্ট্যের সারণী সমাবেশের সংস্করণ দেখাচ্ছে

  1. নতুন সংস্করণ বৈশিষ্ট্যে আটকান।

ওয়েবকনফিগ অ্যাসেমব্লিকে আপডেট করা নতুন সংস্করণ দিয়ে পুনর্নির্দেশ করুন

  1. সুবিধার জন্য, ওল্ড ভার্শনটির শেষ অংশটি উচ্চ, গোল এবং কল্পিত কিছুতে পরিবর্তন করুন।

ওয়েবকনফিগ অ্যাসেম্বলি আপডেট হওয়া ওল্ড ভার্সন দিয়ে পুনর্নির্দেশ করে

আনন্দ করুন।


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

4

বাধ্যতামূলক পুনঃনির্দেশের সাথে মনে রাখবেন

OldVersion = "0.0.0.0-6.0.0.0"

আপনি বলছেন যে dll এর পুরানো সংস্করণগুলি 0.0.0.0 সংস্করণ এবং 6.0.0.0 সংস্করণের মধ্যে রয়েছে।


4
oldVersionআপনি এখানে যা বলছেন তা হ'ল আপনার সমাবেশটি / এক্সপ্রেসটি একটি পরিসরের কোনও সংস্করণের রেফারেন্স সহ নির্মিত হয়েছিল 0.0.0.0-6.0.0.0এবং এটি ইনস্টলড (এবং পছন্দসই) সংস্করণটির অধীনে মান হিসাবে রয়েছে newVersion(পুরানো সংস্করণটি আরও ভাল হিসাবে চিহ্নিত হবে) "প্রত্যাশিত সংস্করণ" এবং নতুন সংস্করণটিকে "প্রকৃত উপলভ্য সংস্করণ" হিসাবে আরও ভালভাবে চিহ্নিত করা হবে)
অযৌক্তিকভাবে

2

কেউ নিম্নলিখিতটির উল্লেখ করেনি, যা আমার বোঝার সঠিক সমাধান:

প্রকল্পের যেখানে nuget ইনস্টল করা হয়েছে তার csproj যান, এবং সেট AutoGEneratedBindingRedirectsকরার false

<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>

এমএসডিএন-তে সম্পূর্ণ নিবন্ধ।


1

আমি আমার প্যাকেজ আপডেট করেছি এবং এমনকি এটি পুনরায় ইনস্টল করেছি - তবে ওপি উল্লিখিত হিসাবে ঠিক একই ত্রুটিটি পাচ্ছিলাম। আমি নিম্নলিখিতটি দ্বারা ম্যানুয়ালি রেফারেন্সড ডিএল সম্পাদনা করেছি।

আমি আমার রেফারেন্স থেকে newtonsoft.json.dll সরিয়েছি, তারপরে বিন ডিরেক্টয় থেকে .dll ম্যানুয়ালি মুছে ফেলেছি। তারপরে আমি ম্যানুয়ালি newtonsoft.json.dll নুগেট প্যাকেজ ফোল্ডার থেকে প্রজেক্ট বিনে অনুলিপি করেছি, তারপরে .dll ফাইলটিতে ব্রাউজ করে রেফারেন্সটি যুক্ত করেছি।

এখন আমার প্রকল্প আবার তৈরি।


0

আমারও একই সমস্যা ছিল এবং আমি আমার পরিস্থিতিতে অন্যদের জন্য একটি উত্তর পোস্ট করতে চেয়েছিলাম।

আমার কাছে একাধিক অন্যান্য সি # শ্রেণির লিব প্রকল্পের সাথে একটি এএসপি.এনইটি ওয়েব অ্যাপ্লিকেশন চালানোর সমাধান রয়েছে।

আমার এএসপি.এনইটি ওয়েব অ্যাপ্লিকেশনটি জসন ব্যবহার করছে না, যেখানে অন্যান্য প্রকল্পগুলি।

আমি এটি ঠিক করেছি:

  1. আমি নিশ্চিত করেছি যে সমস্ত প্রকল্পগুলি যেখানে জেসনের কোনও সংস্করণ ব্যবহার করে সমস্ত প্রকল্পে নুগেট আপডেট ব্যবহার করে সর্বশেষ সংস্করণ ()) ব্যবহার করা হয়েছে - এটি সমস্যার সমাধান করেনি
  2. আমি নিউগেট ব্যবহার করে ওয়েব অ্যাপ্লিকেশনটিতে জসন যুক্ত করেছি - এটি সমস্যার সমাধান করেছে (আমাকে কেন ডুব দিয়ে দিন):

পদক্ষেপ 2 হ'ল প্রথমে জেসনের জন্য একটি কনফিগারেশন তথ্য যুক্ত করা হয়েছিল, যা পরামর্শ দেয় যে সমস্ত প্রকল্পগুলি, তাদের সংস্করণ যাই হোক না কেন সর্বশেষতম সংস্করণ (6) ব্যবহার করুন। ওয়েব.কনফিগের সাথে সমাবেশের বাধ্যবাধকতা যুক্ত করা সম্ভবত এটির সমাধান।

তবে, দ্বিতীয় পদক্ষেপটি সোম লিগ্যাসি কোডটি পরিষ্কার করেছে। দেখা গেল আমরা এর আগে আমাদের ওয়েব অ্যাপ্লিকেশনটিতে জসনের একটি পুরানো সংস্করণ (5) ব্যবহার করেছি এবং রেফারেন্সটি (আমার সন্দেহ: ম্যানুয়ালি) অপসারণ করা হলে নুগেট ফোল্ডারগুলি মুছে ফেলা হয়নি। সর্বশেষতম জসন (6) যুক্ত করে পুরানো ফোল্ডারগুলি সরিয়ে ফেলা হয়েছে (জেসন ভি 5)। এটি ফিক্সের অংশও হতে পারে।


0

ভিভারেক উল্লেখ করেছিলেন যে অটোজিএনরেটেডবাইন্ডাইরিডাইরেক্টসকে মিথ্যা হিসাবে সেট করে বাঁধাই পুনঃনির্দেশগুলির উত্পাদন নিষ্ক্রিয় করা সম্ভব। এই প্রশ্নটি পোস্ট হওয়ার পরে এটি কোনও নতুন জিনিস কিনা তা নিশ্চিত নন, তবে সরঞ্জাম / বিকল্প / নুগেট প্যাকেট ম্যানেজারে একটি "প্রয়োগের বাইন্ডিং পুনঃনির্দেশগুলি ছেড়ে যান" বিকল্প রয়েছে, যা টগল করা যেতে পারে। ডিফল্টরূপে এটি বন্ধ, অর্থ পুনঃনির্দেশগুলি প্রয়োগ করা হবে। তবে আপনি যদি এটি করেন তবে আপনাকে কোনও প্রয়োজনীয় বাইন্ডিং পুনঃনির্দেশ ম্যানুয়ালি পরিচালনা করতে হবে।

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