문제

Visual Studio 2008을 사용하고 있으며 솔루션으로 설치 해야하는 여러 DLL을 보유한 일종의 컨테이너 프로젝트를 만들고 싶습니다. 나는 그들이 그룹으로서 솔루션에 쉽게 첨부 될 수 있도록 별도의 프로젝트에 참여하기를 원합니다.

빈 프로젝트 호출 테스트를 만들어 "컨텐츠"의 빌드 동작으로 DLL을 추가하고 "항상 복사"하도록 설정했습니다. 모든 것이 내가 원하는대로 정확하게 작동합니다. 문제는 테스트 프로젝트 출력 유형을 "콘솔 응용 프로그램"또는 "Windows Application"으로 설정하면 진입 점이 없기 때문에 빌드되지 않습니다. 출력 유형을 "클래스 라이브러리"로 설정하면 빌드되지만 실제로 원하지 않는 추가 Test.dll 파일로 끝납니다.

어쨌든 출력 유형을 "없음"으로 설정할 수 있습니까? 빌드 조치가 이루어지기를 원하지만 (내 DLL이 복사됩니다) 더미 클래스 어셈블리가 생성되는 것을 원하지 않습니다. 어떤 아이디어?

감사!

도움이 되었습니까?

해결책

다음 단계별 안내서에 대한 가정 :

두 가지 프로젝트가있는 솔루션이 있다고 가정 해 봅시다.

  • Main: 메인 (스타트 업) 프로젝트.
  • BundledDLLs: 다음을 포함하는 도서관 프로젝트 .dll기본 프로젝트의 출력 디렉토리에서 끝나야합니다.

단계별 가이드 :

Visual Studio 내에서 목표를 달성하는 가장 쉬운 방법은 다음과 같습니다.

  1. 모두 추가하십시오 .dlls to BundledDLLs 그리고 그들의 설정 출력 디렉토리로 복사하십시오 에게 더 새로운 경우 복사하십시오.

    이것은 이루어집니다 프로젝트 탐색기 그리고 속성 창.

  2. 구성 BundledDLLs동일한 출력 디렉토리 Main의 출력 디렉토리.

    이것은 할 수 있습니다 짓다BundledDLL'에스 프로젝트 속성 페이지. 다음과 같은 것을 입력하십시오 출력 경로 텍스트 상자 :

    ..\Main\bin\Debug
    
  3. 설정 BundledDLLs 의존성으로 Main.

    하지 마라 추가하다 BundledDLLs 프로젝트 참조로 Main, 당신이 평소처럼; 대신 사용하십시오 프로젝트 종속성 대화 상자. 이것은 언제든지 빌드 도구를 알려줍니다 Main 지어졌습니다. BundledDLLs 먼저 구축해야합니다.

    마우스 오른쪽 버튼을 클릭 하여이 작업을 수행하십시오 Main 컨텍스트 메뉴를 엽니 다. 고르다 프로젝트 종속성 ... 거기에서. 지금 열린 대화 상자에서 먼저 선택하십시오 Main 드롭 다운 목록에서; 그런 다음 확인하십시오 BundledDLLs 아래 프로젝트 목록에서. BundledDLLs 현재 의존성으로 등록되었습니다 Main.

    추신: 하나의 단점 ~ 아니다 명백한 조립 참조가 있습니다 Main 일부 툴링은 종속성을 인식하지 못할 수 있다는 것입니다. 예를 들어 ClickOnce 배포가 제대로 작동하지 않을 수 있습니다.

  4. 빌드 후 이벤트를 추가하십시오 BundledDLLs 그것은 불필요한 것을 삭제합니다 BundledDLLs.dll.

    당신이 말했듯이, 당신은 BundledDLLs 만들어졌습니다. 따라서 단순히 이것을 삭제하는 건축 후 이벤트를 추가하십시오 .dll 일단 만들어지면.

    열기 이벤트 구축 탭에 BundledDLLs'에스 프로젝트 속성 페이지를 입력하고 구축 후 텍스트 상자에 다음과 같은 내용을 입력하십시오.

    DEL "$(TargetDir)\$(TargetName).*"
    

    (궁금한 경우 :이 프로젝트를 프로젝트 참조로 추가하지 않은 이유 Main 이전에는 그렇게했다면 그렇게했기 때문입니다. Main 찾고있을 것입니다 BundledDLLs.dll, 실제로 그러한 파일이 생성되기를 원하지 않기 때문에 찾을 수 없습니다.)

    추신: 이러한 건축 후 단계를 추가 할 때의 한 가지 단점은 증분 빌드를 방해 할 수 있다는 것입니다. 이 후 프로젝트가 처음부터 다시 컴파일되는 경우, 건축 후 단계를 제거하고 추가로 생활하는 것이 좋습니다. BundledDLLs.dll 솔루션의 출력 디렉토리에서

다른 팁

또 다른 옵션은 MakeFile 프로젝트를 사용하는 것입니다.이 프로젝트는 무엇이든 빌드/링크 할 필요가 없습니다.

프로젝트 속성 (Solution Explorer에서 속성을 마우스 오른쪽 버튼으로 클릭하고 "Properties"를 클릭)에서 "구성 속성"아래에서 "일반"아래에서 "구성 유형"드롭 다운 메뉴에서 "MakeFile"을 선택하십시오. 빌드 출력에는 "자산 'NMakeBuildCommandLine'이 존재하지 않는 경고가 포함되지만 DLL/EXE 등을 구축하지 않고 빌드가 성공합니다.

여기서 다른 답변은 특정 요구를 더 잘 해결할 수 있지만 Makefile을 지정하면 "출력 유형이없는 비주얼 스튜디오 프로젝트를 만들 수 있습니까?" 나는 이것이 그 효과에 무언가를하고 여기에 착륙하는 사람들에게 유용하기를 바랍니다.

이 팁을 공유하기 위해 #Winapi Freenode IRC 채널의 Xeek에 신용이 이동합니다.

프로젝트에 넣는 대신 파일을 솔루션 폴더. 프로젝트 중 하나는 복사를 수행하는 빌드 조치를 가질 수 있지만 프로젝트에 참여하지 않기 때문에 "빌드"를 시도하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top