문제

여러 어셈블리 집합이 있습니다 (하나의 어셈블리는 API로 사용되며 다른 어셈블리에 따라 다릅니다).모든 어셈블리를 하나의 어셈블리로 병합하고 싶지만 API 어셈블리를 제외한 모든 어셈블리가 외부에서 보이지 않도록합니다.

그런 다음이 어셈블리를 Xenocode로 난독 처리합니다.내가 본 것에서 Xenocode로 어셈블리를 내부화하는 것은 불가능합니다.

Microsoft의 ILMerge를 본 적이 있지만 원하는 작업을 수행 할 수 있는지 알 수 없었습니다. http://research.microsoft.com/~mbarnett/ILMerge.aspx

도움이 되었습니까?

해결책 2

Xenocode가 어셈블리를 하나로 병합 할 수 있다는 것을 알고 있지만 다른 비 기본 어셈블리를 내부화 할 것인지 확실하지 않습니다.

ILMerge에서 기본 어셈블리를 제외한 모든 어셈블리를 "내부화"하는 / internalize 스위치를 찾았습니다.매우 유용합니다!

다른 팁

Microsoft의 ILMerge를 사용하여 DLL을 단일 어셈블리 라이브러리로 내부화했습니다.NuGenUnify라는 ILMerge를 사용하는 데 유용한 GUI가 있습니다. 여기 에서 찾을 수 있습니다.

InternalsVisibleTo 속성을 살펴 보시기 바랍니다.="MSDN"> MSDN .

모든 어셈블리 (API 어셈블리 제외)의 모든 항목을 internal 대신 public로 표시 한 다음 API 어셈블리에만 다시 표시 할 수 있습니다.

이렇게하면 ILMerge를 사용하면 API 클래스 만 표시되는 단일 어셈블리를 얻을 수 있습니다.

ILMerge에 문제 가 있지만 최적화 + 병합 + 난독 화를 추가하면거의 이득이없는 매우 복잡한 상황.

어셈블리가 하나만 있고 API 만 공개하는 이유는 무엇입니까?

항상 단일 어셈블리로 배포하는 경우 컴파일하지 않을 이유가 없습니다.컴파일러 최적화를 통해 더 많은 이점을 얻을 수 있으며 컴파일도 더 빨라질 것입니다.

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