2010-12-02 2 views
2

저는 현재 플러그인 아키텍처에서 MEF를 사용하고 있습니다. 나는 내 코드를 난독 화하려고하고 있는데, 그것이 MEF와 그 발견을 망칠 지에 대한 우려가 있었다. DirectoryCatalog를 사용하여 플러그인을 해결하고 있으며 플러그인을 난독 화하려고합니다. 확장 프로그램 중 일부는 주 어셈블리에서 실행되기 때문에 난독 화됩니다.난독 화시 MEF 및/또는 Unity와 관련된 문제가 있습니까?

내 질문은 이것이 MEF (난독 화)와 관련된 문제인지, 그렇다면 유니티도 동일한 문제를 겪고 있는지 여부입니다. 미리 감사드립니다.

답변

1

bbfuscation이 어셈블리의 이진 호환성을 변경하지 않기 때문에 아무런 문제가 나타나지 않습니다.

그렇다고해서 난 모호한 어셈블리와 MEF로 작업 한 것이 아니므로 잘못된 것일 수 있습니다.

+0

여기에 근본적인 점은, 코드에 영향을 미칠지 확실하게 확인하려면 테스트해야 할 것 같습니다. – Nate

+1

사실 좀 더 q/a를 읽은 후에 난 난독 화를 피할 것입니다. 나는 캐주얼 옵저버로부터 내 IP를 보호하는 것에 정말로 관심이 없으며 누군가가 진정으로 동기 부여가 난사를하면 어쨌든 난독 처리가 중지되지 않습니다. 진정으로 보호받는 유일한 방법은 암호화하는 것 뿐이므로 성능 저하를 방지하고 싶지 않습니다. – SRM

+0

동의합니다. 대부분의 경우, 그럴 가치가 없습니다. – Nate

4

Unity와 난독 화 문제가 발생했습니다. 이 경우 통일성에 의해 해결 될 종속성은 속성의 [ServiceDependency] 속성으로 태그되었습니다. IL의 부동산은 Get-and Set-Method입니다. 일부 메타 데이터로 묶여있다. 그것이 재산을 구성하는 것입니다. 난독 화가 발생하여 속성을 네이티브 Get 및 Set 메서드로 바 꾸었습니다. 문제를 볼 수 있습니까? 속성이 사라졌습니다 (메서드로 대체). 속성 없음은 속성에 [ServiceDependency] 속성이 없음을 의미합니다. 종속성 삽입이 없다는 것은 null 참조는 충돌을 의미 함을 의미합니다!

해결책은 [ServiceDependency] 및 [Obfuscation (Feature = "이름 바꾸기", Exclude = true)] (.NET Framework의 일부) 속성으로 태그를 지정하는 것입니다.

중요한 경우 : Dotfuscator Professional을 사용하여 난독 화를 수행했습니다.

+0

이 답변은 나에게 매우 도움이되기 때문에 두 답을 모두 옳게 표시하고 싶습니다. 나는 내 자신의 PMDI (가난한 사람의 의존성 주입)를 굴려 결국 그걸로 고생하고있다. 화합을 재검토하고 싶습니다. 이것은 대단히 도움이됩니다. 고맙습니다! – SRM

관련 문제