"सेट के रूप में सेट करें" विकल्प को सू फाइल में संग्रहीत क्यों किया गया है और स्लेन फाइल नहीं है?


175

ऐसा लगता है कि इस सेटिंग को समाधान फ़ाइल में संग्रहीत किया जाना चाहिए ताकि यह सभी उपयोगकर्ताओं और स्रोत कोड नियंत्रण के हिस्से में साझा हो। चूंकि हम सू फाइल में जांच नहीं करते हैं, प्रत्येक उपयोगकर्ता को इसे अलग से सेट करना होगा जो अजीब लगता है।

जवाबों:


46

यह एक गैर-उपयोगकर्ता-विशिष्ट प्राथमिकता क्यों होनी चाहिए?

अगर मुझे 10 फ़ाइलों के साथ एक समाधान मिला है, और एक डेवलपर मुख्य रूप से उन उपकरणों में से एक का परीक्षण / उपयोग कर रहा है, तो मुझे जो भी शुरू करना है, उसे क्यों प्रभावित करना चाहिए?

मुझे लगता है कि एमएस ने इस पर सही चुनाव किया। मैं जिस परियोजना को शुरू करना चाहता हूं , वह उस परियोजना से दूर है जो अन्य डेवलपर्स शुरू करना चाहते हैं।


133
अक्सर, आपके पास एक ऐसी परियोजना होगी जो डिबगिंग (जैसे वेबसाइट) के लिए अधिकांश लोगों की वांछित स्टार्टअप परियोजना होने की संभावना है, और आप एक स्टार्टअप परियोजना के रूप में एक क्लास लाइब्रेरी नहीं चाहते हैं। मैं यह नहीं देखता कि एमएस एक उचित तंत्र क्यों नहीं प्रदान कर सकता (न कि हैक की तरह प्रतीत होता है, यानी वैश्विक डिफ़ॉल्ट स्टार्टअप परियोजना की स्थापना के लिए डिफ़ॉल्ट को .sln फ़ाइल में शीर्ष पर रखना) और फिर अनुमति देना। वांछित होने पर इसे ओवरराइड करने के लिए मुकदमा करें।
Jez

27
बोलने के तरीके में है ... उस परियोजना को स्थानांतरित करें जिसे आप डिफ़ॉल्ट स्टार्ट अप परियोजना के रूप में सेट करना चाहते हैं, जो स्लन फ़ाइल में पहली परियोजना है। अपनी सू फाइल को डिलीट करें, सॉल्यूशन और वोइला को फिर से खोलें, पहला प्रोजेक्ट स्टार्टअप होना चाहिए। ऐसे अन्य कारक भी हो सकते हैं जो इसमें योगदान करते हैं, लेकिन मुझे यह तब मिला जब मैंने देखा कि एक विशेष रूप से परियोजना जब मैं स्रोत नियंत्रण से एक स्वच्छ परियोजना की जांच कर रहा था तो डिफ़ॉल्ट रूप से रखा गया था।
मिस्टरएडान

2
बिल्ड सर्वर का उपयोग करते समय यह एक समस्या है क्योंकि इसे सही स्टार्टअप प्रोजेक्ट को सेट करने के लिए संस्करण नियंत्रण में सू की जाँच करना होगा और संस्करण नियंत्रण में सू की जाँच करना एक बुरा विचार है।
अंकनकॉक

2
@markhancock: एक बिल्ड सर्वर स्टार्टअप प्रोजेक्ट के बारे में क्यों ध्यान रखेगा? मैंने उस मुद्दे के रूप में कभी नहीं देखा।
जॉन स्कीट

18
मुझे क्षमा करें, जॉन, लेकिन मैं आपको यहां -1 देने जा रहा हूं। मैं एक आस्तिक हूं कि देवों में कोड डाउनलोड करने और फिर F5 हिट करने की क्षमता होनी चाहिए, जिससे निर्माण और शुरू करने के लिए सबसे सामान्य विकास सेटअप की उम्मीद होती है। बेशक, आपके पास व्यक्तिगत परिस्थितियों के लिए अपने स्टार्टअप को दर्जी करने की क्षमता होनी चाहिए, लेकिन हमें अधिकांश उपयोगकर्ताओं के लिए डिफ़ॉल्ट सेट करने में सक्षम होना चाहिए, जैसा कि ऊपर कहा गया है। ओलिवर का जवाब ऐसा करने के लिए किसी तरह से जाना लगता है, हालांकि ऐसा लगता है कि कई स्टार्ट-अप प्रोजेक्ट स्रोत नियंत्रण में जांचना असंभव होगा, जो एक शर्म की बात है।
स्टीफन होल्ट

376

यह पूरी तरह से आवश्यक है कि हर कोई अपने स्टार्टअप प्रोजेक्ट को स्वयं परिभाषित कर सके, जैसा कि जॉन ने पहले ही कहा है । लेकिन एक समर्पित डिफ़ॉल्ट होना बहुत अच्छा होगा, और जैसा कि मैं बता सकता हूं, यह संभव है!

यदि आपके पास अपनी समाधान निर्देशिका में .suo फ़ाइल नहीं है, तो Visual Studio आपकी .sln फ़ाइल में डिफ़ॉल्ट स्टार्टअप प्रोजेक्ट के रूप में पहला प्रोजेक्ट चुनता है।

  1. अपना विज़ुअल स्टूडियो बंद करें और अपने पसंदीदा टेक्स्ट एडिटर में .sln फ़ाइल खोलें। पंक्ति 4 में शुरू होने पर, आप अपनी सभी परियोजनाओं को इन Project- EndProjectलाइन लाइनों में संक्षिप्त रूप से देखते हैं।

  2. वांछित डिफ़ॉल्ट स्टार्टअप प्रोजेक्ट को शीर्ष स्थिति में काटें और पेस्ट करें।

  3. अपनी .suo फ़ाइल को हटाएँ।

  4. Visual Studio में अपना समाधान खोलें। ता दा!

क्या कोई विशेष पुरस्कार है यदि आप कुछ जानते हैं जो जॉन को नहीं पता है? ;-)


1
अंत में! यह मुझे लंबे समय से परेशान कर रहा है, लेकिन अब और नहीं!
Tkanks

4
यह केवल समाधान फ़ोल्डर में नहीं होने पर काम करने लगता है: मेरा मतलब है कि यह ट्रिक रूट प्रोजेक्ट्स के लिए काम करती है, मेरे अनुभव से मेरे पास कुछ समाधान हैं।
जद्दन

25
वाह! आप स्कीट जॉन! :))
आंद्रेई रेनिया

3
क्या होगा अगर दो डिफ़ॉल्ट परियोजनाएं हैं - मैं उन दोनों को डिफ़ॉल्ट रूप से कैसे शुरू कर सकता हूं?
एमी बी

6
@ ओलिवर: राइट-क्लिक समाधान -> स्टार्टअप प्रोजेक्ट सेट करें ... -> मल्टीपल स्टार्टअप प्रोजेक्ट। एक क्लिक से कई शुरू होते हैं।
एंटन

46

ज्यादातर मामलों में, यह करता है मतलब इस पर एक डिफ़ॉल्ट है।

डिफ़ॉल्ट स्टार्टअप प्रोजेक्ट को समायोजित करना और इसे .sln फ़ाइल में संग्रहीत करना बेहतर होगा, लेकिन जिसे किसी डेवलपर द्वारा उनके .so फ़ाइल में ओवरराइड किया जा सकता है। यदि स्टार्टअप सेटिंग .suo फ़ाइल में नहीं मिली है, तो .ll में डिफ़ॉल्ट स्टार्टअप प्रोजेक्ट का उपयोग किया जाएगा।

दरअसल, विजुअल स्टूडियो के यूजरवॉइस पर यह सुझाव दिया गया है


लिंक किया गया UserVoice "वोटिंग के लिए बंद" है लेकिन कोई टिप्पणी क्यों नहीं की गई।
यज़्गोर

यह निश्चित रूप से स्वीकृत उत्तर की तुलना में बेहतर रुख है। मैंने एक बार एक टीम के भीतर काम नहीं किया है जो इसे प्रति उपयोगकर्ता के आधार पर सेट करने के लिए एक फायदा मानता है। यह सिर्फ ताजा क्लोन आदि पर अतिरिक्त सेटअप की ओर जाता है
ट्रेवर रीड

3

मैंने Windows के लिए एक छोटी कमांड लाइन उपयोगिता लिखी है slnStartupProjectजो स्टार्टअप प्रोजेक्ट को स्वचालित रूप से सेट करने के लिए कहा जाता है:

slnStartupProject slnFilename projectName

मैं व्यक्तिगत रूप से इसका उपयोग cmake के साथ समाधान तैयार करने के बाद स्टार्टअप प्रोजेक्ट को सेट करने के लिए करता हूं जो हमेशा ALL_BUILDसमाधान में पहली परियोजना के रूप में एक डमी प्रोजेक्ट सेट करता है ।

स्रोत GitHub पर है। कांटे और प्रतिक्रिया का स्वागत है।


इसके लिए धन्यवाद! मुझे वास्तव में cmake के साथ यह समस्या आ रही थी और आपकी उपयोगिता बहुत बढ़िया है!
सिप्पा

1
आपका स्वागत है! इससे पहले कि मुझे अच्छे के लिए हल करने का फैसला करने से पहले यह मुझे मदद करता है क्योंकि यह मुझे सालों से परेशान कर रहा है। वास्तव में यह मत समझिए कि लोगों के पास इस बारे में दार्शनिक झगड़े क्यों हैं जबकि यह ज्यादातर मामलों में स्पष्ट रूप से उपयोगी है।
michaK

तुम .. रुको… क्या? - आप अपने .sln फ़ाइल को मैन्युअल रूप से जनरेट करते हैं? ... यह कैसा मायाजाल है?
BrainSlugs83

3

यदि आप जीआईटी का उपयोग कर रहे हैं, तो आप डिफ़ॉल्ट एसयूओ फाइल कर सकते हैं और फिर इसे अपरिवर्तित उपयोग के रूप में चिह्नित कर सकते हैं

git update-index --assume-unchanged YourSolution.suo

यदि आप अपने डिफ़ॉल्ट स्टार्ट ग्रुप में एक से अधिक प्रोजेक्ट रखना चाहते हैं तो भी यह काम करता है। एकमात्र नुकसान जो मुझे पता है, वह यह है कि यह कमांड उन सभी लोगों द्वारा चलाया जाना चाहिए जो SUO फ़ाइल नहीं बनाना चाहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.