用于';展平';(简化)C#源

用于';展平';(简化)C#源,c#,refactoring,obfuscation,code-conversion,C#,Refactoring,Obfuscation,Code Conversion,我需要向第三方提供源代码的副本,但考虑到它是一个易于重新调整用途的漂亮的可扩展框架,我宁愿提供一个不太面向对象的版本(一个“过程”版本,因为缺少更好的术语)这将允许对值等进行微小的调整,但不允许使用当前结构的全部灵活性重新实现 代码使用了常用的东西:类、构造函数等。是否有工具或方法将其“简化”为仍然是“源”,但仅使用普通变量等 例如,如果我有一个类实例“myclass”,它在构造函数中初始化了this.blah,那么可以使用一个名为myclass_blah的变量来完成同样的操作,该变量将以一种更

我需要向第三方提供源代码的副本,但考虑到它是一个易于重新调整用途的漂亮的可扩展框架,我宁愿提供一个不太面向对象的版本(一个“过程”版本,因为缺少更好的术语)这将允许对值等进行微小的调整,但不允许使用当前结构的全部灵活性重新实现

代码使用了常用的东西:类、构造函数等。是否有工具或方法将其“简化”为仍然是“源”,但仅使用普通变量等

例如,如果我有一个类实例“myclass”,它在构造函数中初始化了this.blah,那么可以使用一个名为myclass_blah的变量来完成同样的操作,该变量将以一种更“平坦”的方式进行操作。我意识到,在这种情况下,像多态性这样的事情可能是不可能发生的。也许设置为“超温和”设置的模糊器可以实现这一点


感谢

我对漂亮的可扩展框架的经验是,大多数商店都有自己漂亮的可扩展框架(通常不止一个),并且不太可能从供应商提供的源代码中窃取它们。如果您有义务提供源代码(由于某些业务关系),那么,至少在我看来,以可维护的形式提供实际的源代码是一种道德义务。如何保护源代码是一个法律问题,我不能提供法律建议,但实际上,您应该在发布时加入一些许可证,并与不会完全窃取您的IP的客户打交道(假设在您开发的条款下它实际上是您的)

我对漂亮的可扩展框架的经验是,大多数商店都有自己漂亮的可扩展框架(通常不止一个),不太可能从供应商提供的源代码中窃取它们。如果您有义务提供源代码(由于某些业务关系),那么,至少在我看来,以可维护的形式提供实际的源代码是一种道德义务。您如何保护源代码是一个法律问题,我不能提供法律建议,但实际上您应该在发布时加入一些许可证,并与不会完全窃取您的IP的客户打交道(假设在您开发的条款下它实际上是您的)。

如前所述,如果这是基于合同限制的要求,那么不要这样做。简言之,提供一个与他们实际运行的源代码不同的版本将成为一种负担,我怀疑这是否是贵公司愿意承担的责任。证明提供的代码与他们正在运行的代码相匹配很简单。如果您试图避免应用程序使用的库(例如GPL)的许可证限制,也会出现这种情况


如果不是这样的话,为什么不提供一个有限版本的扩展性框架,它只与内部类型一起工作,并且静态地编译应用程序中所需的任何扩展?这将允许应用程序继续按照当前运行的方式运行,同时保持可维护性,而不会放弃您神圣的框架。我自己从来没有这样做过,但这听起来像是ILMerge可以帮上忙的事情。

如前所述,如果这是基于合同限制的要求,那么就不要这样做。简言之,提供一个与他们实际运行的源代码不同的版本将成为一种负担,我怀疑这是否是贵公司愿意承担的责任。证明提供的代码与他们正在运行的代码相匹配很简单。如果您试图避免应用程序使用的库(例如GPL)的许可证限制,也会出现这种情况


如果不是这样的话,为什么不提供一个有限版本的扩展性框架,它只与内部类型一起工作,并且静态地编译应用程序中所需的任何扩展?这将允许应用程序继续按照当前运行的方式运行,同时保持可维护性,而不会放弃您神圣的框架。我自己从来没有做过,但这听起来像是ILMerge可以帮上忙的事情。

如果您不想给出框架,就不要这样做。只提供你认为需要的资源。否则,您很可能需要在将来支持这两个版本,或者不再与这些人(以及他们认识的人)工作/互动

不要忘记,未模糊处理的.Net程序集具有易于反编译的IL。使用ILSpy/Reflector阅读其他人的代码通常比查看源代码更容易

如果提供代码的原因是某种形式的检查(甚至只是查看代码),那么最好使用半体面的代码。我会认真考虑扔掉工具,如果它的代码看起来用FORTRAN风格使用C*~())< /P>
旁注:我相信“漂亮的可扩展框架”是“不在这里发明”综合症的根源之一——我更担心框架上的评论(比如“这段代码没有使用YYY模式,间隔是错误的”),而不是重用。

如果你不想给出框架,就不要。只提供你认为需要的资源。否则,您很可能需要在将来支持这两个版本,或者不再与这些人(以及他们认识的人)工作/互动

不要忘记,未模糊处理的.Net程序集具有易于反编译的IL。使用ILSpy/Reflector阅读其他人的代码通常比查看源代码更容易

如果提供代码的原因是某种形式的检查(甚至只是查看代码),那么最好使用半体面的代码。我会认真考虑扔掉工具,如果它的代码看起来用FORTRAN风格使用C*~())< /P> 旁注:我相信“漂亮的可扩展框架”是“不是在这里发明的”综合症的根源之一——我会的