8

मैं सोच रहा था कि विजुअल स्टूडियो 2008 के भीतर इसे डिबग करते समय मेरे कोड को पूरी तरह लॉक करने का कोई तरीका था या नहीं। 64 बिट अनुप्रयोगों के रूप में चलते समय कोड दस्तावेज़ स्वचालित रूप से लॉक होते हैं, जिन्हें मैं बहुत पसंद करता हूं; हालांकि, मैं Excel के लिए अपने कोडिंग बनाने के अधिकांश ऐड-इन्स करता हूं, जो कि 32 बिट है। परिणाम यह है कि भले ही मैं 'AnyCPU' को लक्षित करता हूं, वीएस होस्ट जानता है कि यह 32 बिट प्रक्रिया के भीतर चल रहा है और इसलिए, स्रोत कोड लॉक किया गया है जबकि कोड विजुअल स्टूडियो में होस्ट किया जा रहा है।* पूरी तरह से अक्षम * संपादित करें और जारी रखने का कोई तरीका है?

मैं टूल्स> विकल्प> डिबगिंग> संपादित और जारी रखने, और फिर 'सक्षम संपादन और जारी रखें' चेक बॉक्स को अनचेक करके संपादित और जारी कर सकता हूं। यह कोड को पूरी तरह से लॉक नहीं करता है, हालांकि। यह वर्तमान रन में कोड में किसी भी संपादन को निष्पादित करने से रोकता है, लेकिन यह वास्तव में कोड को बदलने से माउस क्लिक या कीस्ट्रोक को रोकता नहीं है।

फिर, 64 बिट अनुप्रयोगों के साथ काम करते समय यह नहीं होता - कोड पूरी तरह से बंद हो जाता है। मुझे बहुत पसंद करते हैं कोड पूरी तरह से कारणों में से कम से कम एक जोड़ी के लिए बंद किया जा करने के लिए:

  1. मैं गलती से एक कुंजी या जब डिबगिंग की तरह है, जो मैं निश्चित रूप से ऐसा करने के लिए नहीं करना चाहती हिट कर सकते हैं। यह दुर्लभ है, लेकिन यह एक मुद्दा है।

  2. मेरे कई स्वचालित परीक्षण SendKeys के माध्यम से उपयोगकर्ता इंटरफ़ेस को चलाते हैं। डीबगर का उपयोग करके इस तरह के एक परीक्षण के माध्यम से कदम उठाने पर, हालांकि, मैं कभी-कभी भूल सकता हूं कि कुछ पहलुओं में SendKeys शामिल है, जिसका अर्थ है कि कीस्ट्रोक एक्सेल के बजाय विजुअल स्टूडियो आईडीई पर भेजा जा रहा है।

मुद्दा # 2 में, ऊपर, इकाई परीक्षण विफल रहता है, ठीक है जो - मेरा बुरा - लेकिन सभी कोड मॉड्यूल के लिए भेजा कीस्ट्रोक्स होने और मेरे कोड को नष्ट पूरी तरह से अस्वीकार्य है।

क्या किसी के पास कोई विचार है? 32 बिट सीपीयू के खिलाफ संकलित करते समय विजुअल स्टूडियो में होस्ट किए जाने पर एक कोड को पूरी तरह से लॉक कर सकता है?

इस मुद्दे पर कुछ संबंधित पोस्ट, लेकिन जो में से कोई भी सीधे इस का पता:

कोई मदद या विचारों के लिए अग्रिम धन्यवाद ...

माइक

+0

ध्यान दें कि बाहरी सॉफ़्टवेयर से बात करने वाले यूनिट परीक्षण को एकीकरण परीक्षण कहा जाता है। –

+0

@Lasse: ठीक है, काफी उचित है। मैं ऊपर दिए गए "स्वचालित परीक्षण" कहने के लिए संपादित करूंगा, क्योंकि मैं पृथक इकाई परीक्षणों से एकीकरण परीक्षणों में भिन्न परीक्षणों का एक सूट चला रहा हूं। धन्यवाद। हालांकि इससे कोई फर्क नहीं पड़ता - यह SendKeys है जो समस्या है, इस पर ध्यान दिए बिना कि आप किस प्रकार के परीक्षण पर विचार करना चाहते हैं। –

उत्तर

3

यहां सबसे अच्छा है जिसके साथ मैं आ सकता हूं। यह काम करता है, लेकिन कुछ ऐसे कदम हैं जिन्हें आप नहीं लेना चाहते हैं।

अनिवार्य रूप से, तकनीक अपनी परियोजना केवल-पढ़ने के लिए जब आप आवेदन चलाने के लिए, और फिर उन्हें वापस सेट एक बार अपने आवेदन समाप्त होता है को लिखने योग्य करने की फ़ाइलों को स्थापित करने के लिए है।

हालांकि, VS2k8 में, डिफ़ॉल्ट रूप से, एक फ़ाइल की स्थापना केवल-पढ़ने के लिए अभी भी आप फ़ाइल को संपादित करने के लिए अनुमति देता है। टूल> विकल्प> पर्यावरण> दस्तावेज़ों में आपको "केवल-पढ़ने वाली फ़ाइलों के संपादन की अनुमति दें ..." सेटिंग को बंद करना होगा।

दूसरे, आप 1 के लिए एक DWORD के रूप में रजिस्ट्री के लिए निम्न कुंजी जोड़ सकते हैं और अपने मूल्य निर्धारित करने की आवश्यकता:

HKCU\Sofware\Microsoft\Visual Studio\9.0\Source Control\UncontrolledInMemoryEditDialogSuppressed 

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

फिर VS2k8 पुनरारंभ करें।

इस बिंदु पर

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

अब, अपनी फ़ाइलें केवल पढ़ने के लिए जब आप अनुप्रयोग चलाने, एक के बाद निर्माण प्रक्रिया यह करने के लिए सेट कर सकते हैं। यह आसान है।

हार्डर, आपके ऐप को चलाने के बाद उन्हें वापस लिखने के लिए सेट करना है। सबसे सरल समाधान शायद एक बैच फ़ाइल शॉर्टकट है।

+0

+1 वाह, बहुत प्रभावशाली। मैं कुछ क्लीनर और आसान ढूंढ रहा हूं, लेकिन ऐसा लगता है कि कुछ प्रकार के हैक या मैक्रो की आवश्यकता होगी। कोई भी कुछ भी साथ आसान ऊपर आता है, मैं तुम्हें जाँच चिह्न दे देंगे, लेकिन मैं इस करता है, तो किसी को भी बेहतर कर सकते हैं देखने के लिए कुछ और दिनों के लिए जारी रखने के लिए दूँगा। (Btw, इस वी.एस. 2010 में करने के लिए कोई क्लीनर या आसान होगा? कृपया इस शोध करने के लिए किसी भी काम डाल नहीं है, लेकिन अगर आप अपने सिर के ऊपर से पता है।) –

+0

एक बुरा विचार के साथ खिलवाड़ जाना की तरह लगता है स्रोत नियंत्रण प्रदाता की पीठ के पीछे केवल पढ़ने के बिट्स। – Josh

+0

"एक बुरा विचार स्रोत नियंत्रण प्रदाता की पीठ के पीछे केवल पढ़ने के बिट्स के साथ खिलवाड़ जाना की तरह लगता है"। यह एक अच्छा मुद्दा जोश है। और विजुअल सोर्स सेफ का उपयोग करने की आवश्यकता निश्चित रूप से एक मुद्दा भी है। मुझे लगता है कि मुझे चेक क्लीयर देने के लिए 'चालाक मानव' को अपने वादे को दोबारा शुरू करना होगा ... मुझे लगता है कि यह वास्तव में अनसुलझा रहता है। :-(:-( –

4

अरे वहाँ - खेद मैं पूरी तरह से अपने कोड ताला लगा के साथ मदद नहीं कर सकता - मैं विपरीत इच्छा है: पूरी तरह से करने के लिए डीबग के दौरान इसे अनलॉक करें, लेकिन मैं आपकी दूसरी समस्या के साथ आपकी मदद कर सकता हूं।

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

मैं जानता हूँ कि यह समाधान आप चाहते हैं नहीं है, लेकिन यह शायद अन्य इसी तरह के मुद्दों को रोकने के लिए चोट नहीं होगा।

शुभकामनाएँ!

एडम

+0

+1 बहुत अच्छा विचार एडम। मैं निश्चित रूप से इसका कुछ संस्करण उपयोग करूँगा। मैं आपको इसके लिए चेक मार्क नहीं दे सकता - जैसा कि आप जानते हैं - लेकिन यह वास्तव में एक अच्छी मदद है। धन्यवाद!(ऐसा लगता है कि मैं ... मुझे लगता है कि करने के लिए है कि यह नहीं हो सकता है शुरुआत कर रहा हूँ मुख्य मुद्दों का हल हो रही की उम्मीद में एक इनाम शुरू करने के लिए होगा।) –

+0

मुझे पता है कि अच्छा लगेगा अगर आप कोड बनाने में कामयाब पूरी तरह से संपादन योग्य, और कैसे। –

5

यहाँ एक चाल मैं दृश्य स्टूडियो 2005 के तहत उपयोग करें (विजुअल स्टूडियो 2008 के तहत परीक्षण करने के लिए एक मौका नहीं है, लेकिन यह काम करना चाहिए):

  • ओपन निष्पादन विधानसभा के गुणों
  • पर जाएं डीबग टैब
  • अप्रबंधित कोड डिबगिंग सक्षम करें चेकबॉक्स चेक

कोड दस्तावेज़ों को लॉक किया जाना चाहिए, भले ही ब्रेकपॉइंट मारा जाए, और इसे बदलने का कोई भी प्रयास पॉपअप को ट्रिगर करना चाहिए "अप्रबंधित डीबगिंग सक्षम होने पर परिवर्तनों की अनुमति नहीं है"

+0

लॉरेन, यह बहुत ही आशाजनक लगता है ... लेकिन यह काम नहीं करता है मेरे लिए 'x86' के खिलाफ संकलित होने पर। व्यवहार दुर्भाग्यवश नहीं बदलता है। क्या मुझे इस लॉकिंग प्रभाव को लागू करने के लिए कहीं कुछ 'असुरक्षित' संचालन जोड़ने की आवश्यकता है? –

+0

"टूल्स> विकल्प> डिबगिंग> सामान्य" में, आप "सभी प्रक्रियाओं को तोड़ जब एक प्रक्रिया टूट जाता है।" क्या ज़रूरत है की जाँच की? मैं विजुअल स्टूडियो 2008 के साथ कुछ परीक्षण करने के लिए कोशिश करेंगे और रख आप पोस्ट की। –

+0

हाय लौरेंत, हाँ, "सभी प्रक्रियाओं जब एक प्रक्रिया तोड़ ब्रेक "चेक किया गया है। प्रयास करने के लिए धन्यवाद। (वास्तव में, अब तक प्रयास के लिए +1, मैं वास्तव में इसकी सराहना करता हूं।) –

संबंधित मुद्दे