2011-01-28 6 views
3

예를 들어, 내 DLL에 Bouncy Castle을 사용하고 싶다고 가정 해 봅시다. 배포를 쉽게하기 위해 ILMerge를 사용하여 MyDll.dllBouncyCastle.Crypto.dll을 결합하여 MyDllMerged.dll을 생성했습니다. ILMerge에서 /internalize 플래그를 사용하여 클라이언트가 Bouncy Castle을 사용하지 않도록합니다.ILMerge : 내부화 된 어셈블리의 이름 공간 이름 바꾸기?

내 소비자 EndUser.exe도 Bouncy Castle을 사용하는 경우 "이 이미 MyDllMerged.dll에 정의되어 있습니다"라는 메시지가 나타납니다. 따라서 그는 자신의 도서관을 운명에 맡기며 운명을 정할 수 없습니다.

ILMerge에 어셈블리의 모든 네임 스페이스의 이름을 바꾸고 내부화하는 것을 알리는 메시지가 있습니까? 아니면이 문제를 해결하는 다른 방법은 없을까요? (내가 좋아하는 것 하지은 "합병"버전과 별도로 "병합"버전을. 배포해야합니다)

+1

잘 모르겠습니다./internalize는 사용자가 * 운명 지키지 않았는지 확인합니다. 그는 TypeFoo를 볼 수 없으며 내부적입니다. –

+0

@ 한스 패 탄트 : 그것은 내가 생각한 것입니다. 그러나 그것을 증명할 간단한 실험을했습니다. 사용자가'TypeFoo'를 볼 수 없더라도 실제로 거기에 있으며 컴파일 중 최종 네임 스페이스 충돌 오류가 발생합니다. – kizzx2

답변

1

한 가지 방법은 바로 조직을 당황하게하는 난독 (SmartAssembly, Dotfuscator 등)을 사용하는 것입니다. 생성 된 어셈블리의 BouncyCastle 네임 스페이스입니다.

+0

합리적인 것 같습니다. – kizzx2