빌드 후 이벤트… VS2010을 사용하여 한 프로젝트에서 다른 프로젝트로 파일 복사


133

3 개의 프로젝트가있는 솔루션이 있습니다. 한 프로젝트에서 다른 프로젝트로 뷰를 복사해야합니다. 포스트 빌드 이벤트를 통해 생성 된 DLL을 다음과 같이 복사 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

그래서 프로젝트 하나의 '/Views/ModuleHome/Index.cshtml'프로젝트의 파일을 프로젝트 2의 폴더에 복사하고 싶습니다. 빌드 후 이벤트를 통해 원하는 프로젝트에 파일을 어떻게 복사합니까? 감사

답변:


310
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- 복사중인 파일을 표시하지 않습니다.
  • / S- 비어 있지 않으면 하위 디렉토리를 복사합니다.
  • / E- 빈 하위 디렉토리를 복사합니다.
  • / Y- 기존 파일을 덮어 쓸 것인지 묻지 않습니다.
  • / R- 읽기 전용 파일을 덮어 씁니다.

2
이 줄을 내 포스트 빌드에 추가했는데이 오류 "오류 1"xcopy "C : \ Users \ tcompton \ Downloads \ MEFMVCPOC \ ModuleA \ Views \ ModuleAHome \ Index.cshtml" "C : \ Users \ tcompton \ Downloads \ MEFMVCPOC \ MEFMVCPOC \ Views \ ModuleAHome ""는 코드 2로 종료되었습니다. " 이것은 무엇을 의미 하는가?
BoundForGlory

출력 창을보십시오 : Ctrl+W+O. 합니까 Views\ModuleAHome대상 위치에서 폴더의 존재를? 실행중인 정확한 명령에 대한 출력 창을보고 사용 가능한 다른 스위치를 이해하려면 xcopy 명령에 대한 설명서를 읽으십시오 xcopy /?.
Darin Dimitrov 2016 년

1
'Views \ ModuleAHome'폴더가 존재하지만 대상 프로젝트의 일부가 아니기 때문에 VS에 표시하려면 '모든 파일 표시'를 클릭해야합니다.
BoundForGlory 2012 년

1
대상 폴더가 대상 프로젝트의 일부가 아니라는 사실이 xcopy와 차이가 있다고 생각하지 않습니다. 이 명령은 파일 시스템과 직접 작동합니다. 대상 프로젝트의 일부로이 폴더를 표시하는 한이 작업을 자동화하는 것이 더 어려울 수 있습니다.
Darin Dimitrov 2016 년

1
알겠습니다 ... xcopy "$ (ProjectDir) Views \ ModuleAHome \ Index.cshtml" "$ (SolutionDir) MEFMVCPOC \ Views \ ModuleAHome \"/ Y / I ....이 기사는 입력 social.msdn
BoundForGlory 2014

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.

감사합니다. / exclude :는 your-source-path및에 따옴표를 추가 한 후에 작동합니다 your-destination-path. 이러한 인용 부호가 없으면 전혀 작동하지 않습니다.
AechoLiu

@AechoLiu 파일 경로에 공백이있는 경우 항상 따옴표가 필요합니다 (예 :) "My File.txt".
Felipe Romero

14

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

/ F – 전체 소스 및 대상 파일 이름을 표시합니다

/ R – 읽기 전용 파일을 덮어 씁니다.

/ Y – 기존 파일을 덮어 쓰라는 메시지를 표시하지 않습니다.

/ I – 대상이 디렉토리라고 가정합니다 (그러나로 끝나야합니다)

약간의 트릭 – 대상에서 문자 \로 끝나야 xcopy에게 대상이 파일이 아니라 디렉토리라는 것을 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
@HarshilDoshi 프로젝트 → 프로젝트 속성 → 빌드 이벤트 → PostBuildEvent
Polluks

3

이 명령은 나를위한 매력처럼 작동합니다.

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

그것은 재귀 적으로 복사 모든 dllexe에서 파일 MySolutionPath\librariesbin\debug또는bin\release .

여기 에서 더 많은 정보를 찾을 수 있습니다


2

이전 답변과 마찬가지로을 제안하고 xcopy있습니다. 그러나 Hallgeir Engen의 답변에 /exclude매개 변수 를 추가하고 싶습니다 . 따옴표가 작동하지 않으므로 매개 변수에 길이가 길거나 공백이 포함 된 경로 이름으로 작업하지 못하게하는 버그가있는 것 같습니다. 경로 이름은 "문서"가 "DOCUME ~ 1"로 변환되는 "DOS"형식이어야합니다 ( 이 소스 에 따름 ).

따라서 \ exclude 매개 변수를 사용하려면 여기 에 해결 방법이 있습니다 .

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 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.