নুগেট প্যাকেজ ইনস্টল করার সময় আমি কি এই .dllগুলি জুড়ে কাজ করতে পারি?


10

আমার অনুরূপ এই প্রস্তাবিত প্রশ্নটি পড়ে আমি শুরু করেছিলাম, তবে কোনও সমাধান হয়নি: এমএসটিস্ট.টেষ্টএডাপ্টার কেন আমার নিউগেট প্যাকেজে তার ডিএলএল যুক্ত করে?

দ্রুত সমস্যার বর্ণনা

আমি একটি নুগেট প্যাকেজ লিখেছি এবং প্রতিবারই এটি ইনস্টল করব NUnitএবং NUnit3TestAdapter .dllআমি যে প্রকল্পটি ইনস্টল করেছি তাতে যুক্ত হব। আমি একটি সমাধান খুঁজতে চাই যা এই সমস্যাটিকে সংশোধন করে।

পদক্ষেপগুলি তিরস্কার করুন

আমি দুটি গিট সংগ্রহস্থল ঠেলেছি যা আমি বর্ণনা করছি সেই সমস্যাটিকে পুনরুত্পাদন করে।

ClientLibrary/ MainFramework(যে প্রকল্পটি থেকে আমি নিউগেট প্যাকেজ তৈরি করেছি) - https://github.com/harbourc/client-library-repro-nuget-issue

TargetProject(যে প্যাকেজটি ইনস্টল করা আছে) - https://github.com/harbourc/target-project-repro-nuget-issue

আপনি উভয় সংগ্রহস্থল ক্লোন করতে পারেন, তাদের নিউগেট প্যাকেজগুলি পুনরুদ্ধার করতে পারেন এবং সমস্যাটি নিম্নরূপে পুনরুত্পাদন করতে পারেন:

  1. ক্লায়েন্ট লাইব্রেরি .১.০.০.nupkg ক্লায়েন্ট-লাইব্রেরি-রেপ্রো-নুগেট-ইস্যু / ক্লায়েন্টলিবারি /

  2. টার্গেট-প্রজেক্ট-রেপ্রো-নুগেট ইস্যু এবং চালানোর জন্য প্যাকেজ ম্যানেজার কনসোলটি খুলুন

Install-Package C:\Path\To\client-library-repro-nuget-issue\ClientLibrary\ClientLibrary.1.0.0.nupkg
  1. ইতিমধ্যে ইনস্টল এবং ইনস্টল থাকা সত্ত্বেও এতে যুক্ত হওয়া NUnitএবং NUnit3TestAdapter .dllএর নোটগুলি নোট করুন ।TargetProjectTargetProjectNUnitNUnit3TestAdapter

দীর্ঘ ওভারভিউ

আমি অভ্যন্তরীণ ব্যবহারের জন্য আমার নিজস্ব নিউগেট প্যাকেজ তৈরি করেছি, যার নাম রয়েছে ClientLibraryএবং আমি এটি অন্য প্রকল্পে ইনস্টল করার চেষ্টা করছি, যার নাম রয়েছে TargetProject। কাঠামোর দ্রুত ভাঙ্গন এখানে দেওয়া হল:

  • FullSolution.sln
    • MainFramework.csproj
    • ClientLibrary.csproj-> এ .nupkgথেকে উত্পন্ন

পৃথক প্রকল্প:

  • TargetProject.sln
    • TargetProject.csproj-> ইনস্টল .nupkgএই সম্মুখের

ClientLibraryএর একটি উল্লেখ রয়েছে MainFrameworkএবং এ থেকে অনেকগুলি পদ্ধতি ব্যবহার করে MainFramework

ইনস্টল ClientLibrary.1.0.0.nupkgকরার সময় TargetProject, নিম্নলিখিতগুলি এতে .dllযুক্ত হচ্ছে TargetProject:

nunit.engine.api.dll
nunit.engine.dll
NUnit3.TestAdapter.dll
NUnit3.TestAdapter.pdb

যদি আমি এগুলি মুছে ফেলি .dll, তবে সবকিছু ঠিকঠাক কাজ করে, কারণ TargetProjectইতিমধ্যে packages প্যাকেজগুলি যাইহোক ইনস্টল করা আছে। এগুলি প্রয়োজনীয় নয়, ইনস্টল করার সময় এগুলি মুছে ফেলা খুব বিরক্তিকর।

এখানে আমি কীভাবে ClientLibraryনুগেট প্যাকেজ যুক্ত করছি TargetProject:

  1. তাদের .dlls উত্পন্ন করার জন্য বিল্ড ClientLibraryএবং MainFrameworkপ্রকল্পগুলি
  2. ডিরেক্টরি ClientLibraryফোল্ডারে পরিবর্তন করুন এবং রান করুনnuget spec

.nuspec ফাইল উত্পন্ন:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>ClientLibrary</id>
    <version>1.0</version>
    <title>Client Library</title>
    <authors>Myself</authors>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Client library for interacting with my application.</description>
    <dependencies>
      <group targetFramework=".NETFramework4.7.2" />
    </dependencies>
  </metadata>
</package>
  1. রান nuget pack -IncludeReferencedProjects- কারণ (এবং এর দ্বারা ব্যবহৃত অন্যান্য বেশ কয়েকটি প্যাকেজ ) এর ClientLibraryউপর নির্ভরতা রয়েছেMainFrameworkMainFramework

  2. নেভিগেট করুন TargetProject, প্যাকেজ ম্যানেজার কনসোল খুলুন

  3. চালান Install-Package C:\Path\To\ClientLibrary.1.0.0.nupkg

ইনস্টলেশন সফলভাবে চলে এবং তারপরে .dllআমি যুক্ত হয়ে যাবার বিষয়ে অভিযোগ করছি।

সমস্যা:

MainFrameworkহয়েছে NUnitএবং NUnit3TestAdapterNuGet প্যাকেজ ইনস্টল করা নেই। ClientLibrary না. সুতরাং, এটি যুক্ত .dllহয়েছে বলে মনে হয় কারণ তারা ইনস্টল করা আছে MainFrameworkতবে ইনস্টল করা নেই ClientLibrary। (মনে রাখবেন, ClientLibraryরেফারেন্স MainFramework.dll।)

আছে অন্য প্যাকেজ উভয় ইনস্টল MainFrameworkএবং ClientLibrary, এবং এই না .dll'যে যুক্ত হয়ে গুলি TargetProjectইনস্টলেশন উপর, তাই আমি বিষয়টি অভিমানী করছি প্যাকেজ উপস্থিত না থাকার কারণে হয় MainFrameworkকিন্তু না ClientLibrary

আমি ইনস্টল করার মাধ্যমে আমি "ফিক্স" এই ইস্যু করতে পারে বিশ্বাস NUnitএবং NUnit3TestAdapterসম্মুখের দিকে ClientLibrary, কিন্তু ClientLibraryআসলে এ সব প্যাকেজগুলি ব্যবহার করে না তাই এটি অপ্রয়োজনীয় বলে মনে হয়।

আমি কিভাবে ইনস্টল করতে পারেন ClientLibraryসম্মুখের TargetProjectঅন্তর্ভুক্ত না করেই NUnitএবং NUnit3TestAdapter .dll's, এবং ইনস্টল না করেও NUnitএবং NUnit3TestAdapterসম্মুখের দিকে ClientLibrary? যদি সম্ভব হয় তবে আমি ইতিমধ্যে ইনস্টল থাকা প্যাকেজগুলি এবং প্যাকেজগুলি ClientLibrary.1.0.0.nupkgব্যবহার করতে বলতে চাই ।NUnitNUnit3TestAdapterTargetProject

উত্তরটি যদি "সম্ভব না" হয় তবে তা ঠিক আছে তবে আমি একটি ব্যাখ্যা চাই - এই প্রশ্নের জন্য আমার সামগ্রিক লক্ষ্য হ'ল নুগেট এবং নির্ভরতা কীভাবে কাজ করে সে সম্পর্কে আরও ভাল বোঝা অর্জন করা এবং এটি কেন একটি সমস্যা হয়েছে তা বোঝা প্রথম স্থান. পড়ার জন্য আপনাকে ধন্যবাদ.


1
আচরণ বর্ণনা করার জন্য আপনাকে নমুনা প্রকল্প সরবরাহ করতে হবে।
লেেক্স লি

@LexLi আমি আমার প্রকল্পের বিবরণটি দুটি নমুনা ভাণ্ডারগুলির সাথে আপডেট করেছি যা প্রতিস্থাপনের পদক্ষেপের পাশাপাশি আচরণটি চিত্রিত করে।
ক্রিস্টিন

3
কোডটি মেইনফ্রেমে ওয়ার্কপ্রেস.এস.এস.পি.এস.এস.এন.জেউনিতে নির্ভরতা থাকার জন্য খারাপ প্রতিবেদন দেখায়। আপনি কি তাদের আলাদা ইউনিট পরীক্ষা প্রকল্পে, যেমন মেইনফ্রেম ওয়ার্ক.উনিটটেষ্ট.csproj এ স্থানান্তর করতে পারেন?
লেক্স লি

এটি উপলব্ধি করে - ClientLibraryকেবলমাত্র কিছু অংশ ব্যবহার করে MainFramework, তাই MainFrameworkঅবশ্যই বিভক্ত হতে পারে MainFramework.Frameworkএবং MainFramework.Testযেখানে NUnitনির্ভরতা কেবলমাত্র বিদ্যমান MainFramework.Testএবং ClientLibraryকেবলমাত্র ব্যবহার করে MainFramework.Framework। বিশ্লেষণের জন্য ধন্যবাদ।
ক্রিস্টিন

উত্তর:


7

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

এখানে চিত্র বর্ণনা লিখুন

উপর না পার্শ্ব, ক্লায়েন্ট লাইব্রেরী কারণ তারা একটি প্রকল্প যে ক্লায়েন্ট লাইব্রেরী রেফারেন্স যোগ করা হয় নি NUnit ডিএলএল অন্তর্ভুক্ত করা হবে।

অন্যদিকে যেহেতু Do পাশ, ক্লায়েন্ট লাইব্রেরী NUnit ডিএলএল কারণ তন্ন তন্ন রেফারেন্স পরীক্ষা প্রকল্পের অন্তর্ভুক্ত করবে না।


2
ভাঙ্গন এবং ব্যাখ্যার জন্য আপনাকে ধন্যবাদ - আমি আপনার প্রজেক্ট যেমন আপনারা এবং অন্য একজন ব্যবহারকারী পরামর্শ দিয়েছেন তার ভাগ করে এই অনুশীলনটি প্রয়োগ করেছি। আমি আগে যা করছিলাম তার থেকে এটি অনেক ভাল অনুশীলনের মতো অনুভব করে এবং আমার সমস্যাটিও সমাধান হয়ে গেছে।
ক্রিস্টিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.