我目前在插件架构中使用MEF。我即将模糊我的代码,我担心这是否会破坏MEF和它的发现。我正在使用DirectoryCatalog来解析插件,我也计划对插件进行模糊处理。一些扩展也在主程序集中运行,也将被混淆。
所以,我的问题是这是否会成为MEF(混淆)的问题,如果是这样,Unity是否也会受到同样的影响?提前谢谢。
答案 0 :(得分:4)
我遇到了Unity和Obfuscation的问题。在这种情况下,要通过unity解析的依赖项使用Properties上的[ServiceDependency]属性进行标记。 IL中的属性不是Get-和Set-方法!由一些元数据捆绑在一起。这就是构成财产的原因,没有别的。 混淆遇到并用本机Get-和Set- Methods替换了属性。你能看到问题吗?该物业已经消失(由方法取代)。 No Property表示属性上没有[ServiceDependency]属性表示没有依赖注入意味着空引用意味着崩溃!
此处的解决方案是使用[ServiceDependency] AND [Obfuscation(Feature =“renaming”,Exclude = true)](.Net Framework的一部分)标记属性。
如果对您很重要:使用Dotfuscator Professional进行混淆。
答案 1 :(得分:1)
由于(在一个理想的世界中)bbfuscation不会改变程序集的二进制兼容性,所以我没有看到任何问题。
那就是说,我实际上没有用混淆的程序集和MEF做任何工作,所以我可能错了。