문제

저는 CMS 모듈을 작업 중입니다.이 모듈은 클래스 라이브러리 DLL로 배포됩니다.

이 모듈에서 사용하고 싶은 유틸리티 라이브러리가 여러 개 있습니다.어쨌든 이러한 라이브러리를 정적으로 연결할 수 있으므로 여러 DLL을 배포할 필요가 없습니다(따라서 유틸리티 라이브러리를 별도로 배포)?

DLL을 하나만 갖고 싶습니다.

도움이 되었습니까?

해결책

ILMERGE를 사용하여 많은 DLL을 병합할 수 있습니다.

http://research.microsoft.com/~mbarnett/ILMerge.aspx

직접 시도하지 않았습니다.도움이 되길 바랍니다.


여기에서 다운로드하세요:
http://www.microsoft.com/downloads/details.aspx?familyid=22914587-B4AD-4EAE-87CF-B14AE6A939B0&displaylang=en

간단한 설명 (다운로드 페이지에서)
ILMerge는 여러 .NET 어셈블리를 단일 .NET 어셈블리로 병합하는 유틸리티입니다.실행 파일과 DLL 모두에서 작동하며 출력의 처리 및 형식을 제어하기 위한 여러 옵션이 제공됩니다.자세한 내용은 함께 제공되는 설명서를 참조하세요.

다른 팁

ILMerge를 사용하지 않으려면 다음 페이지를 참조하세요.

http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

편집자 주:Jeffrey Richter는 dll을 exe 파일에 리소스로 넣으라고 조언합니다(추가하는 각 DLL 파일에 대해 해당 속성을 표시하고 "빌드 작업"을 "포함 리소스"로 변경합니다.).그런 다음 실행 파일이 작동하도록 하려면 사용자 정의 클래스 로더가 필요합니다(런타임 시 CLR은 문제가 되는 종속 DLL 어셈블리를 찾을 수 없습니다.이 문제를 해결하려면 애플리케이션이 초기화될 때 AppDomain의 ResolveAssembly 이벤트로 콜백 메서드를 등록하세요.).

반드시 변경하세요. resourceName 실제 리소스를 가리키는 문자열입니다.(예:변화 AssemblyLoadingAndReflection 프로젝트 이름으로 변경하세요.)

이에 대한 짧은 대답은 '아니오'입니다!컴파일 중에는 dll을 링크할 수 없습니다.이를 수행하는 미묘한 방법이 있는지는 모르겠지만 아마도 cms와 함께 dll을 배포해야 할 것입니다.이를 수행하는 가장 좋은 방법은 일종의 재배포가 가능하도록 만드는 것입니다.

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