2013-03-11 5 views
2

MS Visual Studio 2008을 사용하여 두 번째 라이브러리 (helper.dll)를 사용하는 C# 라이브러리 (main.dll)를 만들었습니다. main.dll의 디버그 버전에서 helper.dll의 디버그 버전에 대한 참조를 설정합니다. 그러나 main.dll의 Release 버전을 빌드하기 위해 전환 할 때 출력 폴더에는 여전히 helper.dll의 디버그 버전이 포함됩니다. 다른 빌드 유형에 대해 helper.dll의 다른 버전을 선택할 수있는 방법이 없습니다. C++에서 링커에게 파일을 가져올 폴더를 알려줄 수는 있지만 C#에서는 그렇게 할 수있는 방법이 없습니다.어떻게 디버그 대 릴리스 라이브러리를 자동으로 선택합니까?

+0

Dan Puzey의 답변에 추가 한 댓글에서 본질적으로 질문을 변경 한 다음 추가 된 새로운 세부 정보와 일치하지 않기 때문에 답변을 아래로 보냈습니다. 그것은 가난한 형태입니다. –

답변

1

디버그에서 릴리스로 전환하면 Visual Studio는 출력을 위해 bin 폴더에서 Debug에서 Release로 전환합니다.

main.dll의 경우 "항상 복사"속성을 true로 설정하십시오. 이렇게하면 해당 출력 폴더로 복사되고 항상 참조됩니다.

-1

두 번째 라이브러리 helper.dll이 같은 솔루션에서 동시에 빌드되는 경우 .dll을 직접 참조하는 대신 프로젝트 참조를 사용할 수 있습니다. 그런 다음 Release 모드에 대한 솔루션 수준 구성을 설정하고 그런 식으로 Release 모드에서 두 프로젝트를 빌드 할 수 있습니다.

+0

왜 이것을 다운 그레이드 했습니까? –

2

이 작업을 수행하는 일반적인 방법은 모든 프로젝트를 단일 솔루션에 포함시키고 프로젝트 참조를 사용하는 것입니다. 그런 다음 Debug에서 빌드하면 모든 구성 요소가 빌드되고 디버그로 참조되며 Release와 마찬가지로 참조됩니다.

또는 모든 어셈블리에 단일 출력 폴더를 사용하고 거기에서 각 바이너리를 참조하고 빌드 순서가 올바른지 확인하여 main.dll이 빌드되기 전에 helper.dll이 해당 폴더에 빌드되도록 할 수 있습니다. 그러나 이것은 실패하는 경향이 더 큽니다. 수동 유지 보수가 더 많이 필요합니다.

+0

main.dll이 여러 솔루션에서 사용되기 때문에 모든 솔루션을 하나의 솔루션으로 사용하는 것을 정말 싫어합니다. 이것이 제가 생각하기 시작한 모든 이유입니다. Solution1이 프로젝트 Main을 사용한다면 Project Helper를 사용해야합니다. 나는 그것을하고 싶지 않다. Solution1에 프로젝트 Main을 사용하고 Main 프로젝트가 자동으로 프로젝트 도우미의 올바른 버전을 가져 오도록하고 싶습니다. 오, 글쎄요. 그다지 큰 거래가 아니며, 내가 공상을 얻으려고한다면, 나는 혼란에 빠지게되는 동료들만을 끝내게 될 것입니다. 답장을 보내 주셔서 대단히 감사합니다. –

+0

왜 downvote? –

관련 문제