12

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

अतीत में यह वास्तव में एक समस्या नहीं थी क्योंकि हमारे पास केवल 20-30 रूप थे। फिलहाल हमें 300 से अधिक फॉर्म मिल गए हैं जिसका अर्थ है वीएस -2010 में डिजाइनरों की एक ही मात्रा खोलना।

तो मेरा प्रश्न: क्या आप इस प्रक्रिया को स्वचालित करने का एक तरीका जानते हैं ताकि सभी रूपों को पुन: उत्पन्न किया जा सके?

मैं एक मैक्रो के बारे में सोच रहा हूं जो डिजाइनर फ़ाइलों की तलाश करता है और फ़ाइल खोलता है (अधिकतम 25-50 फाइलें खोलने के लिए यह सुनिश्चित करने के लिए खुली है कि वीएस क्रैश नहीं होगा), लेकिन मैं नहीं प्राप्त कर पा रहा हूं यह काम कर रहा है

मुझे आशा है कि किसी के पास कोई सुझाव होगा!

+0

अच्छे पुराने 'ढूंढें और बदलें' (ctrl-f) के बारे में कैसे? –

+0

यह सच है, हमने अतीत में बहुत कुछ किया था। लेकिन 2 साल बाद सभी डिजाइनर फाइलें अपठनीय हो गईं (20 लाइनों के बहुत सारे अंतराल, गुण वर्णमाला क्रम में नहीं)। जब वीएस डिजाइनर फ़ाइल को पुन: उत्पन्न करता है तो सब कुछ व्यवस्थित और साफ है। जब आपके पास इस तरह के रूप हैं और हर दिन समायोजन करते हैं तो हम थोड़े जरूरी हैं (हम पूरे यूआई को एक बड़ा अपग्रेड दे रहे हैं)। – Sander

उत्तर

-3

300 से अधिक नियंत्रणों में परिवर्तन को बनाए रखने के बजाय फॉर्म की विरासत को नियोजित करें।

+1

-1; सवाल का जवाब नहीं दिया। – AMissico

2

मैं भी इस समस्या में भाग गया (यह भी देखें: Force WinForms to regenerate .designer.cs files)।

अंत में, मेरे द्वारा हटाए गए अधिकांश गुणों का नाम विशिष्ट रूप से नामित किया गया था, और मैं डिजाइन नामों वाली रेखाओं को हटाने के लिए एक खोल स्क्रिप्ट लिखने में सक्षम था जिसमें संपत्ति के नाम शामिल थे।

नोट, यह वास्तव में एक खाली रेखा को छोड़कर, रेखा को हटा देता है।
यदि आपके पास msysgit इंस्टॉल है, तो उसे बैश शैल से चलाने की आवश्यकता है, वह खोल ठीक है।
इस में, TextForeColor संपत्ति हटा दी गई थी।

#!/bin/bash 
files=$(find . -type f -name '*.Designer.cs' -print0 | xargs -0 grep -l 'TextForeColor') 
for file in $files 
do 
    echo $file 
    sed '/TextForeColor/ d' $file >$file.tmp 
    mv $file.tmp $file 
done 
+0

आप जानते हैं कि आप विजुअल स्टूडियो में ढूँढें और बदलें संवाद के साथ एक ही काम कर सकते थे। – AMissico

+0

@AMissico: मेरे ज्ञान के लिए आप नहीं कर सकते: वीएस में एफ एंड आर लाइन हटाने का समर्थन नहीं करता है, केवल लाइन सामग्री हटाने (मैं विशेष रूप से रिक्त रेखाएं नहीं छोड़ना चाहता था), और मुझे इसे 60+ परियोजनाओं स्रोत निर्देशिका में चलाने के लिए था (सभी परियोजनाओं के लिए कोई भी समाधान नहीं)। – Pondidum

+0

मैं कई रिक्त रेखाएं, डबल रिक्त रेखाएं, एकल रिक्त रेखाएं, नियमित अभिव्यक्तियों को ": i \ .TextForColor =" से मेल खाता हूं, इसलिए मैं अन्य सामग्री को गलती से नहीं बदलता। आप इसे अपने संपूर्ण फ़ोल्डरों में, केवल "संपूर्ण समाधान" या किसी प्रोजेक्ट में, और यहां तक ​​कि फ़ाइल प्रकार निर्दिष्ट करने सहित विभिन्न फ़ोल्डरों पर भी कर सकते हैं। इस कारण को "फ़ाइलों में बदलें" कहा जाता है। – AMissico

5

एक ही रास्ता मैं तुम क्या चाहते करने के लिए मिल गया है,, प्रपत्र डिजाइनर खोलने एक नियंत्रण जोड़ें, फिर बचाने के लिए है। यह डिजाइनर कोड को पुन: उत्पन्न करेगा। इसके बाद नए जोड़े गए नियंत्रण को हटाएं, फिर से सहेजें, और बंद करें।

मैं आमतौर पर टूलबॉक्स में बटन पर डबल-क्लिक करके एक बटन जोड़ता हूं। यह बटन 0,0 पर रखता है।

मैंने इसे कुछ महीने पहले एक परियोजना के साथ लगभग 100 रूप और उपयोगकर्ता नियंत्रण के साथ किया था। प्रोजेक्ट फ़ाइलों पर दोहराए गए मैक्रो के बजाय, मैंने एक अस्थायी मैक्रो रिकॉर्ड किया, फिर प्रत्येक फॉर्म/उपयोगकर्ता-नियंत्रण के लिए मैक्रो चलाया और परिणामों का निरीक्षण किया।

सुधारण के साथ रिफैक्टरिंग को भ्रमित न करें। मैं अक्सर बड़े रूपों में डिजाइनर कोड को अनुकूलित और/या संशोधित करता हूं। उदाहरण के लिए, मैं पैनलों में ऑर्डर नियंत्रण जोड़ दूंगा, और पैनलों को अन्य पैनलों में कैसे जोड़ा जाता है। मैं डिजाइनर कोड को अंधाधुंध पुन: उत्पन्न नहीं करता।

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