এটি একটি সংকলন-সময় সম্পত্তি!
একটি অতি গুরুত্বপূর্ণ বিষয়টি জানতে হবে যে "সুনির্দিষ্ট সংস্করণ" এমন একটি সম্পত্তি যা সংকলন সময়ে কার্যকর হয় এবং রানটাইম সময় নয় ।
এটা সব সম্পর্কে কি?
যখন কোনও প্রকল্প নির্মিত হয়, তখন বিল্ড সিস্টেমটি যে শারীরিক অ্যাসেম্বলিগুলি ব্যবহার করে তা সন্ধান করার জন্য প্রকল্পের সমাবেশ সংক্রান্ত রেফারেন্সগুলি সমাধান করা দরকার। যদি "নির্দিষ্ট সংস্করণ" চেক সম্পাদিত হয় (বিভাগটি "কখন" নির্দিষ্ট সংস্করণ "চেক করা হয়?" দেখুন), এটি সমাবেশ রেজোলিউশন প্রক্রিয়ার ফলাফলকে প্রভাবিত করে:
- বিল্ড সিস্টেমটি এমন একটি শারীরিক সমাবেশকে চিহ্নিত করে যা এটি সম্ভাব্যভাবে ব্যবহার করতে পারে
- বিল্ড সিস্টেমটি ফিজিকাল অ্যাসেমব্লির সংস্করণকে সমাবেশ রেফারেন্সের জন্য .csproj ফাইলে সঞ্চিত সমাবেশ সংস্করণের সাথে তুলনা করে
- যদি দুটি অ্যাসেম্বলি সংস্করণ হুবহু হয় তবে রেজোলিউশন প্রক্রিয়া সফল হয় এবং পাওয়া ফিজিকাল অ্যাসেমব্লিটি বিল্ডের জন্য ব্যবহৃত হয়
- যদি দুটি অ্যাসেম্বলি সংস্করণ মিলে না যায় তবে শারীরিক সমাবেশ বাতিল হয়ে যায় এবং পরবর্তী সম্ভাব্য সমাবেশটি সনাক্ত করে রেজোলিউশন প্রক্রিয়া অব্যাহত থাকে
- যদি আর কোনও সম্ভাব্য শারীরিক অ্যাসেম্বলিগুলি অবস্থিত না করা যায়, তবে রেজোলিউশন প্রক্রিয়া ব্যর্থ হয়। এটি সংকলক সতর্কতা (এমএসবি 3245 সতর্কতা) এর ফলাফল দেয় যা আপনাকে বলে যে রেফারেন্সটি সমাধান করা যায়নি।
- আকর্ষণীয় যথেষ্ট, বিল্ড তারপর অবিরত! কোডটির যদি সমাবেশে আসল কোন উল্লেখ থাকে তবে বিল্ডটি সফল হয় (পূর্বে উল্লিখিত সতর্কতার সাথে)। কোডটির রেফারেন্স থাকলে বিল্ডটি এমন একটি ত্রুটির সাথে ব্যর্থ হয় যা দেখে মনে হয় কোডটি অজানা প্রকার বা নেমস্পেস ব্যবহার করছে। বিল্ডটি কেন সত্যিই ব্যর্থ হয়েছে তার একমাত্র ইঙ্গিতটি হ'ল সতর্কতা এমএসবি 3245।
আদেশগুলি যাতে সমাবেশগুলি সমাধান করা হয়
বিধানসভা রেজোলিউশন প্রক্রিয়াটি সম্ভাব্য অ্যাসেমব্লিকে যে আদেশে চিহ্নিত করেছে এটি হ'ল:
<HintPath>
.Csproj ফাইলে উপাদানটির দ্বারা সমাবেশটি সমাবেশ
- প্রকল্পের আউটপুট পাথ
- জিএসি
নোট করুন যে যদি জিএসি-তে সমাবেশের বেশ কয়েকটি সংস্করণ উপস্থিত থাকে তবে রেজোলিউশন প্রক্রিয়াটি প্রথমে সর্বোচ্চ সংস্করণ সহ সমাবেশে সমাধানের চেষ্টা করে। "সুনির্দিষ্ট সংস্করণ" চেক তৈরি না করা হলে এটি গুরুত্বপূর্ণ।
"নির্দিষ্ট সংস্করণ" কখন পরীক্ষা করা হয়?
ভিসুয়াল স্টুডিও .csproj ফাইলে পাওয়া দুটি টুকরো তথ্যের "নির্দিষ্ট সংস্করণ" পরীক্ষা করতে হবে কিনা তার সিদ্ধান্তটিকে ভিত্তি করে:
<SpecificVersion>
উপাদানটির উপস্থিতি বা অনুপস্থিতি এবং এর মান (যদি এটি উপস্থিত থাকে)
- সমাবেশ রেফারেন্সে সংস্করণ তথ্যের উপস্থিতি বা অনুপস্থিতি
সংস্করণ তথ্যের সাথে একটি সাধারণ সমাবেশের রেফারেন্সটি এটির মতো দেখাচ্ছে:
<Reference Include="Foo, Version=1.2.3.4, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>True</SpecificVersion>
<HintPath>..\..\Bar\Foo.dll</HintPath>
</Reference>
সংস্করণ তথ্য ছাড়াই এই জাতীয় সমাবেশটি দেখতে কেমন লাগে :
<Reference Include="Foo">
[...]
"সুনির্দিষ্ট সংস্করণ" চেক করা হয় এবং কখন হয় না তা নীচের সারণিতে প্রদর্শিত হয়।
| Version information
| Present Not present
----------------------------+------------------------------
<SpecificVersion> |
- Present, has value True | Yes (1) Yes (check always fails) (2)
- Present, has value False | No (3) No (4)
- Not present | Yes (5) No (6)
এখানে আশ্চর্যের বিষয়টি হ'ল উভয় <SpecificVersion>
এবং সংস্করণ তথ্য অনুপস্থিত থাকলে কোনও চেক করা হয় না (কেস 6)। আমি চেকটি সম্পাদিত হবে এবং সর্বদা ব্যর্থ হবে (কেস 2 এর সমান) আশা করতাম কারণ আমার বুঝতে না পারলে <SpecificVersion>
ডিফল্ট মান "সত্য" বোঝায়। এটি ভিজ্যুয়াল স্টুডিও ২০১০ এর কোলাহল হতে পারে যেখানে আমি আমার পরীক্ষা করেছিলাম did
আপনি যখন ভিজ্যুয়াল স্টুডিও ইউআইতে কোনও সংসদীয় রেফারেন্সের বৈশিষ্ট্যগুলি পরীক্ষা করেন (রেফারেন্সটি নির্বাচন করুন এবং এফ 4 টিপুন) তখন আপনি "নির্দিষ্ট সংস্করণ" বৈশিষ্ট্যের জন্য যে মানটি দেখেন তা ভিজুয়াল স্টুডিওতে "নির্দিষ্ট সংস্করণ" সম্পাদন করতে যাচ্ছে কিনা তা আপনাকে জানিয়ে দেয় চেক করুন। 6 এর ক্ষেত্রে ইউআই "সত্য" প্রদর্শন করবে, যদিও <SpecificVersion>
উপাদানটি .csproj ফাইলে উপস্থিত নেই।
"স্থানীয় অনুলিপি করুন" এর পার্শ্ব প্রতিক্রিয়া
যদি "স্থানীয় অনুলিপি" সম্পত্তিটি "সত্য" হিসাবে সেট করা থাকে তবে "নির্দিষ্ট সংস্করণ" চেকের কারণে অ্যাসেম্বলি রেজোলিউশন প্রক্রিয়া ব্যর্থ হয়, কোনও সমাবেশ কপি করা হয় না।
আমার মুখোমুখি