2010-12-02 11 views
2

我目前在插件架構中使用MEF。我正在混淆我的代碼,我擔心這是否會影響MEF,這是發現。我正在使用DirectoryCatalog解析插件,並計劃對插件進行模糊處理。一些擴展也運行在主程序集中,也會被混淆。混淆時MEF和/或Unity的任何問題?

所以,我的問題是這是否會成爲MEF的一個問題(混淆),如果是的話,Unity是否也遭受同樣的困擾?先謝謝你。

回答

1

因爲(在理想的世界中)bbfuscation不會改變程序集的二進制兼容性,所以我沒有看到任何問題出現。

這就是說,我實際上沒有做任何混淆程序集和MEF的工作,所以我可能是錯的。

+0

這裏的基本點是,我認爲你需要測試一下它是否會影響你的代碼。 – Nate 2010-12-02 16:44:53

+1

其實在閱讀了更多的q/a之後,我想我會放棄混淆。我並不真正關心如何保護我的知識產權免受偶然的觀察者的侵害,如果有人真正有動機,混淆無論如何都不會阻止他們。真正有保護的唯一方法就是加密,我不想讓性能受到影響。 – SRM 2010-12-02 18:45:27

4

我遇到了Unity和Obfuscation的一個問題。在這種情況下,要通過統一解決的依賴關係使用屬性上的[ServiceDependency]屬性進行標記。 IL中的一個屬性不是一個Get和Set-Method!由一些元數據綁定在一起。這是什麼構成一個財產,沒有別的。 模糊處理遇到並用本地獲取和設置方法替換屬性。你能看到問題嗎?該屬性已經消失(由方法取代)。沒有屬性意味着屬性上的[ServiceDependency]屬性意味着沒有依賴注入意味着空引用意味着崩潰!

這裏的解決方案是用[ServiceDependency]和[Obfuscation(Feature =「renaming」,Exclude = true)](.Net Framework的一部分)標記屬性。

如果它對您很重要:使用Dotfuscator Professional進行混淆處理。