আমার অনুরূপ এই প্রস্তাবিত প্রশ্নটি পড়ে আমি শুরু করেছিলাম, তবে কোনও সমাধান হয়নি: এমএসটিস্ট.টেষ্টএডাপ্টার কেন আমার নিউগেট প্যাকেজে তার ডিএলএল যুক্ত করে?
দ্রুত সমস্যার বর্ণনা
আমি একটি নুগেট প্যাকেজ লিখেছি এবং প্রতিবারই এটি ইনস্টল করব 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
এর নোটগুলি নোট করুন ।TargetProject
TargetProject
NUnit
NUnit3TestAdapter
দীর্ঘ ওভারভিউ
আমি অভ্যন্তরীণ ব্যবহারের জন্য আমার নিজস্ব নিউগেট প্যাকেজ তৈরি করেছি, যার নাম রয়েছে 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
:
- তাদের .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
উপর নির্ভরতা রয়েছেMainFramework
MainFramework
নেভিগেট করুন
TargetProject
, প্যাকেজ ম্যানেজার কনসোল খুলুন- চালান
Install-Package C:\Path\To\ClientLibrary.1.0.0.nupkg
ইনস্টলেশন সফলভাবে চলে এবং তারপরে .dll
আমি যুক্ত হয়ে যাবার বিষয়ে অভিযোগ করছি।
সমস্যা:
MainFramework
হয়েছে NUnit
এবং NUnit3TestAdapter
NuGet প্যাকেজ ইনস্টল করা নেই। 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
ব্যবহার করতে বলতে চাই ।NUnit
NUnit3TestAdapter
TargetProject
উত্তরটি যদি "সম্ভব না" হয় তবে তা ঠিক আছে তবে আমি একটি ব্যাখ্যা চাই - এই প্রশ্নের জন্য আমার সামগ্রিক লক্ষ্য হ'ল নুগেট এবং নির্ভরতা কীভাবে কাজ করে সে সম্পর্কে আরও ভাল বোঝা অর্জন করা এবং এটি কেন একটি সমস্যা হয়েছে তা বোঝা প্রথম স্থান. পড়ার জন্য আপনাকে ধন্যবাদ.
ClientLibrary
কেবলমাত্র কিছু অংশ ব্যবহার করে MainFramework
, তাই MainFramework
অবশ্যই বিভক্ত হতে পারে MainFramework.Framework
এবং MainFramework.Test
যেখানে NUnit
নির্ভরতা কেবলমাত্র বিদ্যমান MainFramework.Test
এবং ClientLibrary
কেবলমাত্র ব্যবহার করে MainFramework.Framework
। বিশ্লেষণের জন্য ধন্যবাদ।