पोस्ट बिल्ड इवेंट… वीएस २०१० का उपयोग करके एक परियोजना से दूसरी फ़ाइल की प्रतिलिपि बनाएँ


132

मेरे पास इसमें 3 परियोजनाओं के साथ एक समाधान है। मुझे एक प्रोजेक्ट से दूसरे में एक दृश्य कॉपी करने की आवश्यकता है। मैं इस तरह निर्मित पोस्ट घटनाओं के माध्यम से बनाई गई DLL की प्रतिलिपि बनाने में सक्षम हूं:

यहाँ छवि विवरण दर्ज करें

इसलिए मैं फ़ाइल को प्रोजेक्ट एक '/Views/ModuleHome/Index.cshtml' में एक फ़ोल्डर में प्रोजेक्ट 2 में कॉपी करना चाहता हूं। पोस्ट-बिल्ड इवेंट के माध्यम से अपने वांछित प्रोजेक्ट में फ़ाइल (कॉपी) की प्रतिलिपि कैसे बनाऊं? धन्यवाद

जवाबों:


309
xcopy "$(ProjectDir)Views\Home\Index.cshtml" "$(SolutionDir)MEFMVCPOC\Views\Home"

और यदि आप संपूर्ण फ़ोल्डर की प्रतिलिपि बनाना चाहते हैं:

xcopy /E /Y "$(ProjectDir)Views" "$(SolutionDir)MEFMVCPOC\Views"

अद्यतन: यहाँ काम कर संस्करण है

xcopy "$(ProjectDir)Views\ModuleAHome\Index.cshtml" "$(SolutionDir)MEFMVCPOC\Views\ModuleAHome\" /Y /I

यहाँ कुछ आमतौर पर इस्तेमाल किए जाने वाले स्विच हैं xcopy:

  • / I - एक निर्देशिका के रूप में यदि कई फ़ाइलों की प्रतिलिपि बनाना।
  • / Q - प्रतिलिपि की जा रही फ़ाइलों को प्रदर्शित न करें।
  • / एस - जब तक खाली न हो उप उपप्रणालियों की प्रतिलिपि बनाएँ।
  • / ई - खाली उपनिर्देशिका की प्रतिलिपि बनाएँ।
  • / Y - मौजूदा फ़ाइलों को अधिलेखित करने के लिए संकेत न करें।
  • / आर - केवल पढ़ने के लिए फ़ाइलों को अधिलेखित करें।

2
मैंने अपनी पोस्ट बिल्ड में इस लाइन को जोड़ा और मुझे यह त्रुटि मिली "त्रुटि 1 कमांड" xcopy "C: \ Users \ tcompton \ download \ MEFMVCPOC \ ModuleA \ Views \ ModuleAHome \ Index.cshtml" C: \ Users \ tcompton \ डाउनलोड "MEFMVCPOC \ MEFMVCPOC \ Views \ ModuleAHome" "कोड के साथ बाहर हो गया" इसका क्या मतलब है?
बाउंडफॉरलॉरी

आउटपुट विंडो को देखें Ctrl+W+O:। क्या Views\ModuleAHomeफ़ोल्डर लक्ष्य स्थान पर मौजूद है? निष्पादित की जा रही सटीक कमांड के लिए आउटपुट विंडो को देखें और फिर उपलब्ध विभिन्न स्विच को समझने के लिए xcopy कमांड के लिए प्रलेखन पढ़ें xcopy /?:।
डारिन दिमित्रोव

1
फ़ोल्डर 'व्यूज़ \ _ मोड्यूलाहोम' मौजूद है, लेकिन इसका लक्ष्य परियोजना का हिस्सा नहीं है, जिसका अर्थ है कि आपको वीएस में प्रदर्शित होने के लिए 'सभी फाइलें दिखाएं' पर क्लिक करना होगा।
बाउंडफॉरलॉरी

1
मुझे नहीं लगता कि यह तथ्य यह है कि गंतव्य फ़ोल्डर गंतव्य परियोजना का हिस्सा नहीं है, इससे xcopy पर कोई फर्क पड़ता है। यह कमांड सीधे फाइल सिस्टम के साथ काम करता है। जहां तक ​​इस फ़ोल्डर को बनाने के रूप में दिखाई देता है गंतव्य परियोजना का हिस्सा है, इस कार्य को स्वचालित करना अधिक कठिन हो सकता है।
डारिन दिमित्रोव

1
समझ गया ... xcopy "$ (ProjectDir) Views \ ModuleAHome \ Index.cshtml" "$ (SolutionDir) MEFMVCPOC \ Views \ ModuleAHome \" / Y /IIthis लेख आपके इनपुट social.msdn
बाउंडफॉरलॉरी

20
xcopy "your-source-path" "your-destination-path" /D /y /s /r /exclude:path-to-txt- file\ExcludedFilesList.txt

स्रोत पथ और गंतव्य पथ के उद्धरणों पर ध्यान दें, लेकिन txt फ़ाइल को निष्कासित करने के लिए पथ में नहीं।

ExcludedFilesList.txt की सामग्री निम्नलिखित है: .cs \

मैं अपने समाधान में एक परियोजना से दूसरे और .cs फ़ाइलों को फ़ाइल की प्रतिलिपि बनाने के लिए इस आदेश का उपयोग कर रहा हूं।

/D Copy only files that are modified in sourcepath
/y Suppresses prompting to confirm you want to overwrite an existing destination file.
/s Copies directories and subdirectories except empty ones.
/r Overwrites read-only files.

धन्यवाद। / बाहर करना: उद्धरण जोड़ने के बाद काम करता है your-source-pathऔर your-destination-path। उन उद्धरणों के बिना यह बिल्कुल काम नहीं करता है।
अचेलियु

यदि आपकी फ़ाइल पथ में रिक्त स्थान उदा है तो @AechoLiu उद्धरण हमेशा आवश्यक होते हैं "My File.txt"
फेलिप रोमेरो

14

xcopy "$ (TargetDir) * $ (TargetExt)" "$ (SolutionDir) \ Scripts \ MigrationScripts \ Library \" / F / R / Y / I

/ एफ - पूर्ण स्रोत और लक्ष्य फ़ाइल नाम प्रदर्शित करता है

/ आर - यह केवल-पढ़ने वाली फ़ाइलों को अधिलेखित करेगा

/ Y - एक मौजूदा फ़ाइल को अधिलेखित करने का संकेत देता है

/ I - मानता है कि गंतव्य निर्देशिका है (लेकिन साथ समाप्त होना चाहिए)

एक छोटी सी चाल - लक्ष्य में आपको xcopy बताने के लिए चरित्र \ के साथ समाप्त होना चाहिए कि लक्ष्य निर्देशिका है और फ़ाइल नहीं है!


8

कॉल Batchफ़ाइल जो Xcopyगंतव्य के लिए आवश्यक फ़ाइल स्रोत के लिए चलेगी

call "$(SolutionDir)scripts\copyifnewer.bat"

7

मैं इसे इस तरह से उपयोग करता हूं।

xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)Lib\TIRM\x86\" /F /Y 
xcopy "$(TargetDir)$(TargetName).lib" "$(SolutionDir)Lib\TIRM\x86\" /F /Y 


/F : Copy source is File   
/Y : Overwrite and don't ask me

इस के उपयोग पर ध्यान दें। $ (TargetDir) पहले से ही '\' "D: \ MyProject \ bin \" = $ (TargetDir) है

आप कमांड एडिटर में मैक्रो पा सकते हैं

यहाँ छवि विवरण दर्ज करें


1
@ हर्षिल जोशी प्रोजेक्ट → प्रोजेक्ट प्रॉपर्टी → बिल्ड इवेंट्स → पोस्टबिल्डवेंट
पोलुक्स

3

यह आदेश मेरे लिए एक आकर्षण की तरह काम करता है:

for /r "$(SolutionDir)libraries" %%f in (*.dll, *.exe) do @xcopy "%%f" "$(TargetDir)"

यह पुन: प्रतिलिपि बनाता है हर dllऔर exeसे या MySolutionPath\librariesमें फ़ाइल ।bin\debugbin\release

आप यहां अधिक जानकारी पा सकते हैं


2

पिछले उत्तरों की तरह, मैं भी सुझाव दे रहा हूं xcopy। हालांकि, मैं /excludeपैरामीटर के साथ हॉलगेयर एंगेन के जवाब में जोड़ना चाहूंगा । ऐसा लगता है कि पैरामीटर बग के साथ काम कर रहा है जो इसे पथ नामों के साथ काम करने से रोकता है जो लंबे हैं या जिनमें रिक्त स्थान हैं, क्योंकि उद्धरण काम नहीं करेंगे। पथ के नाम "दस्तावेज़" के साथ "डॉस" -फॉर्म में होने चाहिए, "डॉक्युम ~ 1" ( इस स्रोत के अनुसार ) में अनुवाद करना होगा।

इसलिए, यदि आप \ बहिष्कृत पैरामीटर का उपयोग करना चाहते हैं, तो यहां एक समाधान है :

cd $(SolutionDir)
xcopy "source-relative-to-path-above" "destination-relative-to-path-above
/exclude:exclude-file-relative-path

ध्यान दें कि स्रोत और गंतव्य पथ (और यदि उन्हें रिक्त स्थान हैं) उद्धरण के भीतर हो सकते हैं, लेकिन बहिष्कृत फ़ाइल का पथ नहीं


2

यदि आप प्लेटफ़ॉर्म (x64, x86 आदि) और कॉन्फ़िगरेशन (डिबग या रिलीज़) को ध्यान में रखना चाहते हैं तो यह इस तरह होगा:

xcopy "$(SolutionDir)\$(Platform)\$(Configuration)\$(TargetName).dll" "$(SolutionDir)TestDirectory\bin\$(Platform)\$(Configuration)\" /F /Y 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.