2013-02-08 40 views
5

मैं फ़ाइल कल्पना के साथ एक nuget कल्पना फ़ाइल में पैक किया जा रहा है:Nuget फ़ाइलों गलत स्थानों

<files> 
    <file src="content\App_Start\*" target="content\App_Start" /> 
    <file src="content\Views\*" target="content\Views" /> 
    <file src="content\web.config.transform" target="content" /> 
    <file src="readme.txt" target="" /> 
    </files> 

यह हुआ करता था:

<files> 
    <file src="content\*" target="content" /> 
    <file src="readme.txt" target="" /> 
    </files> 

लेकिन यह अजीब व्यवहार के साथ-साथ था (spefically App_Start को शामिल नहीं किया जा रहा था, हालांकि अतिरिक्त सामग्री फ़ोल्डर अभी भी विचारों के लिए जोड़ा जा रहा था ... नीचे दिए गए विवरण देखें)

प्रोजेक्ट को प्रारूप में व्यवस्थित किया गया है

\<root> 
|_ readme.txt 
|_ content 
     |_ Views 
     | |_ Home 
     |   |_ <viewname>.cshtml 
     |   |_ <viewname2>.cshtml 
     |_ App_Start 
      |_ <PreprocessFilename>.cs.pp 

मेरे लिए अजीब व्यवहार होने का क्या दिखाई देता है लेकिन यह है कि NuGet पैक संरचना के साथ एक ज़िप फ़ाइल उत्पादन किया जाता है:

  • :

    \<root> 
    |_ readme.txt 
    |_ content 
         |_ content 
         | |_ Views 
         |   |_ Home 
         |    |_ <viewname>.cshtml 
         |    |_ <viewname2>.cshtml 
         |_ App_Start 
         | |_ <PreprocessFilename>.cs.pp 
         |_ readme.txt 
    

    तो सम्मान के साथ फ़ाइल पथ पैकेजिंग nuget को Readme.txt को दो स्थानों पर डुप्लिकेट क्यों किया जा रहा है?

  • विचारों को दूसरी 'सामग्री' उप फ़ोल्डर क्यों दिया जा रहा है? (जबकि App_Start नहीं है)
  • मैं अपने सामग्री फ़ोल्डर की प्रतिलिपि कैसे बना सकता हूं, यह दर्शाता है कि वास्तविक संरचना क्या है?
  • मैं कैसे nuspec फ़ाइल अधिक "पोषणीय" बनाने के लिए

यदि यह प्रासंगिक है, मैं पैकेज बनाने के लिए एक .csproj फ़ाइल का उपयोग कर रहा <file src="content\*" target="content" /> निर्देश पर लौट सकते हैं।

+0

एलेक्स - क्या आपने कभी readme.txt फ़ाइल को डुप्लीकेट के साथ समस्या का पता लगाया है? – Randy

उत्तर

0

मैं एक ही मुद्दा हो रहा है, मैं इसे हल करने के लिए सक्षम था, लेकिन थोड़े एक हैक IMO। मुझे एक बेहतर समाधान देखना अच्छा लगेगा ताकि मेरे प्रोजेक्ट में अंतिम पैकेज में मेरा इरादा हो सकता है लेकिन मुझे आज काम करने की ज़रूरत है .......

मुझे आसपास जाने के लिए क्या करना है इस उप निर्देशिका मैं इसे में समाप्त करना चाहता था करने के लिए लक्ष्य निर्धारित में तो सामग्री dir बाहर और रूट स्तर पर ही स्थान में सभी उप निर्देशिका खींच रहा था।

<file src="Scripts\" target="content\Scripts" /> 
0

व्यवहार हो रहा है कि जब आप एक .csproject nuget pack MyProject.csproj पैक करें, यह पहले आपके प्रोजेक्ट स्ट्रक्चर के अनुसार पैकेज की व्यवस्था करेगा और फिर अतिरिक्त निर्देशों के लिए nuspec को देखेंगे। लेकिन जब आप प्रोजेक्ट द्वारा पैक करते हैं तो पिछले चरण में सामग्री को जोड़ा गया है, तो आपके nuspec को हटाने का कोई तरीका नहीं लगता है।

इस प्रकार, यदि डिफ़ॉल्ट परियोजना संरचना अपने पैकेज में अवांछित सामग्री की ओर जाता है, आप के बजाय .nuspec द्वारा सीधे पैकिंग पर भरोसा करना चाहिए। nuget pack MyProject.nuspec फिर यह केवल आपके नुस्पेक में निर्दिष्ट सामग्री को लाएगा, जिसमें आप सामग्री को परिभाषित कर सकते हैं कि आप इसे कैसे चाहते हैं।

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

संपादित

या ... तुम एक .csproj जहां आप इसे कुछ विशिष्ट फ़ाइलों को अनदेखा करके .nuspec कि होगा में इन फ़ाइलों के लिए एक कस्टम विनिर्देश लिखने के लिए बता पर -Exclude parameter साथ पैकिंग पर अमल कर सकता है अतिरिक्त डेटा के लिए स्वचालित रूप से पढ़ें।

मैं व्यक्तिगत रूप से यह आपके पैकेज के लिए आपकी एकमात्र परिभाषा के रूप में .nuspec रखने के लिए अधिक संक्षेप में पाया जाता है।