2012-06-12 35 views
100

Tôi có giải pháp với 3 dự án trong đó. Tôi cần phải sao chép một cái nhìn từ một dự án khác. Tôi có thể sao chép các DLL tạo qua đường bưu xây dựng các sự kiện như vậy:Sao chép (các) tệp từ dự án này sang dự án khác bằng sự kiện xây dựng bài đăng ... VS2010

enter image description here

Vì vậy, tôi muốn để sao chép các tập tin trong một dự án '/Views/ModuleHome/Index.cshtml' vào một thư mục trong dự án 2. Làm cách nào để sao chép (các) tệp vào dự án mong muốn của tôi qua sự kiện sau xây dựng? Cảm ơn

Trả lời

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

và nếu bạn muốn sao chép toàn bộ thư mục:

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

Cập nhật: đây là phiên bản đang hoạt động

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

Dưới đây là một số công tắc thường được sử dụng với xcopy:

/I - treat as a directory if copying multiple files 
/Q - Do not display the files being copied. 
/S - Copy subdirectories unless empty. 
/E - Copy empty subdirectories. 
/Y - Do not prompt for overwrite of existing files. 
/R - Overwrite read only files. 
+0

Tôi đã thêm dòng này vào bài đăng của mình và tôi nhận được lỗi này "Lỗi Lệnh" xcopy "C: \ Users \ tcompton \ Downloads \ MEFMVCPOC \ ModuleA \ Views \ ModuleAHome \ Index.cshtml" "C: \ Users \ tcompton \ Downloads \ MEFMVCPOC \ MEFMVCPOC \ Views \ ModuleAHome "" đã thoát với mã 2. " Điều đó có nghĩa là gì? – BoundForGlory

+0

Nhìn vào cửa sổ đầu ra: 'Ctrl + W + O'. Thư mục 'Views \ ModuleAHome' có tồn tại ở vị trí đích không? Nhìn vào cửa sổ đầu ra cho lệnh chính xác đang được thực hiện và sau đó đọc tài liệu cho lệnh xcopy để hiểu các công tắc khác nhau có sẵn: 'xcopy /?'. –

+1

Thư mục 'Views \ ModuleAHome' tồn tại nhưng không phải là một phần của dự án đích, nghĩa là bạn phải nhấp vào 'hiển thị tất cả các tệp' để nó xuất hiện trong VS. – BoundForGlory

7

Gọi Batch tập tin mà sẽ chạy Xcopy cho nguồn tập tin cần thiết đến đích

call "$(SolutionDir)scripts\copyifnewer.bat" 
18
xcopy "your-source-path" "your-destination-path" /D /y /s /r /exclude:path-to-txt- file\ExcludedFilesList.txt 

Chú ý các dấu ngoặc kép trong đường dẫn nguồn và đường dẫn đích, nhưng không phải trong đường dẫn đến exludelist txt file.

Nội dung ExcludedFilesList.txt như sau: cs \

Tôi đang sử dụng lệnh này để sao chép tập tin từ một dự án trong giải pháp của tôi, khác và không bao gồm cs tập tin.

/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. 
+0

Cảm ơn bạn./Loại trừ: hoạt động sau khi thêm dấu ngoặc kép vào 'your-source-path' và' your-destination-path'. Nếu không có những dấu ngoặc kép thì nó không có tác dụng gì cả. – AechoLiu

11

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

/F - Hiển thị nguồn đầy đủ & tên tập tin mục tiêu

/R - Điều này sẽ ghi đè lên read-only file

/Y - Chặn khiến ghi đè lên một file đang tồn tại (s)

/I - Assum es điểm đến đó là thư mục (nhưng phải kết thúc bằng)

Một mẹo nhỏ - trong mục tiêu bạn phải kết thúc bằng ký tự \ để nói xcopy rằng đích đó là thư mục chứ không phải tập tin!

2

Giống như các câu trả lời trước đó, tôi cũng đề xuất xcopy. Tuy nhiên, tôi muốn thêm vào câu trả lời của Hallgeir Engen với thông số /exclude. Dường như có lỗi với thông số ngăn không cho nó hoạt động với tên đường dẫn dài hoặc chứa khoảng trống, vì dấu ngoặc kép sẽ không hoạt động. Tên đường dẫn cần phải ở định dạng "DOS" với "Tài liệu" dịch thành "DOCUME ~ 1" (theo this source).

Vì vậy, nếu bạn muốn sử dụng \ loại trừ tham số, có một workaround here:

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

Lưu ý rằng nguồn và đích con đường có thể (và nên, nếu họ chứa khoảng trắng) nằm trong dấu ngoặc kép, nhưng không phải đường dẫn đến tệp loại trừ.

5

Tôi sử dụng nó như thế này.

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 

Lưu ý việc sử dụng điều này. $ (TargetDir) có đã '\' "D: \ MyProject \ bin \" = $ (TargetDir)

Bạn có thể tìm vĩ mô trong trình soạn thảo lệnh

enter image description here

2

Nếu bạn muốn đi xem xét nền tảng (x64, x86 vv) và cấu hình (Debug hoặc phát hành) nó sẽ là một cái gì đó như thế này:

xcopy "$(SolutionDir)\$(Platform)\$(Configuration)\$(TargetName).dll" "$(SolutionDir)TestDirectory\bin\$(Platform)\$(Configuration)\" /F /Y 
Các vấn đề liên quan