2011-01-04 3 views
58

작업은 Visual Studio 2010 프로젝트를 구성하므로 빌드 도중 또는 게시 할 때 foo.exe 유틸리티를 출력 (bin)으로 복사해야합니다. 예배 규칙서. .csproj에서VS2010 프로젝트에 파일을 포함하고 빌드하거나 게시하는 동안 출력 디렉터리를 자동으로 빌드하도록 복사하는 방법

조기 내가 만든 PostBuildEvent 작업 (MSBuild를 파일) :

<PropertyGroup> 
    <PostBuildEvent> 
    Copy "$(SolutionDir)Tools\foo.exe" "$(ProjectDir)$(OutDir)foo.exe" 
    </PostBuildEvent> 
</PropertyGroup> 

는 그러나 이것은 보편적 없습니다. 게시하는 동안 (Visual Studio 2010) foo.exebin 디렉터리에 있지만 출력 게시 디렉터리에는 복사되지 않습니다. 어쩌면 모든 것을 완전히 잘못하고 나중에 빌드하거나 게시하는 동안 프로젝트에 파일을 포함시키는 표준 메커니즘이 bin에 복사됩니까?

답변

89

게시물 작성 이벤트에 따라 다르며 여기에 종속되지 않습니다.

프로젝트에 파일을 추가 한 다음 파일 속성에서 "Copy to Output Directory"아래의 "Copy Always"또는 "Copy if Newer"중 하나를 선택하십시오.

MSDN을 참조하십시오.

+15

출력 하위 디렉토리를 제어 할 수있는 메커니즘이 있습니까? 나는'foo.exe'를'\ Tools \ Foo \ foo.exe'에 넣고'foo.exe'를'bin \ Tools \ Foo \ foo.exe'에 복사합니다. 제 3 자 코드는 foo.exe가'bin' 폴더에 직접 있어야합니다. 나는 이미'Tools'과'Foo' 디렉토리의'Namespace Provider' 속성을 꺼 놓았습니다. 그러나 이것은 도움이되지 않습니다. 'foo.exe'를 프로젝트 루트에 두지 않을 것입니다. 하지만 다른 변종이 없다면 이것이 유일한 해결책일까요? – Dao

+1

솔루션 폴더를 추가하고 파일을 추가 할 수 있습니다. 그러면 해당 파일이 bin 디렉토리에 복사됩니다. – Oded

+0

아니요, 안타깝게도 솔루션 폴더에 포함 된 파일의 제작/게시를 제어 할 수있는 기능이 없습니다. 'foo.exe'를 프로젝트 루트에 포함 시켰습니다. 별로 아름답 지 않지만 작동합니다 :) 감사합니다. 여기에 – Dao

0

제 경우에는 Rebuild가 수행하는 동안 Copy to Output Directory에서 Copy Always으로 설정하고 Build는 트릭을하지 않았습니다.

희망이 있으면 도움이됩니다. 활동 = 내용 빌드 - - 을 항상

이 트릭을 할 것입니다 출력 디렉토리 = 복사에 복사 :

솔루션 탐색기에서
4

, 당신은 출력 디렉토리에 복사하고 두 가지 속성을 할당 할 파일을 선택하십시오.

+8

프로젝트가 프로젝트에서 참조되고 솔루션 탐색기의 '솔루션 항목'목록을 통해 파일이 참조되는 경우에만 작동합니다. – codechurn

15

나는 단지 빌드하는 동안 파일을 푸시 할 필요가있다, 그래서 난 그냥이 같은 이벤트 명령 줄 항목 포스트 빌드 추가 :

Copy /Y "$(SolutionDir)Third Party\SomeLibrary\*" "$(TargetDir)" 

당신은 당신의 프로젝트를 마우스 오른쪽 단추로 클릭하여이를 설정할 수 있습니다 솔루션 탐색기, 속성> 빌드 이벤트

+4

이 방법을 사용하는 경우 다음 수정을 권장합니다. 'Copy/Y "$ (SolutionDir) Third Party \ SomeLibrary \ *" "(TargetDir)" – codechurn

+0

내 웹 사이트에서 게시를 사용하면 deploy 디렉토리? (지금까지는 게시를 사용할 때 이것이 작동하지 않는다고 생각합니다) – David

+0

@codehurn - 귀하의 제안에 따라 업데이트되었습니다. 감사! –

0

서비스/웹 프로젝트에서 누락 된 dll에 대한 참조를 직접 추가하십시오.. 다른 프로젝트에 대한 참조를 추가하는 것은 저에게 효과적이지 않았습니다.

필요한 모든 dll을 복사하지 않았기 때문에 웹 응용 프로그램을 게시 할 때만이 작업을 수행했습니다.

0

내 동료 신경 손상 동지들은 여기에 기회가있을 수 있습니다. 웹 프로젝트의 경우 연결된 파일이 외부 .config 파일이고 "출력 디렉토리"가 웹과 동일한 디렉토리 일 것이라고 가정 했었습니다. config는 웹 프로젝트의 루트와 같은 곳에 있습니다. 돌이켜 보면 링크 된 파일을 root/bin 폴더에 복사한다는 것은 전혀 놀라운 일이 아닙니다. 그것이 appSettings는이 파일을 포함 있다면

그래서, 당신의 Web.config의 오픈 태그는

<appSettings file=".\bin\includedAppSettingsFile.config">

뜨아 될 것이다.

1
  1. 파일을 프로젝트에 추가하십시오.
  2. 해당 파일의 속성으로 이동하십시오.
  3. "빌드 작업"을 포함 리소스로 설정하십시오.
  4. "Copy to Output Directory"를 항상 복사로 설정하십시오.
관련 문제