Programing

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

lottogame 2020. 7. 4. 10:37
반응형

빌드 후 이벤트를 사용하여 한 프로젝트에서 다른 프로젝트로 파일 복사… 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)

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

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


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

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


플랫폼 (x64, x86 등)과 구성 (디버그 또는 릴리스) 을 고려하려면 다음과 같습니다.

xcopy "$(SolutionDir)\$(Platform)\$(Configuration)\$(TargetName).dll" "$(SolutionDir)TestDirectory\bin\$(Platform)\$(Configuration)\" /F /Y 

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

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

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

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

참고 URL : https://stackoverflow.com/questions/11001822/copy-files-from-one-project-to-another-using-post-build-event-vs2010

반응형