2009-06-24 11 views
7

क्या वीएस के पास मौजूदा समाधान के पथ के लिए पर्यावरण चर है?विजुअल स्टूडियो समाधान पथ पर्यावरण चर

उदाहरण के लिए, "% PathToWebRoot%" है जो आम तौर पर आपके वीएस प्रोजेक्ट निर्देशिका में "वेबसाइट्स" निर्देशिका पर सेट होता है। इसका मूल्य किसी भी तरीके से बदला जा सकता है। मैं सोच रहा हूं कि कोई वैरिएबल है जो प्रत्येक बार जब आप रूट को इंगित करने के लिए समाधान लोड करते हैं तो बदल जाता है।

मैं यूनिट परीक्षण बना रहा हूं जो संभावित रूप से विभिन्न मशीनों पर चलेंगे और विधि से पहले सेट करने के लिए आपको दिशानिर्देशों में से एक AspNetDevelopmentServerHost है। यह सलाह दी जाती है कि उन्हें कड़ी मेहनत न करें, लेकिन निश्चित रूप से अनुशंसित पर्यावरण चर आवश्यक नहीं है कि आपकी साइट कहां होगी और इस मामले में नहीं है।

उत्तर

13

वीएस में बहुत सारे मैक्रो चर हैं जो से वीएस के भीतर काम करते हैं। वह जो आपको समाधान के लिए पूरा मार्ग देता है उसे $(SolutionDir) कहा जाता है। हालांकि, यह प्री-एंड पोस्ट-बिल्ड इवेंट्स (और, AFAIK, समाधान की एमएसबिल्ड फ़ाइल में) से काम करता है, यह पर्यावरण परिवर्तनीय नहीं है। यदि आप इसके बारे में सोचते हैं, तो आपके पास एक (वैश्विक) पर्यावरण चर नहीं हो सकता है जो "वर्तमान समाधान के पथ" को इंगित करता है, क्योंकि आपके पास VS के एक से अधिक उदाहरण हो सकते हैं।

आपके यूनिट परीक्षण ढांचे के आधार पर, आप अक्सर वर्तमान निर्देशिका प्राप्त करने के लिए इसके निष्पादन संदर्भ के बारे में पूछ सकते हैं। यह आपको समाधान पथ नहीं दे सकता है, हालांकि ...

+0

यह सच है, भले ही वी.एस. की वर्तमान उदाहरण बदल यह यह है मिलान करने के लिए:

बल्कि समाधान फ़ाइल का पथ से समाधान के फ़ोल्डर पाने के लिए, मैं डॉस बैच स्क्रिप्ट जादू का एक सा इस्तेमाल किया सेटिंग्स, जो किसी भी अन्य उदाहरण को खराब कर देगा। मैं $ (सॉल्यूशनपैथ) को एक कोशिश, यूनिट परीक्षणों को वीएस के अंदर से चलाऊंगा ताकि मुझे जो चाहिए वह हो। – Otis

+0

एक आकर्षण की तरह काम किया, धन्यवाद। क्या आपको लगता है कि विकास सर्वर के वर्तमान बंदरगाह को समझने के लिए कोई नहीं है? – Otis

+0

जिस तरह से मैं आमतौर पर इन मैक्रोज़ के नामों को ढूंढता हूं वह प्रोजेक्ट की प्रॉपर्टी खोलकर और बिल्ड इवेंट्स टैब पर जाकर होता है। यदि आप ऐसा करते हैं और संपादन बटन में से किसी एक पर क्लिक करते हैं, तो आपको मैक्रोज़ बटन के साथ (अन्य चीजों के साथ) एक संवाद मिलेगा। इस बटन पर क्लिक करने से आपको अपनी परियोजना के लिए उपलब्ध सभी मैक्रो वैरिएबल की एक सूची मिल जाएगी।मेरे पास एक वेब प्रोजेक्ट आसान नहीं है, इसलिए मैं इसे आपके लिए नहीं देख सकता, लेकिन क्लास लाइब्रेरी में निश्चित रूप से कोई पोर्ट नंबर नहीं है, मैं वर्तमान में निरीक्षण कर रहा हूं ... –

5

विजुअल स्टूडियो समाधान पथ के लिए एक पर्यावरण चर का खुलासा करता है - इसे SolutionPath कहा जाता है। यह इस तरह दिखता है: महत्वपूर्ण बात

SolutionPath=D:\Team\MyProject\main-branch\MyProject.sln

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

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

मेरे विशेष मामले में, मुझे अपने समाधान के भीतर एक निर्देशिका प्राप्त करने की आवश्यकता थी और मेरे पास कोड के कुछ शाखाएं समान स्तर पर थीं। लेकिन मेरी बैच स्क्रिप्ट स्रोत पेड़ में उच्च स्तर पर थी और इसका 'वर्तमान' शाखा निर्धारित करने का कोई आसान तरीका नहीं था। उदाहरण के लिए, यह मेरा संरचना था:

D:\Team\MyProject\ 
    L-- Build 
     L-- MyBatchScript.bat 
    L-- main-branch 
     |-- MyProject.sln 
     L-- important-folder 
    L-- dev-branch 
     |-- MyProject.sln 
     L-- important-folder 

मैं प्रत्येक समाधान में एक समाधान आइटम के रूप में MyBatchScript.bat संदर्भित तो मैं उस पर डबल क्लिक करके इसे लॉन्च कर सकता है।

FOR %%d IN (%SolutionPath%) DO SET SolutionFolder=%%~dpd 
REM Now I can run a tool with the correct folder 
mycustomtool.exe %SolutionFolder%important-folder 
संबंधित मुद्दे