如何处理数据契约序列化和应用混淆

how to handle data contract serialize and application obfuscation

我有一个使用 datacontractserializer 的 .net 桌面应用程序,它工作正常但是当我制作发布版本然后混淆它时保存的结果 xml 由于数据成员的变化而改变了所以如何解决这个问题因为必须打开以调试版本保存的发布版本?

从调试版本保存文件

a:_activeFloor z:Id="5"><a:_Id>00e1a184-b7c5-43fb-a811-ce65cb3f4d65</a:_Id><a:_basePoint xmlns:b="http://schemas.datacontract.org/2004/07/Elibre.Net.Core">

从混淆版本保存文件

<a:Rvq8Prg9id z:Id="5" z:Size="0"/><a:T1d8Yh8Dsp z:Id="6">Default</a:T1d8Yh8Dsp><a:TLM8F3Im5Z z:Id="7">Default USA Imperial</a:TLM8F3Im5Z><a:_activeFloor z:Id="8"><a:GUc8GIYTTD>true</a:GUc8GIYTTD><a:_Id>d5e4915a-4e8e-4354-8e19-fe3f235697be</a:_Id><a:_basePoint xmlns:b="http://schemas.datacontract.org/2004/07/Elibre.Net.Core">

并且我正在使用具有这些设置的网络反应器

您可以使用 System.Reflection.ObfuscationAttribute 修饰受影响的 classes/members,.NET Reactor 会自动将项目从混淆中排除。例如:

[System.Reflection.ObfuscationAttribute(ApplyToMembers = true)]
class myclass
{
  ...
}

class myclass
{
    [System.Reflection.ObfuscationAttribute()]
    internal string MyProp {get; set;}
}