如何解决合并程序集并使用内部关键字
| 合并程序集是否会更改内部关键字的范围? 我相当确定它不会起作用(或至少会起作用),因为任何引用最终程序集的人都将无法访问内部类。 这可能是一个没有现实价值的假想问题,但我还是很好奇。 编辑:我的意思是使用ILMerge,而不是将源代码组合到单个可构建程序集中。解决方法
是的,一旦程序集合并,它们就可以访问彼此的内部类。一些混淆器专门利用此功能在程序集之间进行公共调用,使之成为内部调用,然后对其进行混淆处理,使其更加安全。参考:SmartAssembly
附带说明一下,使用ILMerge,可以使用/ internalize命令行开关,它将使程序集中的所有公共类(而不是主程序集)成为内部组件,这从最终用户的视线中删除了公共接口,但程序集仍然起作用一般。
,假设您不是以完全信任运行的,那么任何与内部类型合并到最终程序集中的类型现在都可以访问内部类型的公共成员。
因此,给定程序集A:
public class MyClassA { ... }
和组装B:
internal class MyClassB { ... }
MyClassA可能无权反映MyClassB的公共成员。如果它们合并到同一程序集中,则MyClassA可能会获得这样的许可。
,有关更多信息的另一个可能的资源是Microsoft Research的ILMerge页面,在该页面上,它们提供了ILMerge的替代方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。