Copyপ্রয়োজনীয় লাইব্রেরিগুলি অনুলিপি করতে লক্ষ্যগুলি ফাইলে লক্ষ্য ব্যবহার করা সেই ফাইলগুলিকে অন্যান্য প্রকল্পে অনুলিপি করে না যা প্রকল্পটি উল্লেখ করে, ফলস্বরূপ এ DllNotFoundException। এটি একটি Noneএলিমেন্ট ব্যবহার করে অনেক সহজ টার্গেট ফাইল দিয়ে করা যেতে পারে , কারণ এমএসবাইল্ড সমস্ত Noneফাইলগুলিকে রেফারেন্সিং প্রকল্পগুলিতে অনুলিপি করবে ।
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<NativeLibs Include="$(MSBuildThisFileDirectory)**\*.dll" />
<None Include="@(NativeLibs)">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
buildপ্রয়োজনীয় নেটিভ লাইব্রেরি সহ নুগেট প্যাকেজের ডিরেক্টরিতে লক্ষ্যগুলি ফাইল যুক্ত করুন । লক্ষ্যগুলি ফাইল dllডিরেক্টরিতে সমস্ত শিশু ডিরেক্টরিতে সমস্ত ফাইল অন্তর্ভুক্ত করবে build। সুতরাং কোনও পরিচালিত সমাবেশ দ্বারা ব্যবহৃত নেটিভ লাইব্রেরির একটি x86এবং x64সংস্করণ যুক্ত Any CPUকরতে আপনি নিম্নলিখিতের মতো ডিরেক্টরি কাঠামো দিয়ে শেষ করবেন:
- বিল্ড
- এক্স 86
- NativeLib.dll
- NativeLibDependency.dll
- x64
- NativeLib.dll
- NativeLibDependency.dll
- MyNugetPackageID.targets
- liberal এর সংক্ষিপ্ত রূপ
একই x86এবং x64ডিরেক্টরিগুলি নির্মাণের পরে প্রকল্পের আউটপুট ডিরেক্টরিতে তৈরি করা হবে। আপনার যদি সাব-ডিরেক্টরীগুলির প্রয়োজন না হয় তবে **ও এবং %(RecursiveDir)মুছে ফেলা যায় এবং পরিবর্তে buildসরাসরি ডিরেক্টরিগুলিতে প্রয়োজনীয় ফাইলগুলি অন্তর্ভুক্ত করতে পারেন । অন্যান্য প্রয়োজনীয় সামগ্রী ফাইলগুলিও একইভাবে যুক্ত করা যেতে পারে।
Noneটার্গেট ফাইল হিসাবে যুক্ত ফাইলগুলি ভিজুয়াল স্টুডিওতে খোলার পরে প্রকল্পে প্রদর্শিত হবে না। আপনি যদি ভাবছেন যে কেন আমি Contentনুপকিতে ফোল্ডারটি ব্যবহার করি না কারণ এটি পাওয়ারশেল স্ক্রিপ্ট ব্যবহার না করেCopyToOutputDirectory উপাদান সেট করার কোনও উপায় নেই (যা কেবল ভিজ্যুয়াল স্টুডিওর অভ্যন্তরে চালিত হবে, কমান্ড প্রম্পট থেকে নয়, বিল্ড সার্ভারগুলিতে বা ইন অন্যান্য আইডিই, এবং প্রকল্প.জসন / এক্সপ্রোজ ডিএনএক্স প্রকল্পগুলিতে সমর্থিত নয় ) এবং আমি প্রকল্পের মধ্যে ফাইলগুলির অতিরিক্ত অনুলিপি না রেখে ফাইলগুলিতে একটি ব্যবহার করতে পছন্দ করি ।Link
আপডেট:
যদিও এটির Contentপরিবর্তে Noneএটির সাথেও কাজ করা উচিত যা দেখা যাচ্ছে যে মিসবিল্ডে একটি ত্রুটি রয়েছে তাই ফাইলগুলি এক ধাপের বেশি সরানো প্রকল্পগুলিকে রেফারেন্স করার জন্য অনুলিপি করা হবে না (যেমন প্রজ 1 -> প্রজ 2 -> প্রজ 3), প্রজ 3 ফাইলগুলি পাবে না প্রোজ 1 এর নুগেট প্যাকেজ থেকে তবে প্রোজ 2 হবে)।