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

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

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

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



답변

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- 읽기 전용 파일을 덮어 씁니다.

답변

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.


답변

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

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

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

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

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

약간의 트릭 – 대상에서 문자 \로 끝나야 xcopy에게 대상이 파일이 아니라 디렉토리라는 것을 xcopy에 알려야합니다!


답변

필요한 파일 소스에 대해 Batch실행되는 호출 파일Xcopy

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


답변

나는 이것을 이렇게 사용합니다.

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)

명령 편집기에서 매크로를 찾을 수 있습니다

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


답변

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

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

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

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


답변

이전 답변과 마찬가지로을 제안하고 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

소스 및 대상 경로는 따옴표 안에있을 수 있지만 제외 파일 경로는 될 수 없습니다 .