2012-09-10 12 views
5

के दौरान स्थानांतरित नहीं होती है मेरे पास WinForms, C# समाधान है जो क्लिकऑन परिनियोजन का उपयोग करता है जो संसाधन फ़ाइलों के साथ कुछ परेशानी पैदा कर रहा है। संक्षेप में, क्लास लाइब्रेरी प्रोजेक्ट में सामग्री के रूप में चिह्नित फ़ाइलों को क्लिकऑन के साथ तैनात करने के बाद आउटपुट बिन/फ़ोल्डरों में कॉपी नहीं किया जाता है।क्लास लाइब्रेरी में परिभाषित सामग्री क्लिकऑन परिनियोजन

यहाँ समाधान की बुनियादी संरचना है (यह तो लोगों को मैं नीचे की सूची में बहुत अधिक परियोजनाओं में शामिल है)

Solution 
|--Gui 1 Project 
| |--References 
| | |--ClassLibrary 
|--Gui 2 Project 
| |--References 
| | |--ClassLibrary 
|--Main Gui Project (StartUp Project) 
| |--References 
| | |--Gui 1 Project 
| | |--Gui 2 Project 
| | |--ClassLibrary 
| |--Datafile.wav (Build Action: Content, Copy-if-newer) 
| |--Mods.xml  (Build Action: Content, Copy-if-newer) 
| |--VariousSourceFiles.cs 
|--ClassLibrary 
| |--Resources 
| | |--Elements.xml  (Build Action: Content, Copy-if-newer) 
| | |--AminoAcids.xml (Build Action: Content, Copy-if-newer) 
| |--VariousSourceFiles.cs 

मुख्य गुई परियोजना इस कार्यक्रम लिए स्टार्टअप परियोजना है और एक सरल एमडीआई कंटेनर है जो इसके भीतर अन्य जीयूआई अनुप्रयोगों को लॉन्च करता है। जब मैं अपनी विकास मशीन पर डीबग/रिलीज मोड में निर्माण करता हूं, तो सब कुछ अपेक्षित काम करता है। जीयूआई प्रोग्राम संकलित किए जाते हैं, Datafile.wav और Mods.xml फ़ाइलों को बिन/फ़ोल्डर में कॉपी किया जाता है और Elements.xml और AminoAcids.xml फ़ाइलों को बिन/संसाधन/फ़ोल्डर में कॉपी किया जाता है। प्रोग्राम बिना किसी हिचकी के अपेक्षित कार्य करता है।

यहां समस्या है, जहां मैं शुरू होता हूं, मैं अपने सर्वर पर अपने सहकर्मियों को आंतरिक रूप से प्रोग्राम जारी करने के लिए वीएस -2010 में क्लिक-वन प्रकाशन सुविधा का उपयोग करता हूं। वे प्रोग्राम को बस ठीक करने में सक्षम हैं और इसे शुरू भी कर सकते हैं। लेकिन जैसे ही वे एक बटन पर क्लिक करते हैं जो संसाधन फ़ाइलों में से एक (Elements.xml या AminoAcids.xml) का उपयोग करता है, यह एक अपवाद फेंकता है कि फ़ाइल नहीं मिल सकती है। यह अन्य दो सामग्री फ़ाइलों (Datafile.wav और Mods.xml) के लिए अन्य शब्दों में नहीं होता है, जिन्हें सही निर्देशिका में सही ढंग से कॉपी किया जाता है।

तो मैं मुख्य गुई प्रोजेक्ट -> गुण -> प्रकाशित करें -> एप्लिकेशन फ़ाइलें .. और मैं देखता हूं कि Datafile.wav और Mods.xml इस सूची में शामिल हैं। हालांकि, अन्य दो सामग्री फ़ाइलों (Elements.xml और AminoAcids.xml) नहीं हैं। मेरा मानना ​​है कि यह समस्या है, क्योंकि जब मैं प्रोग्राम को हमारे सर्वर पर प्रकाशित करता हूं, तो यह संसाधनों की प्रतिलिपि बनाने के बारे में नहीं जानता है। मैं ClickOnce को कैसे सूचित करूं कि उन्हें इन फ़ाइलों को शामिल करने की आवश्यकता है? ClassLibrary.dll इस सूची में दिखाई देता है, लेकिन .xml फ़ाइलों में से कोई भी नहीं।

मैंने क्लास लाइब्रेरी -> गुण -> प्रकाशित करने की कोशिश की लेकिन प्रकाशन के लिए कोई टैब नहीं है क्योंकि यह कक्षा पुस्तकालय है। इसलिए मैं यह निर्दिष्ट करने में असमर्थ हूं कि मैं उन दो संसाधन फ़ाइलों को किसी भी क्लाइंट कंप्यूटर पर अंतिम बिन/संसाधन फ़ाइल में कॉपी करना चाहता हूं। क्या किसी को कोई विचार है कि इसे कैसे दूर किया जाए?

मैं संसाधन फ़ाइलों (.xml) को बिल्ड एक्शन के रूप में रखना चाहता हूं: सामग्री और एम्बेडेड संसाधन नहीं, क्योंकि प्रोग्राम के उपयोगकर्ता फ़ाइलों की सामग्री को बदल/अपडेट/विस्तार कर सकते हैं।

+0

काश यह होगा certfile

दाना -s तैनाती प्रकट -cf कुछ दिन का उत्तर दिया जाए ... मेरे पास विजुअल स्टूडियो 2005 के साथ लगभग एक ही समस्या है, क्लिकऑन्स परिनियोजन योजना –

उत्तर

1

मुझे पता है कि यह सुंदर नहीं है लेकिन यह काम पूरा हो जाएगा। माइक्रोसॉफ्ट के पास एक आलेख है जो आपको दिखाता है कि इसे प्रकाशित करने के बाद आपके क्लिक पर एक बार फ़ाइल को कैसे जोड़ा जाए। http://msdn.microsoft.com/en-us/library/6fehc36e(v=vs.110).aspx

ये कदम उठाएँ मामले में कड़ी परिवर्तन कर रहे हैं: Mage.exe

का उपयोग कर

1 से एक डेटा फ़ाइल को शामिल करने के लिए आप काफी आसानी से इन चरणों का

लेख के लिए लिंक है को स्वचालित कर सकता है अपनी एप्लिकेशन निर्देशिका में अपनी शेष एप्लिकेशन की फ़ाइलों के साथ डेटा फ़ाइल जोड़ें।

आमतौर पर, आपकी एप्लिकेशन निर्देशिका तैनाती के वर्तमान संस्करण के साथ लेबल की गई निर्देशिका होगी-उदाहरण के लिए, v1.0.0.0।

2. डेटा फ़ाइल सूचीबद्ध करने के लिए अपना एप्लिकेशन मैनिफेस्ट अपडेट करें।

mage -u v1.0.0.0 \ अनुप्रयोग।manifest -FromDirectory v1.0.0.0

इस कार्य को निष्पादित करने से आपके एप्लिकेशन मेनिफेस्ट में फ़ाइलों की सूची फिर से बनाई जाती है और यह स्वचालित रूप से हैश हस्ताक्षर उत्पन्न करता है।

3. अपने पसंदीदा टेक्स्ट या एक्सएमएल संपादक में एप्लिकेशन मैनिफेस्ट खोलें और अपनी हाल ही में जोड़े गए फ़ाइल के लिए फ़ाइल तत्व ढूंढें।

यदि आपने Data.xml नाम की एक XML फ़ाइल जोड़ दी है, तो फ़ाइल निम्न कोड उदाहरण के समान दिखाई देगी।

<file name="Data.xml" hash="23454C18A2DC1D23E5B391FEE299B1F235067C59" hashalg="SHA1" asmv2:size="39500" /> 

1. इस तत्व को विशेषता प्रकार जोड़ें, और डेटा का एक मूल्य के साथ की आपूर्ति।

<file name="Data.xml" writeableType="applicationData" hash="23454C18A2DC1D23E5B391FEE299B1F235067C59" hashalg="SHA1" asmv2:size="39500" /> 

1. अपने आवेदन अपने कुंजी युग्म या प्रमाण पत्र का उपयोग करके प्रकट पुन: प्रवेश करते हैं, और उसके बाद में पुनः प्रवेश अपने तैनाती प्रकट।

आपको अपने परिनियोजन मैनिफेस्ट पर फिर से हस्ताक्षर करना होगा क्योंकि एप्लिकेशन मेनिफेस्ट का हैश बदल गया है।

दाना -s ऐप्लिकेशन मेनिफेस्ट -cf cert_file -pwd पासवर्ड

दाना -u तैनाती प्रकट -appm ऐप्लिकेशन मेनिफेस्ट -pwd पासवर्ड

+0

में एक एक्सएसडी फ़ाइल शामिल करने में सक्षम नहीं है, आपकी प्रतिक्रिया के लिए धन्यवाद। मैंने इसका परीक्षण किया और यह काम किया। हालांकि, सबसे आसान समाधान नहीं है, लेकिन पर्याप्त होगा। – Moop

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