ভিজ্যুয়াল স্টুডিওতে বড় সমাধানের জন্য সেরা অনুশীলন (২০০৮) [বন্ধ]


87

আমাদের প্রায় 100+ টি প্রকল্প রয়েছে যার মধ্যে বেশিরভাগ সি # রয়েছে solution স্বাভাবিকভাবেই, এটি উন্মুক্ত এবং নির্মাণ উভয় ক্ষেত্রেই দীর্ঘ সময় নেয়, তাই আমি এই জাতীয় প্রাণীদের জন্য সেরা অনুশীলনের সন্ধান করছি। প্রশ্নের উত্তরগুলির সাথে আমি যে উত্তরগুলির প্রত্যাশা করছি, সেগুলি হ'ল:

  • আপনি কীভাবে প্রকল্পগুলির মধ্যে উল্লেখগুলি পরিচালনা করতে পারেন
    • "স্থানীয় অনুলিপি" চালু বা বন্ধ থাকা উচিত?
  • প্রতিটি প্রকল্পের নিজস্ব ফোল্ডারটি তৈরি করা উচিত, বা সেগুলি সমস্ত একই আউটপুট ফোল্ডারে নির্মিত উচিত (এগুলি সমস্ত একই অ্যাপ্লিকেশনের অংশ)

  • সমাধানগুলির ফোল্ডারগুলি স্টাফগুলি সংগঠিত করার একটি ভাল উপায়?

আমি জানি যে সমাধানটিকে একাধিক ছোট সমাধানগুলিতে বিভক্ত করা একটি বিকল্প, তবে এটি তার নিজের রিফ্যাক্টরিং এবং মাথাব্যথার নির্মাণের সেট নিয়ে আসে, তাই সম্ভবত আমরা এটি আলাদা থ্রেডের জন্য সংরক্ষণ করতে পারি :-)


4
আমি জিজ্ঞাসা করতে পারি যে কেন একটি একক সমাধানের জন্য 100+ প্রকল্পের প্রয়োজন? তারা কি প্রতিটি তাদের নিজস্ব সমাবেশ তৈরি করছে?
নিল এন

4
হ্যাঁ, সেগুলি রয়েছে এবং তাদের প্রত্যেকটি কার্যকারিতার একটি যৌক্তিকভাবে পৃথক টুকরা উপস্থাপন করে।
আইভিন্দ

4
@ আইভিন্ড - ক্লাস এবং নেমস্পেসগুলি কি এটি নয়? পৃথক সমাবেশগুলি আপনাকে কী উপকার এনেছে? আমি কিছু সম্পর্কে চিন্তা করতে পারি, যেমন সম্ভাব্য ছোট আপগ্রেড এবং মেমরির ব্যবহার (যদি কিছু লোড না করা হয়) তবে সংকলন এবং পরিচালনা করতে অবশ্যই 100+ অনুমানের জন্য ব্যয় হয়।
si618

4
@ মার্ক আমি আপনার ব্যথা অনুভব করি আমরা এখানে 94 টি প্রকল্প আছি। এখনই এটি সম্পর্কে খুব বেশি কিছু করা যায় না, যেহেতু পুনর্গঠন করতে আমাদের একাধিক টিমের উন্নয়ন থামাতে হবে have আমাদের কাছে EX টি এক্সই প্রকল্প রয়েছে যা অন্যান্য ৯১ এর রেফারেন্স দেয় I'm
কেভিন

4
মানুষ, 100+? আমাদের যা আছে তার জন্য এটি কিছুই নয় ... এখন প্রায় 600 এখানে চাপ দিচ্ছে ...
সি জনসন

উত্তর:


41

আমি লিখি এই দুটি এমএস বিল্ড নিবন্ধে আপনার আগ্রহী হতে পারে।

এমএস বিল্ড: নির্ভরযোগ্য বিল্ডস তৈরির জন্য সেরা অনুশীলনগুলি, পার্ট 1

এমএস বিল্ড: নির্ভরযোগ্য বিল্ডস তৈরির জন্য সেরা অনুশীলনগুলি, পার্ট 2

বিশেষত পার্ট 2-তে একটি বিভাগ রয়েছে যাতে বৃহত উত্স গাছগুলি তৈরি করা হয় যা আপনি একবার খেয়াল করতে চাইতে পারেন।

এখানে আপনার প্রশ্নের সংক্ষিপ্ত উত্তর দিতে যদিও:

  • কপিলোকল? অবশ্যই এটি বন্ধ করুন
  • এক বা একাধিক আউটপুট ফোল্ডার তৈরি? একটি আউটপুট ফোল্ডারে তৈরি করুন
  • সমাধান ফোল্ডার? এটি স্বাদের বিষয়।

সাedদ ইব্রাহিম হাশমি

আমার বই: মাইক্রোসফ্ট বিল্ড ইঞ্জিনের ভিতরে: এমএসবিল্ড এবং টিম ফাউন্ডেশন বিল্ড ব্যবহার করে


থ্যাঙ্কস ম্যান, আমি অবশ্যই এগুলি পরীক্ষা করে দেখব!
আইভিন্ড

4
আমি বলব যে আমার কাছে এই বইটি রয়েছে এবং এটি দুর্দান্ত। এটি আমার টিএফএস বিল্ডগুলি স্বয়ংক্রিয় করতে এবং স্থানীয় দেব বিল্ডগুলি খুব ব্যাপকভাবে সহায়তা করেছে। আমি এখন ইনক্রিমেন্টাল বিল্ডস নিয়ে কাজ করছি এবং বইটি খুব গভীরভাবে বিষয়টিতে চলেছে। মূল্য মূল্য। ধন্যবাদ সাedদ। মহান কাজ আপ রাখুন.
ইরপ্রেজ

মন্তব্যগুলির জন্য ইরপ্রেজকে ধন্যবাদ
সায়েদ ইব্রাহিম

4
অনুলিপি সুপারিশের জন্য কপিরলোকল অক্ষম করার জন্য -1। সেট কপিরলোকল = মিথ্যা স্থাপনের সময় বিভিন্ন সমস্যার কারণ হতে পারে। আমার ব্লগ পোস্টটি "স্থানীয় লোকের অনুলিপি করুন" প্রকল্পের রেফারেন্সগুলি মিথ্যা হিসাবে বদলান না দেখুন, যদি না অনুমানগুলি বোঝেন "" ( geewwithblogs.net/mnf/archive/2012/12/09/… )
মাইকেল ফ্রেইজিম

"এক আউটপুট ফোল্ডারে বিল্ড করা" একাধিক থ্রেড সংকলন করার সময় সমস্যার কারণ হতে পারে?
ব্রুনোএলএম

9

স্টাফগুলিকে সংগঠিত করতে সহায়তা ফোল্ডারগুলির ছাড়াই ব্যবহারের জন্য +1 ।

প্রকল্পের নিজস্ব ফোল্ডারে বিল্ডিংয়ের জন্য +1। আমরা প্রথমে একটি সাধারণ আউটপুট ফোল্ডার চেষ্টা করেছি এবং এটি অতিক্রান্ত উল্লেখগুলি খুঁজে পেতে সূক্ষ্ম এবং বেদনাদায়ক হতে পারে।

এফডব্লিউআইডাব্লু, আমরা সমাধানগুলির জন্য প্রকল্পের রেফারেন্স ব্যবহার করি এবং যদিও বর্তমানে নিউট সম্ভবত একটি সেরা পছন্দ, তৃতীয় পক্ষ এবং (ফ্রেমের কাঠামোর ধরণের) উভয় গৃহের সমাবেশগুলির জন্য ভালভাবে কাজ করার জন্য এসএনএন: বহিরাগতদের খুঁজে পেয়েছে। এসএনএন রেফারেন্স করার সময় কেবল হেডের পরিবর্তে একটি নির্দিষ্ট সংশোধন নম্বর ব্যবহার করার অভ্যাসে প্রবেশ করুন: বাহ্যিক (চার্জ হিসাবে দোষী :)


4
+1 সাধারণ আউটপুট ফোল্ডার সমাধানে আমারও সমস্যা আছে। "সমাধানগুলির জন্য প্রকল্প রেফারেন্স" এর অর্থ আমি বুঝতে পারি নি, দয়া করে আরও কিছুটা ব্যাখ্যা করুন ...
মরিসিও শেফার

যেমনটি আমরা ভিএস-> যোগ করুন রেফারেন্স-> প্রকল্পগুলি, ভিএস-> রেফারেন্স যুক্ত করুন>> ব্রাউজ এর পরিবর্তে ব্যবহার করুন। ছোট পয়েন্টটি আমি জানি তবে কিছু লোকেরা এটি আলাদাভাবে করেন (এবং আমি মনে করি এটি আরও বেশি মাথা ব্যথার কারণ করে)। আপনি যদি এমএসবিল্ড সিএসপ্রোজ পাঠ্যের দিকে নজর দেন তবে আপনি রেফারেন্সের পরিবর্তে প্রকল্পের রেফারেন্স সম্পত্তি দেখতে পাবেন।
si618

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

হ্যাঁ, সাধারণ আউটপুট ডিরেক্টরিটি প্রচুর ব্যথার দিকে পরিচালিত করে, বিশেষত যখন পুনঃশির্পার ব্যবহার করে। প্রকৃতপক্ষে তারিখ উল্লেখের বাইরে।
ফ্লোরিয়ান ডায়ন

4
কেভিন, এটি এখন বেশ কয়েক বছর, কিন্তু স্মৃতি থেকে একটি উদাহরণ দুটি প্রকল্প একই সমাবেশকে উল্লেখ করে বলেছে যে একটি বহিরাগত গ্রন্থাগার যা প্রকল্পের রেফারেন্স নেই। সমস্ত ঠিক আছে যখন তারা একই সংস্করণে থাকে, তবে এই লাইব্রেরির একটি নতুন প্রকাশ প্রকাশিত হয় তবে কেবলমাত্র একটি প্রকল্প তাদের রেফারেন্স আপডেট করে, সাধারণ আউটপুট ফোল্ডারে কোন সংস্করণ ব্যবহৃত হয়?
si618

8

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


4
এটি লক্ষণীয় যে কোনও প্রকল্পটি আনলোড করা প্রতি ব্যবহারকারী সেটিংস, সুতরাং আপনার দলের বিকাশকারীরা কেবল তাদের যত্ন নেওয়া প্রকল্পগুলিই লোড করতে পারে। এটি আমাদের দলকে সত্যই সাহায্য করতে সাহায্য করেছে।
পৃষ্ঠা 12

ডিফল্টরূপে কী লোড করবেন না তা সংজ্ঞায়িত করতে আপনি সলিউশন লোড ম্যানেজার এক্সটেনশন ভিজুয়ালস্টুডিওলারি.এমএসএনএন.মাইক্রোসফটকম ব্যবহার করতে পারেন
মাইকেল ফ্রেইজিম

6

আমাদের একই ধরণের সমস্যা রয়েছে কারণ আমাদের সাথে মোকাবিলা করার জন্য 109 টি পৃথক প্রকল্প রয়েছে। আমাদের অভিজ্ঞতার ভিত্তিতে মূল প্রশ্নের উত্তর দিতে:

1. আপনি কীভাবে প্রকল্পগুলির মধ্যে উল্লেখগুলি পরিচালনা করতে পারেন

আমরা 'অ্যাড রেফারেন্স' কনটেক্সট মেনু বিকল্পটি ব্যবহার করি। যদি 'প্রকল্প' নির্বাচিত হয়, তবে আমাদের একক, গ্লোবাল সলিউশন ফাইলে ডিফল্টরূপে নির্ভরতা যুক্ত করা হয়।

২. "স্থানীয় অনুলিপি" চালু বা বন্ধ থাকা উচিত?

আমাদের অভিজ্ঞতা বন্ধ। অতিরিক্ত অনুলিপি কেবল বিল্ড টাইমগুলিতে যুক্ত করে।

৩. প্রতিটি প্রকল্পের নিজস্ব ফোল্ডারটি তৈরি করা উচিত, বা সেগুলি সমস্ত একই আউটপুট ফোল্ডারে নির্মিত উচিত (এগুলি সমস্ত একই অ্যাপ্লিকেশনের অংশ)

আমাদের সমস্ত আউটপুটকে 'বিন' নামে একটি একক ফোল্ডারে রাখা হয়। এই ফোল্ডারটি যখন সফ্টওয়্যারটি মোতায়েন করা হয় ঠিক একইরকম ধারণা। এটি বিকাশকারী সেটআপ স্থাপনের সেটআপ থেকে পৃথক হলে সমস্যাগুলি প্রতিরোধ করে।

4. সমাধানগুলি ফোল্ডারগুলি স্টাফগুলি সংগঠিত করার একটি ভাল উপায়?

আমাদের অভিজ্ঞতা নেই। এক ব্যক্তির ফোল্ডার কাঠামো অন্যের দুঃস্বপ্ন। গভীরভাবে নেস্ট করা ফোল্ডারগুলি কিছু খুঁজে পেতে কেবল সময় বাড়ায়। আমাদের একটি সম্পূর্ণ সমতল কাঠামো আছে তবে আমাদের প্রকল্পের ফাইলগুলি, সমাবেশগুলি এবং নেমস্পেসগুলির নাম একই রাখুন।


প্রকল্পের কাঠামোগত করার আমাদের উপায় একক সমাধান ফাইলের উপর নির্ভর করে। প্রকল্পগুলি নিজেরাই পরিবর্তন না করে থাকলেও এটি নির্মাণে দীর্ঘ সময় লাগে। এটির সহায়তার জন্য, আমরা সাধারণত অন্য একটি 'বর্তমান ওয়ার্কিং সেট' সমাধান ফাইল তৈরি করি। যে প্রকল্পগুলিতে আমরা কাজ করছি তা এতে যুক্ত হবে। বিল্ড সময়গুলি ব্যাপকভাবে উন্নত হয়, যদিও আমরা দেখেছি একটি সমস্যা হ'ল ইন্টেলিসেন্স বর্তমান সেটে নয় এমন প্রকল্পগুলিতে সংজ্ঞায়িত প্রকারের জন্য ব্যর্থ হয়।

আমাদের সমাধান বিন্যাসের একটি আংশিক উদাহরণ:

\bin

OurStuff.SLN

OurStuff.App.Administrator
OurStuff.App.Common
OurStuff.App.Installer.Database
OurStuff.App.MediaPlayer
OurStuff.App.Operator
OurStuff.App.Service.Gateway
OurStuff.App.Service.CollectionStation
OurStuff.App.ServiceLocalLauncher
OurStuff.App.StackTester
OurStuff.Auditing
OurStuff.Data
OurStuff.Database
OurStuff.Database.Constants
OurStuff.Database.ObjectModel
OurStuff.Device
OurStuff.Device.Messaging
OurStuff.Diagnostics
...
[etc]

"এক আউটপুট ফোল্ডারে বিল্ড করা" একাধিক থ্রেড সংকলন করার সময় সমস্যার কারণ হতে পারে?
ব্রুনোএলএম

4

আমরা এখানে একটি অনুরূপ বৃহত প্রকল্পে কাজ করি। সলিউশন ফোল্ডারগুলি জিনিসগুলি সংগঠিত করার একটি ভাল উপায় হিসাবে প্রমাণিত হয়েছে এবং আমরা কেবল স্থানীয় অনুলিপিটিকে সত্য হিসাবে ছেড়ে যেতে চাইছি। প্রতিটি প্রকল্প তার নিজস্ব ফোল্ডারে তৈরি করে এবং তারপরে আমরা সেখানে প্রতিটি স্থাপনযোগ্য প্রকল্পের জন্য জানি আমাদের জায়গায় বাইনারিগুলির সঠিক উপসেট রয়েছে।

সময় খোলার এবং সময় গঠনের জন্য, এটি ছোট সমাধানগুলিতে না ভেঙে ফিক্স করা শক্ত হতে চলেছে। আপনি এখানে গতি উন্নতির জন্য বিল্ডটির সমান্তরাল (গুগল "সমান্তরাল এমএস বিল্ড" এবং ইউআইতে সংহত করার উপায় অনুসন্ধান করতে পারেন)। এছাড়াও, নকশাটি দেখুন এবং দেখুন আপনার কিছু প্রকল্পের রিফ্যাক্টরিংয়ের ফলে সামগ্রিকভাবে কম সহায়তা হতে পারে।


3

বিল্ডিংয়ের ব্যথা কমানোর শর্তাবলী, আপনি নির্দিষ্ট প্রকল্পগুলির বিল্ডিং সক্ষম বা অক্ষম করার জন্য বিল্ডগুলির জন্য "কনফিগারেশন ম্যানেজার ..." বিকল্পটি ব্যবহার করতে পারেন। আপনার কাছে একটি "প্রকল্প [এন] বিল্ড" থাকতে পারে যা নির্দিষ্ট প্রকল্পগুলি বাদ দিতে পারে এবং আপনি নির্দিষ্ট প্রকল্পগুলিকে টার্গেট করতে গিয়ে তা ব্যবহার করতে পারেন।

100+ প্রকল্প যতদূর যায়, আমি জানি যে আপনার সমাধানের আকারটি কেটে নেওয়ার সুবিধা সম্পর্কে আপনি এই প্রশ্নে হাতছাড়া করতে চান না, তবে আমি মনে করি যখন লোড সময় দ্রুত করার ক্ষেত্রে আপনার কাছে অন্য কোনও বিকল্প নেই (এবং স্মৃতি ব্যবহার) দেবেনভের


এইচএম, এটি কি ভুল হওয়ার কারণে অবহেলিত ছিল, নাকি কেবল মতবিরোধের জন্য? আপনি যদি আমাকে বলতে পারেন তবে আমি প্রাক্তনের সাথে থাকতে পারি।
মাইকেল Meadows

রাজি হয়েছি, আমি কোনও মন্তব্য ছাড়াই ডাউনবোটিং পছন্দ করি না, সুতরাং মাইকেল আপনি সমীকরণটি সামঞ্জস্য করতে আমার +1 পান ;-)
si618

4
বিটিডব্লিউ, আমি ব্যক্তিগতভাবে এই ধরণের জিনিসটির জন্য কনফিগারেশন ম্যানেজমেন্টের সাথে ঘাটতি পছন্দ করি না। কেন? কারণ যদি আপনি দুর্ঘটনাক্রমে আপনার পরিবর্তিত কনফিগারেশনটি প্রতিশ্রুতিবদ্ধ হন তবে আপনার বিল্ড সার্ভার বা অন্যান্য বিকাশকারীরা প্রভাবিত হবে।
si618

রাজি। আসলে একই সমস্যাটি অনেকগুলি প্রকল্পের সমাধানের সাথে প্রযোজ্য। :)
মাইকেল Meadows

3

আমি সাধারণত এটি দিয়ে যা করি তা "ডিবাগ" প্রক্রিয়াটি আসলে কীভাবে ঘটে তার উপর কিছুটা নির্ভর করে। সাধারণত যদিও আমি স্থানীয়ভাবে অনুলিপি সেট না করি। আমি প্রতিটি প্রকল্পের জন্য বিল্ড ডিরেক্টরিটি সেট আপ করে কাঙ্ক্ষিত শেষ বিন্দুতে সবকিছু আউটপুট করি।

সুতরাং প্রতিটি বিল্ডের পরে আমার কাছে সমস্ত ডিএল এবং কোনও উইন্ডোজ / ওয়েব অ্যাপ্লিকেশন সহ একটি পপুলেটেড ফোল্ডার রয়েছে এবং সমস্ত আইটেম সঠিক স্থানে রয়েছে। Dll এর শেষের দিকে সঠিক জায়গায় আসার পরে স্থানীয় অনুলিপিটির প্রয়োজন ছিল না।

বিঃদ্রঃ

উপরেরগুলি আমার সমাধানগুলির জন্য কাজ করে, যা সাধারণত ওয়েব অ্যাপ্লিকেশন এবং রেফারেন্স সহ আমি কোনও সমস্যা अनुभव করি না, তবে এটি সম্ভবত সম্ভব!


3

আমাদের একই সমস্যা আছে। আমরা ছোট সমাধান ব্যবহার করে এটি সমাধান করি। আমাদের কাছে একটি মাস্টার সলিউশন রয়েছে যা সবকিছু খুলে দেয়। তবে পারফেক্ট। যে খারাপ। সুতরাং, আমরা বিকাশকারী ধরণের মাধ্যমে আরও ছোট ছোট সমাধানগুলি ভাগ করি। সুতরাং, ডিবি বিকাশকারীদের একটি সমাধান রয়েছে যা তাদের যত্ন নেওয়া প্রকল্পগুলি, পরিষেবা বিকাশকারী এবং ইউআই বিকাশকারীদের একই জিনিস লোড করে। এটি খুব বিরল যখন কোনও ব্যক্তিকে প্রতিদিনের ভিত্তিতে যা করা প্রয়োজন তা পেতে সম্পূর্ণ সমাধানটি খুলতে হবে। এটি কোনও রোগ নিরাময়ের নয় - এর উত্স এবং ডাউনসাইড রয়েছে। এই নিবন্ধে "মাল্টি-সলিউশন মডেল" দেখুন (ভিএসএস ব্যবহার সম্পর্কে অংশটি উপেক্ষা করুন :)


2

আমি মনে করি সমাধানগুলি সহ এই সর্বোত্তম অনুশীলনটি তাদের ভেঙে ফেলা উচিত। সমস্যার সমাধানের জন্য প্রয়োজনীয় প্রকল্প এবং সম্ভবত অন্যান্য টুকরো একত্রিত করার জন্য আপনি "সমাধান "টিকে জায়গা হিসাবে ভাবতে পারেন। সামগ্রিক সমস্যার একাংশের জন্য সমাধান বিকাশের জন্য বিশেষত একাধিক সমাধানগুলিতে 100+ প্রকল্পগুলি ভেঙে আপনি প্রয়োজনীয় প্রকল্পগুলির সাথে আপনার মিথস্ক্রিয়াটি গতিবদ্ধ করে এবং সমস্যার ডোমেন সরল করে সেখানে একটি নির্দিষ্ট সময়ে কম মোকাবেলা করতে পারেন।

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

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

আমি এটি একটি সেরা অনুশীলন বলে মনে করি কারণ আপনি যখন শারীরিকভাবে এইভাবে এটি ভেঙে ফেলেন তখন সামগ্রিক প্রচেষ্টা কতটা জটিল হতে পারে তার সীমাবদ্ধতা নেই। সমস্ত প্রকল্পকে একটি একক সমাধানে রেখে দেওয়া শেষ পর্যন্ত একটি উচ্চতর সীমাতে পৌঁছে যাবে।

আশা করি এই তথ্য সাহায্য করবে।


2

আমাদের প্রায় 60+ প্রকল্প রয়েছে এবং আমরা সমাধান ফাইলগুলি ব্যবহার করি না। আমাদের সি # এবং ভিবি.নেট প্রকল্পের মিশ্রণ রয়েছে। অভিনয় সর্বদা একটি ইস্যু ছিল। আমরা একই সাথে সমস্ত প্রকল্পে কাজ করি না। প্রতিটি বিকাশকারী তারা যে প্রকল্পগুলিতে কাজ করছেন তার উপর ভিত্তি করে তাদের নিজস্ব সমাধান ফাইলগুলি তৈরি করে। সমাধান ফাইলগুলি আমাদের উত্স নিয়ন্ত্রণে পরীক্ষা করে না।

সমস্ত শ্রেণীর গ্রন্থাগার প্রকল্পগুলি উত্স ডিরেক্টরিটির মূলটিতে একটি কমনবিন ফোল্ডার তৈরি করবে। এক্সিকিউটেবল / ওয়েব প্রকল্পগুলি তাদের পৃথক ফোল্ডারে তৈরি করে।

আমরা প্রকল্প রেফারেন্স ব্যবহার করি না, পরিবর্তে কমনবিন ফোল্ডার থেকে ফাইল ভিত্তিক রেফারেন্স ব্যবহার করি। আমি একটি কাস্টম এমএসবিল্ড টাস্ক লিখেছি যা প্রকল্পগুলি পরিদর্শন করবে এবং বিল্ড অর্ডার নির্ধারণ করবে।

আমরা এখন কয়েক বছর ধরে এটি ব্যবহার করে আসছি এবং কোনও অভিযোগ নেই।


4
আপনার কাস্টম এমএসবিল্ড টাস্কটি ভাগ করে নিতে কি আপত্তি হবে?
Andreapier

0

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

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

আমার পরামর্শটি এটি করা এবং একটি কেন্দ্রিয় কাঠামো বিকাশ করা (আপনার যদি এন্টারপ্রাইজ লাইব্রেরির নিজস্ব বাস্তবায়ন হয় তবে) develop আপনি এটি ভাগ করতে জিএসি করতে পারেন বা আপনি সরাসরি ফাইলের অবস্থানটি উল্লেখ করতে পারেন যাতে আপনার একটি কেন্দ্রীয় স্টোর থাকে। আপনি কেন্দ্রীভূত ব্যবসায়িক সামগ্রীর জন্য একই কৌশল ব্যবহার করতে পারেন।

আপনি যদি সরাসরি ডিএলএল রেফারেন্স করতে চান তবে আপনার প্রকল্পে এটি স্থানীয় কপির সাথে অনুলিপি করতে চাইবেন (কোথাও সি: \ মাইকম্পানি \ বিন \ মাইকম্পানি.ডিল) reference একটি রানটাইম আপনাকে GAC বা রানটাইম বিনে নয় এমন কোনও ফাইল রেফারেন্স করতে আপনার app.config বা web.config এ কিছু সেটিংস যুক্ত করতে হবে। সমস্ত বাস্তবতার ক্ষেত্রে এটি স্থানীয় স্থানীয় অনুলিপি করা বা না, বা dll বিনের মধ্যে শেষ হয় বা এমনকি জিএসি-তে থাকে তা বিবেচনাধীন নয় কারণ কনফিগারেশনটি উভয়টিকেই ওভাররাইড করবে। আমি মনে করি স্থানীয় কপি করা এবং একটি অগোছালো সিস্টেম থাকা খারাপ অভ্যাস। যদিও আপনাকে সেইসব অ্যাসেম্বলির মধ্যে কোনওটিতেই যদি ডিবাগ করতে হয় তবে আপনাকে সম্ভবত অস্থায়ীভাবে স্থানীয় অনুলিপি করতে হবে।

আপনি কীভাবে জিএসি ছাড়াই বিশ্বব্যাপী ডিএলএল ব্যবহার করবেন সে সম্পর্কে আমার নিবন্ধটি পড়তে পারেন। আমি জিএসিটিকে বেশিরভাগ ক্ষেত্রেই অপছন্দ করি কারণ এটি এক্সকপি স্থাপনাকে বাধা দেয় এবং অ্যাপ্লিকেশনগুলিতে একটি স্বতঃস্বত্ব শুরু করে না।

http://nbaked.wordpress.com/2010/03/28/gac-al متبادل/


0

কপিলোকল সেট করুন = মিথ্যা নির্মানের সময় কমিয়ে দেবে, তবে স্থাপনার সময় বিভিন্ন সমস্যার কারণ হতে পারে।

অনেকগুলি পরিস্থিতি রয়েছে, যখন আপনার কপিরাইট লোকাল থাকতে হবে 'বাম থেকে সত্য' উদাহরণস্বরূপ শীর্ষ স্তরের প্রকল্পগুলি, দ্বিতীয় স্তরের নির্ভরতা, প্রতিচ্ছবি দ্বারা ডেকে নেওয়া ডিএলএল।

কপিলোকল = মিথ্যা সেট করার সাথে আমার অভিজ্ঞতা সফল হয়নি। আমার ব্লগ পোস্টে প্রো এবং কনসগুলির সংক্ষিপ্তসারটি দেখুন "স্থানীয় স্থানীয় অনুলিপি করুন" প্রকল্পের রেফারেন্সগুলি মিথ্যা হিসাবে পরিবর্তন করবেন না, যদি না অনুজাগতগুলি না বুঝেন। "

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.