আমি কীভাবে লগ 4 নেটকে সার্বজনীন টোকেন পরিবর্তন করে কাজ করব work


99

আমাদের একটি এসপ নেট 4.0.০ প্রকল্প রয়েছে যা বেশ কয়েকটি ফ্রেমওয়ার্ক ব্যবহার করে যা লগ 4 নেট সংস্করণ 1.2.10.0 এর উপর নির্ভরশীল। আজ আমি একটি নতুন কাঠামো অন্তর্ভুক্ত করার চেষ্টা করেছি যা লগ 4 নেট সংস্করণ 1.2.11.0 এর উপর নির্ভরশীল, আমি তখন থেকেই আটকে আছি:

লগ 4 নেট 1.2.10.0 এর সর্বজনীন কৌতুক = 1b44e1d426115821 রয়েছে

লগ 4 নেট 1.2.11.0 এর সর্বজনীন কৌতুক = 669e0ddf0bb1aa2a রয়েছে

যেহেতু এগুলি পৃথক, আমি ওয়েবকনফাইগের রানটাইম উপাদানটির মাধ্যমে অ্যাসেমবিলি রিডাইরেক্টগুলি (সমস্ত ফ্রেমওয়ার্কগুলিকে লগ 4 নেটনের একই সংস্করণ ব্যবহার করতে) বা কোডবেস (কেবলমাত্র নতুন ফ্রেমওয়ার্ক ব্যবহারের সংস্করণ 1.2.11.0) ব্যবহার করতে পারি না cannot

এখানে আমার বিকল্পগুলি কি?

(এবং কেন ব্লিপ লগ 4 নেট সংস্করণগুলির মধ্যে পাবলিককিটোকেনগুলি পরিবর্তন করে রাখে, কারণ আমি বুঝতে পেরেছি যে একটি হারানো কীটি সংস্করণ ১.২.৯.০ এবং ১.২.১০.০ এর মধ্যে স্যুইচ করার কারণ ছিল, তারা কীটি আবারও হারিয়ে ফেলল? আমি আমার ড্রপবক্সকে স্বেচ্ছাসেবক করব? তাদের যদি প্রয়োজন হয় তবে এটি নিরাপদ রাখতে ...)

সম্পাদনা: ঠিক আছে, সুতরাং লগ 4 নেট লোকেরা আপাতদৃষ্টিতে ধারণা পেয়েছিল যে দুটি কী দিয়ে মুক্তি দেওয়া ভাল ধারণা ছিল, তবে এর অর্থ হ'ল যে প্রতিটি কাঠামো আপনি ব্যবহার করেন সেগুলির মধ্যে দুটি স্বাদকে তারা পছন্দ করেন, বা সেই ফ্রেমওয়ার্কগুলি কাজ করতে পারে না সে সম্পর্কে সম্মত হওয়া উচিত পাশাপাশি একই অ্যাপডোমেন। আমি কি একমাত্র এই ভয়ঙ্কর ধারণাটি খুঁজে পাচ্ছি? সবাই যদি এটি করে থাকে তবে সবকিছু ভেঙে যাবে, তাই না?

সম্পাদনা 2: যেমনটি আমি বলেছি, আমি আমার ব্যবসায়ের কোডে লগ 4 নেট ব্যবহার করছি না, তবে আমি বেশ কয়েকটি ফ্রেমওয়ার্ক ব্যবহার করি যা 1.2.10.0 এর উপর নির্ভর করে এবং যখন আমি একটি নতুন ফ্রেমওয়ার্ক ব্যবহার করার চেষ্টা করি যা 1.2.11.0 (নতুন কী) উপর নির্ভর করে ), সুতরাং স্টিফানস উত্তরটি প্রযোজ্য নয়, কারণ নতুন কাঠামোটি নতুন কী আশা করবে, পুরানোটি নয়


4
আইএমএইচও, এপাচি থেকে প্রথম ত্রুটিটি এখানে নতুন কী সহ স্বাক্ষরিত বাইনারিগুলি সরবরাহ করা: নতুন কীটি প্যাচড / বর্ধিত ওপেন সোর্স সংস্করণের জন্য এবং এটি যেমন ব্যবহার করা উচিত নয়। দ্বিতীয় ত্রুটিটি হ'ল আপনি যে ফ্রেমওয়ার্কটির কথা বলছেন তা কেবলমাত্র নতুন লগ 4 নেট স্বাক্ষর দিয়ে প্রকাশ করা হয়েছে: পুরানো স্বাক্ষরযুক্ত একটি সংস্করণ থাকা উচিত।
জোবিলি

6
প্রকৃতপক্ষে, আপনি তৃতীয় স্বাদটি খুঁজছেন: ভিজুয়াল স্টুডিও প্যাকেজের জন্য স্ফটিক প্রতিবেদনের অংশ হিসাবে এসএপি-তে একটি প্রতিভা তাদের নিজস্ব দৃ name় নামটির সাথে সংমিশ্রণ করেছিল এবং বিষয়টিকে আরও খারাপ করার জন্য, তারা এটি জিএসি-তে আটকে দিয়েছে যা তৈরি করবে দুঃস্বপ্নের মেশিন জুড়ে আপনার নির্ভরতা।
জেরেমি হলভ্যাক্স

উত্তর:


65

এইভাবে আমি সংস্করণ 1.2.11.0 এর সাথে কাজ করে জিনিস পেয়েছি।

  1. প্রথম স্থানে কীটি পরিবর্তন করার জন্য অ্যাপাচে শাপ দিন :)
  2. পুরানো কী সহ স্বাক্ষরিত 1.2.11.0 এর সংস্করণটি ডাউনলোড করুন।
  3. লগ 4 নেট (নতুন কী) এর কোনও প্রত্যক্ষ রেফারেন্স সরিয়ে আপনার নিজস্ব কোড বাছাই করুন এবং পুরানো কী সহ স্বাক্ষরিত সমাবেশের একটি রেফারেন্স সহ প্রতিস্থাপন করুন।
  4. আপনার ওয়েব / app.config এ এই বিভাগটি অন্তর্ভুক্ত করে আপনার যে কোনও নির্ভরশীল সমাবেশগুলি বাছাই করুন
   <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-1.2.10.0"
                                 newVersion="1.2.11.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

9
পুরানো পাবলিক কী সহ স্বাক্ষরিত সংস্করণটি ডাউনলোড করা প্রয়োজনীয় কারণ দুর্ভাগ্যক্রমে কোনও আলাদা পাবলিক কী সহ কোনও সমাবেশে একটি বাধ্যতামূলক পুনর্নির্দেশ করা সম্ভব নয়।
ডেভিড

4
এটি 1.2.11.0 এর একটি ব্রেকিং পরিবর্তনের কারণে ব্যর্থ বলে মনে হচ্ছে: নেটপ্লল.ব্লগস্পট.কম
2012/

@ সাইডনিওস দ্বারা উল্লিখিত লিঙ্কে বর্ণিত সমস্যার সমাধান কি কেউ পেয়েছে যা নিম্নলিখিত ব্যতিক্রমগুলির কারণ:Method not found: 'Void log4net.Config.BasicConfigurator.Configure()'
নিও

দুর্ভাগ্যক্রমে, 1.2.10 এ ডাউনগ্রেড করা ছাড়া আর কোনও সমাধান নেই। (বা আপনি যে প্রতিটি নির্ভরশীল সমাবেশ ব্যবহার করেন তা পুনরায় সংকলন)।
বিকে 0

4
1.2.10 অ্যাসেমব্লিকে অন্য একটি ডিরেক্টরিতে রাখুন এবং এই কনফিগারটিটি ব্যবহার করুন: '<ডিপেন্ডেন্টঅ্যাস্পলেশন> <সমাবেশআইডেন্টিটির নাম = "লগ 4 নেট" পাবলিককি টোকেন = "1b44e1d426115821" সংস্কৃতি = "নিরপেক্ষ" /> <বাইন্ডিংরেডডাইরেক্ট ওভারভিশন = "0.0.0.0-1.2.9.0 "newVersion =" 1.2.10.0 "/> <কোডবেস সংস্করণ =" 1.2.10.0 "href =" সংস্থানসমূহ \ log4net-oldkey \ log4net.dll "/> </d dependentAssembly> '
জেদি

27

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

অন্যান্য উত্তরগুলির সাথে সমস্যাটি হ'ল তারা সমস্ত বাইন্ডিংয়ের জন্য একই dll সংস্করণ ব্যবহার করছেন। আমি লিগ্যাসি নির্ভরতা বাদে অন্য সমস্ত কিছুর জন্য নতুন সংস্করণে বৈশিষ্ট্যগুলি ব্যবহার করতে চাই।

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

  1. পুরানো সংস্করণ (1.2.11.0 সংস্করণ) ডাউনলোড করে শুরু করুন ।
  2. ডাউনলোড বাইনারি থেকে নাম পরিবর্তন করুন log4net.1.2.10.dllবিল্ড অ্যাকশন সেট এ সেট করা Noneএবং "নতুন হলে অনুলিপি করুন" সহ এটি আপনার প্রারম্ভিক প্রকল্পে অন্তর্ভুক্ত করুনএখানে চিত্র বর্ণনা লিখুন
  3. .NET কে এটি পুরানো সংস্করণটি কোথায় খুঁজে পেতে পারে তা বলুন:

App.config

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" />
            <codeBase version="1.2.10.0" href="log4net.1.2.10.dll" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

hrefশনাক্ত পুরোনো সংস্করণ যেখানে বৈশিষ্ট্যাবলী। লগ 4 নেট এর জন্য অন্য সমস্ত অনুরোধগুলি নতুন সংস্করণটিতে নির্দেশ করবে।


4
এটি একটি দুর্দান্ত সমাধান কারণ এটি আপনাকে গ্রন্থাগারের জন্য উভয় সংস্করণ বজায় রাখতে দেয় যা রেফারেন্স।
দক্ষিণশোরাক

4
ধন্যবাদ! এটি আমাকে বাঁচায়। আমাকে "আউটপুট ডিরেক্টরিতে অনুলিপি" পরিবর্তন করে "অনুলিপি করবেন না" করতে হয়েছিল, তবে অন্যথায় এটি একটি কবজির মতো কাজ করেছে!
ড্যানিয়েল হেডেনস্ট্রোম

3

আপনি লগ 4 নেট 1.2.11.0 এর একটি সংস্করণ ডাউনলোড করতে পারেন যা পুরানো কীতে স্বাক্ষরিত। নতুন কীতে পরিবর্তিত হওয়ার কারণ তাদের FAQ এ ব্যাখ্যা করা হয়েছে:

http://logging.apache.org/log4net/release/faq.html#two-snks

(মূলত নতুন কীটি সর্বজনীনভাবে উপলভ্য এবং কোনও কারণে তারা পুরানো কীটি বিতরণে অন্তর্ভুক্ত করতে চায়নি me তবে কেন তারা কেবল পুরানো চাবিটি সর্বজনীনভাবে উপলভ্য করেনি তা আমার কাছে স্পষ্ট নয়)


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

দুর্ভাগ্যক্রমে এটি সঠিক। আমার ধারণা আপনি সমস্ত উপাদান লগ 4 নেট এর একই সংস্করণ ব্যবহার না করে বিবেচনা করা উচিত ...
স্টিফান

4
.... এবং আমি কীভাবে এটি করতে যাব? এই সমস্যাটি পরিচালনা করার জন্য। নেট-তে কোনও ব্যবস্থা আছে কি?
AndreasKnudsen


1

আপনার নির্দিষ্ট কেসের জন্য এটি উপযুক্ত কিনা তা আপনি জানেন না তবে আপনি একটি ফ্রেমওয়ার্ক পুনরায় সংকলন করতে পারেন, সুতরাং তারা একই পাবলিক কী দিয়ে লগ 4 নেট ব্যবহার করবে। আমার ক্ষেত্রে এটি ফ্লুয়েটএনহাইবারনেট ছিল যা লগ 4 নেট 1.2.10 এবং নতুন কী সহ লগ 4 নেট 1.2.11 সহ কম্ব্রেস ব্যবহার করে। আমি পুরানো কী সহ স্বাক্ষরিত লগ 4 নেট 1.2.11 ডাউনলোড করেছি এবং এটির সাথে কম্ব্রেস পুনরায় সংযুক্ত করেছি। এর পরে যোগ করা অ্যাসেমব্লিং বাইন্ডিং 1.2.10 থেকে 1.2.11 এ পুনঃনির্দেশিত হয় এবং এটি কাজ শুরু করে।


0

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


0

আমি উপরে প্রদত্ত লিঙ্কগুলিতে যাওয়ার চেষ্টা করেছি, তবে মনে হচ্ছে অ্যাপাচি সাইটের সমস্ত লিঙ্কগুলি কাজ করছে না। তারপরে সমস্যাটি সমাধানের জন্য আমি এটিই করেছি:

আপনার ভিজ্যুয়াল স্টুডিও থেকে লগ 4 নেট এর সর্বশেষতম সংস্করণ (1.2.13.0) ডাউনলোড এবং ইনস্টল করতে নিউগেট ব্যবহার করুন। নুগেট প্যাকেজ ম্যানেজার স্বয়ংক্রিয়ভাবে সমস্ত লগ 4 নেট (1.2.11.0) সর্বশেষ সংস্করণে ডাউনলোড এবং আপগ্রেড করবে।

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