আমার অনুরূপ এই প্রস্তাবিত প্রশ্নটি পড়ে আমি শুরু করেছিলাম, তবে কোনও সমাধান হয়নি: এমএসটিস্ট.টেষ্টএডাপ্টার কেন আমার নিউগেট প্যাকেজে তার ডিএলএল যুক্ত করে?
দ্রুত সমস্যার বর্ণনা
আমি একটি নুগেট প্যাকেজ লিখেছি এবং প্রতিবারই এটি ইনস্টল করব NUnitএবং NUnit3TestAdapter .dllআমি যে প্রকল্পটি ইনস্টল করেছি তাতে যুক্ত হব। আমি একটি সমাধান খুঁজতে চাই যা এই সমস্যাটিকে সংশোধন করে।
পদক্ষেপগুলি তিরস্কার করুন
আমি দুটি গিট সংগ্রহস্থল ঠেলেছি যা আমি বর্ণনা করছি সেই সমস্যাটিকে পুনরুত্পাদন করে।
ClientLibrary/ MainFramework(যে প্রকল্পটি থেকে আমি নিউগেট প্যাকেজ তৈরি করেছি) - https://github.com/harbourc/client-library-repro-nuget-issue
TargetProject(যে প্যাকেজটি ইনস্টল করা আছে) - https://github.com/harbourc/target-project-repro-nuget-issue
আপনি উভয় সংগ্রহস্থল ক্লোন করতে পারেন, তাদের নিউগেট প্যাকেজগুলি পুনরুদ্ধার করতে পারেন এবং সমস্যাটি নিম্নরূপে পুনরুত্পাদন করতে পারেন:
ক্লায়েন্ট লাইব্রেরি .১.০.০.nupkg ক্লায়েন্ট-লাইব্রেরি-রেপ্রো-নুগেট-ইস্যু / ক্লায়েন্টলিবারি /
টার্গেট-প্রজেক্ট-রেপ্রো-নুগেট ইস্যু এবং চালানোর জন্য প্যাকেজ ম্যানেজার কনসোলটি খুলুন
Install-Package C:\Path\To\client-library-repro-nuget-issue\ClientLibrary\ClientLibrary.1.0.0.nupkg
- ইতিমধ্যে ইনস্টল এবং ইনস্টল থাকা সত্ত্বেও এতে যুক্ত হওয়া
NUnitএবংNUnit3TestAdapter.dllএর নোটগুলি নোট করুন ।TargetProjectTargetProjectNUnitNUnit3TestAdapter
দীর্ঘ ওভারভিউ
আমি অভ্যন্তরীণ ব্যবহারের জন্য আমার নিজস্ব নিউগেট প্যাকেজ তৈরি করেছি, যার নাম রয়েছে ClientLibraryএবং আমি এটি অন্য প্রকল্পে ইনস্টল করার চেষ্টা করছি, যার নাম রয়েছে TargetProject। কাঠামোর দ্রুত ভাঙ্গন এখানে দেওয়া হল:
FullSolution.slnMainFramework.csprojClientLibrary.csproj-> এ.nupkgথেকে উত্পন্ন
পৃথক প্রকল্প:
TargetProject.slnTargetProject.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:
- তাদের .dlls উত্পন্ন করার জন্য বিল্ড
ClientLibraryএবংMainFrameworkপ্রকল্পগুলি - ডিরেক্টরি
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>
রান
nuget pack -IncludeReferencedProjects- কারণ (এবং এর দ্বারা ব্যবহৃত অন্যান্য বেশ কয়েকটি প্যাকেজ ) এরClientLibraryউপর নির্ভরতা রয়েছেMainFrameworkMainFrameworkনেভিগেট করুন
TargetProject, প্যাকেজ ম্যানেজার কনসোল খুলুন- চালান
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
উত্তরটি যদি "সম্ভব না" হয় তবে তা ঠিক আছে তবে আমি একটি ব্যাখ্যা চাই - এই প্রশ্নের জন্য আমার সামগ্রিক লক্ষ্য হ'ল নুগেট এবং নির্ভরতা কীভাবে কাজ করে সে সম্পর্কে আরও ভাল বোঝা অর্জন করা এবং এটি কেন একটি সমস্যা হয়েছে তা বোঝা প্রথম স্থান. পড়ার জন্য আপনাকে ধন্যবাদ.
ClientLibraryকেবলমাত্র কিছু অংশ ব্যবহার করে MainFramework, তাই MainFrameworkঅবশ্যই বিভক্ত হতে পারে MainFramework.Frameworkএবং MainFramework.Testযেখানে NUnitনির্ভরতা কেবলমাত্র বিদ্যমান MainFramework.Testএবং ClientLibraryকেবলমাত্র ব্যবহার করে MainFramework.Framework। বিশ্লেষণের জন্য ধন্যবাদ।
