合并程序集并使用内部关键字

问题描述

| 合并程序集是否会更改内部关键字的范围? 我相当确定它不会起作用(或至少会起作用),因为任何引用最终程序集的人都将无法访问内部类。 这可能是一个没有现实价值的假想问题,但我还是很好奇。 编辑:我的意思是使用ILMerge,而不是将源代码组合到单个可构建程序集中。     

解决方法

是的,一旦程序集合并,它们就可以访问彼此的内部类。一些混淆器专门利用此功能在程序集之间进行公共调用,使之成为内部调用,然后对其进行混淆处理,使其更加安全。参考:SmartAssembly 附带说明一下,使用ILMerge,可以使用/ internalize命令行开关,它将使程序集中的所有公共类(而不是主程序集)成为内部组件,这从最终用户的视线中删除了公共接口,但程序集仍然起作用一般。     ,假设您不是以完全信任运行的,那么任何与内部类型合并到最终程序集中的类型现在都可以访问内部类型的公共成员。 因此,给定程序集A:
public class MyClassA { ... }
和组装B:
internal class MyClassB { ... }
MyClassA可能无权反映MyClassB的公共成员。如果它们合并到同一程序集中,则MyClassA可能会获得这样的许可。     ,有关更多信息的另一个可能的资源是Microsoft Research的ILMerge页面,在该页面上,它们提供了ILMerge的替代方法。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...